{
    "id": "f2b62dec2c0d8560303f22503f4c08c4",
    "_format": "hh-sol-build-info-1",
    "solcVersion": "0.8.9",
    "solcLongVersion": "0.8.9+commit.e5eed63a",
    "input": {
        "language": "Solidity",
        "sources": {
            "contracts/common/implementation/AncillaryData.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Library for encoding and decoding ancillary data for DVM price requests.\n * @notice  We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via\n * web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value\n * dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity\n * smart contracts. More details on UMA's ancillary data guidelines below:\n * https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit\n */\nlibrary AncillaryData {\n    // This converts the bottom half of a bytes32 input to hex in a highly gas-optimized way.\n    // Source: the brilliant implementation at https://gitter.im/ethereum/solidity?at=5840d23416207f7b0ed08c9b.\n    function toUtf8Bytes32Bottom(bytes32 bytesIn) private pure returns (bytes32) {\n        unchecked {\n            uint256 x = uint256(bytesIn);\n\n            // Nibble interleave\n            x = x & 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff;\n            x = (x | (x * 2**64)) & 0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff;\n            x = (x | (x * 2**32)) & 0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff;\n            x = (x | (x * 2**16)) & 0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff;\n            x = (x | (x * 2**8)) & 0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff;\n            x = (x | (x * 2**4)) & 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f;\n\n            // Hex encode\n            uint256 h = (x & 0x0808080808080808080808080808080808080808080808080808080808080808) / 8;\n            uint256 i = (x & 0x0404040404040404040404040404040404040404040404040404040404040404) / 4;\n            uint256 j = (x & 0x0202020202020202020202020202020202020202020202020202020202020202) / 2;\n            x = x + (h & (i | j)) * 0x27 + 0x3030303030303030303030303030303030303030303030303030303030303030;\n\n            // Return the result.\n            return bytes32(x);\n        }\n    }\n\n    /**\n     * @notice Returns utf8-encoded bytes32 string that can be read via web3.utils.hexToUtf8.\n     * @dev Will return bytes32 in all lower case hex characters and without the leading 0x.\n     * This has minor changes from the toUtf8BytesAddress to control for the size of the input.\n     * @param bytesIn bytes32 to encode.\n     * @return utf8 encoded bytes32.\n     */\n    function toUtf8Bytes(bytes32 bytesIn) internal pure returns (bytes memory) {\n        return abi.encodePacked(toUtf8Bytes32Bottom(bytesIn >> 128), toUtf8Bytes32Bottom(bytesIn));\n    }\n\n    /**\n     * @notice Returns utf8-encoded address that can be read via web3.utils.hexToUtf8.\n     * Source: https://ethereum.stackexchange.com/questions/8346/convert-address-to-string/8447#8447\n     * @dev Will return address in all lower case characters and without the leading 0x.\n     * @param x address to encode.\n     * @return utf8 encoded address bytes.\n     */\n    function toUtf8BytesAddress(address x) internal pure returns (bytes memory) {\n        return\n            abi.encodePacked(toUtf8Bytes32Bottom(bytes32(bytes20(x)) >> 128), bytes8(toUtf8Bytes32Bottom(bytes20(x))));\n    }\n\n    /**\n     * @notice Converts a uint into a base-10, UTF-8 representation stored in a `string` type.\n     * @dev This method is based off of this code: https://stackoverflow.com/a/65707309.\n     */\n    function toUtf8BytesUint(uint256 x) internal pure returns (bytes memory) {\n        if (x == 0) {\n            return \"0\";\n        }\n        uint256 j = x;\n        uint256 len;\n        while (j != 0) {\n            len++;\n            j /= 10;\n        }\n        bytes memory bstr = new bytes(len);\n        uint256 k = len;\n        while (x != 0) {\n            k = k - 1;\n            uint8 temp = (48 + uint8(x - (x / 10) * 10));\n            bytes1 b1 = bytes1(temp);\n            bstr[k] = b1;\n            x /= 10;\n        }\n        return bstr;\n    }\n\n    function appendKeyValueBytes32(\n        bytes memory currentAncillaryData,\n        bytes memory key,\n        bytes32 value\n    ) internal pure returns (bytes memory) {\n        bytes memory prefix = constructPrefix(currentAncillaryData, key);\n        return abi.encodePacked(currentAncillaryData, prefix, toUtf8Bytes(value));\n    }\n\n    /**\n     * @notice Adds \"key:value\" to `currentAncillaryData` where `value` is an address that first needs to be converted\n     * to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n     * `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n     * @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n     * @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n     * @param value An address to set as the value in the key:value pair to append to `currentAncillaryData`.\n     * @return Newly appended ancillary data.\n     */\n    function appendKeyValueAddress(\n        bytes memory currentAncillaryData,\n        bytes memory key,\n        address value\n    ) internal pure returns (bytes memory) {\n        bytes memory prefix = constructPrefix(currentAncillaryData, key);\n        return abi.encodePacked(currentAncillaryData, prefix, toUtf8BytesAddress(value));\n    }\n\n    /**\n     * @notice Adds \"key:value\" to `currentAncillaryData` where `value` is a uint that first needs to be converted\n     * to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n     * `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n     * @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n     * @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n     * @param value A uint to set as the value in the key:value pair to append to `currentAncillaryData`.\n     * @return Newly appended ancillary data.\n     */\n    function appendKeyValueUint(\n        bytes memory currentAncillaryData,\n        bytes memory key,\n        uint256 value\n    ) internal pure returns (bytes memory) {\n        bytes memory prefix = constructPrefix(currentAncillaryData, key);\n        return abi.encodePacked(currentAncillaryData, prefix, toUtf8BytesUint(value));\n    }\n\n    /**\n     * @notice Helper method that returns the left hand side of a \"key:value\" pair plus the colon \":\" and a leading\n     * comma \",\" if the `currentAncillaryData` is not empty. The return value is intended to be prepended as a prefix to\n     * some utf8 value that is ultimately added to a comma-delimited, key-value dictionary.\n     */\n    function constructPrefix(bytes memory currentAncillaryData, bytes memory key) internal pure returns (bytes memory) {\n        if (currentAncillaryData.length > 0) {\n            return abi.encodePacked(\",\", key, \":\");\n        } else {\n            return abi.encodePacked(key, \":\");\n        }\n    }\n}\n"
            },
            "@openzeppelin/contracts/utils/Address.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize, which returns 0 for contracts in\n        // construction, since the code is only stored at the end of the\n        // constructor execution.\n\n        uint256 size;\n        // solhint-disable-next-line no-inline-assembly\n        assembly { size := extcodesize(account) }\n        return size > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n        (bool success, ) = recipient.call{ value: amount }(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain`call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n      return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n\n                // solhint-disable-next-line no-inline-assembly\n                assembly {\n                    let returndata_size := mload(returndata)\n                    revert(add(32, returndata), returndata_size)\n                }\n            } else {\n                revert(errorMessage);\n            }\n        }\n    }\n}\n"
            },
            "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\nimport \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n    using Address for address;\n\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    /**\n     * @dev Deprecated. This function has issues similar to the ones found in\n     * {IERC20-approve}, and its usage is discouraged.\n     *\n     * Whenever possible, use {safeIncreaseAllowance} and\n     * {safeDecreaseAllowance} instead.\n     */\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\n        // safeApprove should only be called when setting an initial allowance,\n        // or when resetting it to zero. To increase and decrease it, use\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n        // solhint-disable-next-line max-line-length\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\n            \"SafeERC20: approve from non-zero to non-zero allowance\"\n        );\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n    }\n\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        unchecked {\n            uint256 oldAllowance = token.allowance(address(this), spender);\n            require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n            uint256 newAllowance = oldAllowance - value;\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     */\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n        // the target address contains contract code and also asserts for success in the low-level call.\n\n        bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n        if (returndata.length > 0) { // Return data is optional\n            // solhint-disable-next-line max-line-length\n            require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n        }\n    }\n}\n"
            },
            "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\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"
            },
            "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\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/ERC20.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.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 * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n    mapping (address => uint256) private _balances;\n\n    mapping (address => mapping (address => 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     * The defaut value of {decimals} is 18. To select a different value for\n     * {decimals} you should overload it.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * 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 override 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 override 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 value {ERC20} uses, unless this function is\n     * 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 override returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual override returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `recipient` cannot be the zero address.\n     * - the caller must have a balance of at least `amount`.\n     */\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n        _transfer(_msgSender(), recipient, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\n        _approve(_msgSender(), spender, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * Requirements:\n     *\n     * - `sender` and `recipient` cannot be the zero address.\n     * - `sender` must have a balance of at least `amount`.\n     * - the caller must have allowance for ``sender``'s tokens of at least\n     * `amount`.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\n        _transfer(sender, recipient, amount);\n\n        uint256 currentAllowance = _allowances[sender][_msgSender()];\n        require(currentAllowance >= amount, \"ERC20: transfer amount exceeds allowance\");\n        _approve(sender, _msgSender(), currentAllowance - amount);\n\n        return true;\n    }\n\n    /**\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);\n        return true;\n    }\n\n    /**\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `spender` must have allowance for the caller of at least\n     * `subtractedValue`.\n     */\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n        uint256 currentAllowance = _allowances[_msgSender()][spender];\n        require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n        _approve(_msgSender(), spender, currentAllowance - subtractedValue);\n\n        return true;\n    }\n\n    /**\n     * @dev Moves tokens `amount` from `sender` to `recipient`.\n     *\n     * This is 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     * Requirements:\n     *\n     * - `sender` cannot be the zero address.\n     * - `recipient` cannot be the zero address.\n     * - `sender` must have a balance of at least `amount`.\n     */\n    function _transfer(address sender, address recipient, uint256 amount) internal virtual {\n        require(sender != address(0), \"ERC20: transfer from the zero address\");\n        require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n        _beforeTokenTransfer(sender, recipient, amount);\n\n        uint256 senderBalance = _balances[sender];\n        require(senderBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n        _balances[sender] = senderBalance - amount;\n        _balances[recipient] += amount;\n\n        emit Transfer(sender, recipient, amount);\n    }\n\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     */\n    function _mint(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: mint to the zero address\");\n\n        _beforeTokenTransfer(address(0), account, amount);\n\n        _totalSupply += amount;\n        _balances[account] += amount;\n        emit Transfer(address(0), account, amount);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the\n     * total supply.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     */\n    function _burn(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: burn from the zero address\");\n\n        _beforeTokenTransfer(account, address(0), amount);\n\n        uint256 accountBalance = _balances[account];\n        require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n        _balances[account] = accountBalance - amount;\n        _totalSupply -= amount;\n\n        emit Transfer(account, address(0), amount);\n    }\n\n    /**\n     * @dev Sets `amount` 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    function _approve(address owner, address spender, uint256 amount) internal virtual {\n        require(owner != address(0), \"ERC20: approve from the zero address\");\n        require(spender != address(0), \"ERC20: approve to the zero address\");\n\n        _allowances[owner][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    /**\n     * @dev Hook that is called before any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * will be to transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\n}\n"
            },
            "@openzeppelin/contracts/utils/Context.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n        return msg.data;\n    }\n}\n"
            },
            "@openzeppelin/contracts/access/Ownable.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n    address private _owner;\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the deployer as the initial owner.\n     */\n    constructor () {\n        address msgSender = _msgSender();\n        _owner = msgSender;\n        emit OwnershipTransferred(address(0), msgSender);\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 called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n        _;\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby removing any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        emit OwnershipTransferred(_owner, address(0));\n        _owner = address(0);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n        emit OwnershipTransferred(_owner, newOwner);\n        _owner = newOwner;\n    }\n}\n"
            },
            "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"../interfaces/ParentMessengerInterface.sol\";\n\nabstract contract ParentMessengerBase is Ownable, ParentMessengerInterface {\n    uint256 public childChainId;\n\n    address public childMessenger;\n\n    address public oracleHub;\n    address public governorHub;\n\n    address public oracleSpoke;\n    address public governorSpoke;\n\n    event SetChildMessenger(address indexed childMessenger);\n    event SetOracleHub(address indexed oracleHub);\n    event SetGovernorHub(address indexed governorHub);\n    event SetOracleSpoke(address indexed oracleSpoke);\n    event SetGovernorSpoke(address indexed governorSpoke);\n\n    modifier onlyHubContract() {\n        require(msg.sender == oracleHub || msg.sender == governorHub, \"Only privileged caller\");\n        _;\n    }\n\n    /**\n     * @notice Construct the ParentMessengerBase contract.\n     * @param _childChainId The chain id of the L2 network this messenger should connect to.\n     **/\n    constructor(uint256 _childChainId) {\n        childChainId = _childChainId;\n    }\n\n    /*******************\n     *  OWNER METHODS  *\n     *******************/\n\n    /**\n     * @notice Changes the stored address of the child messenger, deployed on L2.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @param newChildMessenger address of the new child messenger, deployed on L2.\n     */\n    function setChildMessenger(address newChildMessenger) public onlyOwner {\n        childMessenger = newChildMessenger;\n        emit SetChildMessenger(childMessenger);\n    }\n\n    /**\n     * @notice Changes the stored address of the Oracle hub, deployed on L1.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @param newOracleHub address of the new oracle hub, deployed on L1 Ethereum.\n     */\n    function setOracleHub(address newOracleHub) public onlyOwner {\n        oracleHub = newOracleHub;\n        emit SetOracleHub(oracleHub);\n    }\n\n    /**\n     * @notice Changes the stored address of the Governor hub, deployed on L1.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @param newGovernorHub address of the new governor hub, deployed on L1 Ethereum.\n     */\n    function setGovernorHub(address newGovernorHub) public onlyOwner {\n        governorHub = newGovernorHub;\n        emit SetGovernorHub(governorHub);\n    }\n\n    /**\n     * @notice Changes the stored address of the oracle spoke, deployed on L2.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @param newOracleSpoke address of the new oracle spoke, deployed on L2.\n     */\n    function setOracleSpoke(address newOracleSpoke) public onlyOwner {\n        oracleSpoke = newOracleSpoke;\n        emit SetOracleSpoke(oracleSpoke);\n    }\n\n    /**\n     * @notice Changes the stored address of the governor spoke, deployed on L2.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @param newGovernorSpoke address of the new governor spoke, deployed on L2.\n     */\n    function setGovernorSpoke(address newGovernorSpoke) public onlyOwner {\n        governorSpoke = newGovernorSpoke;\n        emit SetGovernorSpoke(governorSpoke);\n    }\n\n    /**\n     * @notice Returns the amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\n     * @return The amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\n     */\n    function getL1CallValue() external view virtual override returns (uint256) {\n        return 0;\n    }\n}\n"
            },
            "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\ninterface ParentMessengerInterface {\n    // Should send cross-chain message to Child messenger contract or revert.\n    function sendMessageToChild(bytes memory data) external;\n\n    // Informs Hub how much msg.value they need to include to call `sendMessageToChild`.\n    function getL1CallValue() external view returns (uint256);\n}\n"
            },
            "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../../insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\";\nimport \"../interfaces/ParentMessengerInterface.sol\";\nimport \"../interfaces/ParentMessengerConsumerInterface.sol\";\nimport \"./ParentMessengerBase.sol\";\nimport \"../../common/implementation/Lockable.sol\";\n\n/**\n * @notice Sends cross chain messages from Ethereum L1 to Arbitrum L2 network.\n * @dev This contract is ownable and should be owned by the DVM governor.\n */\ncontract Arbitrum_ParentMessenger is\n    Arbitrum_CrossDomainEnabled,\n    ParentMessengerInterface,\n    ParentMessengerBase,\n    Lockable\n{\n    event SetDefaultGasLimit(uint32 newDefaultGasLimit);\n    event SetDefaultMaxSubmissionCost(uint256 newMaxSubmissionCost);\n    event SetDefaultGasPrice(uint256 newDefaultGasPrice);\n    event SetRefundL2Address(address newRefundL2Address);\n    event MessageSentToChild(\n        bytes data,\n        address indexed targetSpoke,\n        uint256 l1CallValue,\n        uint32 gasLimit,\n        uint256 gasPrice,\n        uint256 maxSubmissionCost,\n        address refundL2Address,\n        address indexed childMessenger,\n        uint256 sequenceNumber\n    );\n    event MessageReceivedFromChild(bytes data, address indexed childMessenger, address indexed targetHub);\n\n    // TODO: Can these default values be determined dynamically via L1 Arbitrum system contracts?\n\n    // Gas limit for immediate L2 execution attempt (can be estimated via NodeInterface.estimateRetryableTicket).\n    // NodeInterface precompile interface exists at L2 address 0x00000000000000000000000000000000000000C8\n    uint32 public defaultGasLimit = 5_000_000;\n\n    // Amount of ETH allocated to pay for the base submission fee. The base submission fee is a parameter unique to\n    // retryable transactions; the user is charged the base submission fee to cover the storage costs of keeping their\n    // ticket’s calldata in the retry buffer. (current base submission fee is queryable via\n    // ArbRetryableTx.getSubmissionPrice). ArbRetryableTicket precompile interface exists at L2 address\n    // 0x000000000000000000000000000000000000006E.\n    uint256 public defaultMaxSubmissionCost = 0.1e18;\n\n    // L2 Gas price bid for immediate L2 execution attempt (queryable via standard eth*gasPrice RPC)\n    uint256 public defaultGasPrice = 10e9; // 10 gWei\n\n    // This address on L2 receives extra ETH that is left over after relaying a message via the inbox.\n    address public refundL2Address;\n\n    /**\n     * @notice Construct the Optimism_ParentMessenger contract.\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\n     * @param _childChainId The chain id of the Optimism L2 network this messenger should connect to.\n     **/\n    constructor(address _inbox, uint256 _childChainId)\n        Arbitrum_CrossDomainEnabled(_inbox)\n        ParentMessengerBase(_childChainId)\n    {\n        refundL2Address = owner();\n    }\n\n    /**\n     * @notice Changes the refund address on L2 that receives excess gas or the full msg.value if the retryable\n     * ticket reverts.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @param newRefundl2Address the new refund address to set.\n     */\n    function setRefundL2Address(address newRefundl2Address) public onlyOwner nonReentrant() {\n        refundL2Address = newRefundl2Address;\n        emit SetRefundL2Address(refundL2Address);\n    }\n\n    /**\n     * @notice Changes the default gas limit that is sent along with transactions to Arbitrum.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @param newDefaultGasLimit the new L2 gas limit to be set.\n     */\n    function setDefaultGasLimit(uint32 newDefaultGasLimit) public onlyOwner nonReentrant() {\n        defaultGasLimit = newDefaultGasLimit;\n        emit SetDefaultGasLimit(newDefaultGasLimit);\n    }\n\n    /**\n     * @notice Changes the default gas price that is sent along with transactions to Arbitrum.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @param newDefaultGasPrice the new L2 gas price to be set.\n     */\n    function setDefaultGasPrice(uint256 newDefaultGasPrice) public onlyOwner nonReentrant() {\n        defaultGasPrice = newDefaultGasPrice;\n        emit SetDefaultGasPrice(newDefaultGasPrice);\n    }\n\n    /**\n     * @notice Changes the default max submission cost that is sent along with transactions to Arbitrum.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @param newDefaultMaxSubmissionCost the new L2 max submission cost to be set.\n     */\n    function setDefaultMaxSubmissionCost(uint256 newDefaultMaxSubmissionCost) public onlyOwner nonReentrant() {\n        defaultMaxSubmissionCost = newDefaultMaxSubmissionCost;\n        emit SetDefaultMaxSubmissionCost(newDefaultMaxSubmissionCost);\n    }\n\n    /**\n     * @notice Changes the address of the oracle spoke on L2 via the child messenger.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\n     * @param newOracleSpoke the new oracle spoke address set on L2.\n     */\n    function setChildOracleSpoke(address newOracleSpoke) public onlyOwner {\n        bytes memory dataSentToChild = abi.encodeWithSignature(\"setOracleSpoke(address)\", newOracleSpoke);\n        _sendMessageToChild(dataSentToChild, childMessenger);\n    }\n\n    /**\n     * @notice Changes the address of the parent messenger on L2 via the child messenger.\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\n     * @param newParentMessenger the new parent messenger contract to be set on L2.\n     */\n    function setChildParentMessenger(address newParentMessenger) public onlyOwner {\n        bytes memory dataSentToChild = abi.encodeWithSignature(\"setParentMessenger(address)\", newParentMessenger);\n        _sendMessageToChild(dataSentToChild, childMessenger);\n    }\n\n    /**\n     * @notice Sends a message to the child messenger via the canonical message bridge.\n     * @dev The caller must be the either the OracleHub or the GovernorHub. This is to send either a\n     * price or initiate a governance action to the OracleSpoke or GovernorSpoke on the child network.\n     * @dev The recipient of this message is the child messenger. The messenger must implement processMessageFromParent\n     * which then forwards the data to the target either the OracleSpoke or the governorSpoke depending on the caller.\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\n     * @param data data message sent to the child messenger. Should be an encoded function call or packed data.\n     */\n    function sendMessageToChild(bytes memory data) external override onlyHubContract() nonReentrant() {\n        address target = msg.sender == oracleHub ? oracleSpoke : governorSpoke;\n        bytes memory dataSentToChild =\n            abi.encodeWithSignature(\"processMessageFromCrossChainParent(bytes,address)\", data, target);\n        _sendMessageToChild(dataSentToChild, target);\n    }\n\n    /**\n     * @notice Process a received message from the child messenger via the canonical message bridge.\n     * @dev The caller must be the the child messenger, sent over the canonical message bridge.\n     * @dev Note that only the OracleHub can receive messages from the child messenger. Therefore we can always forward\n     * these messages to this contract. The OracleHub must implement processMessageFromChild to handle this message.\n     * @param data data message sent from the child messenger. Should be an encoded function call or packed data.\n     */\n    function processMessageFromCrossChainChild(bytes memory data)\n        public\n        onlyFromCrossDomainAccount(childMessenger)\n        nonReentrant()\n    {\n        ParentMessengerConsumerInterface(oracleHub).processMessageFromChild(childChainId, data);\n        emit MessageReceivedFromChild(data, childMessenger, oracleHub);\n    }\n\n    /**\n     * @notice This function is expected to be queried by Hub contracts that need to determine how much ETH\n     * to include in msg.value when calling `sendMessageToChild`.\n     * @return Amount of msg.value to include to send cross-chain message.\n     */\n    function getL1CallValue()\n        public\n        view\n        override(ParentMessengerBase, ParentMessengerInterface)\n        nonReentrantView()\n        returns (uint256)\n    {\n        return _getL1CallValue();\n    }\n\n    // We need to allow this contract to receive ETH, so that it can include some msg.value amount on external calls\n    // to the `sendMessageToChild` function. We shouldn't expect the owner of this contract to send\n    // ETH because the owner is intended to be a contract (e.g. the Governor) and we don't want to change the\n    // Governor interface.\n    fallback() external payable {}\n\n    // Used to determine how much ETH to include in msg.value when calling admin functions like\n    // `setChildParentMessenger` and sending messages across the bridge.\n    function _getL1CallValue() internal view returns (uint256) {\n        // This could overflow if these values are set too high, but since they are configurable by trusted owner\n        // we won't catch this case.\n        return defaultMaxSubmissionCost + defaultGasPrice * defaultGasLimit;\n    }\n\n    // This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\n    function _sendMessageToChild(bytes memory data, address target) internal {\n        uint256 requiredL1CallValue = _getL1CallValue();\n        require(address(this).balance >= requiredL1CallValue, \"Insufficient ETH balance\");\n\n        uint256 seqNumber =\n            sendTxToL2NoAliassing(\n                childMessenger,\n                refundL2Address,\n                requiredL1CallValue,\n                defaultMaxSubmissionCost,\n                defaultGasLimit,\n                defaultGasPrice,\n                data\n            );\n        emit MessageSentToChild(\n            data,\n            target,\n            requiredL1CallValue,\n            defaultGasLimit,\n            defaultGasPrice,\n            defaultMaxSubmissionCost,\n            refundL2Address,\n            childMessenger,\n            seqNumber\n        );\n    }\n}\n"
            },
            "@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol": {
                "content": "// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol\n// with a change to the solidity version.\npragma solidity ^0.8.0;\n\nimport \"../../external/avm/interfaces/iArbitrum_Inbox.sol\";\nimport \"../../external/avm/interfaces/iArbitrum_Outbox.sol\";\n\nabstract contract Arbitrum_CrossDomainEnabled {\n    iArbitrum_Inbox public immutable inbox;\n\n    /**\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\n     */\n    constructor(address _inbox) {\n        inbox = iArbitrum_Inbox(_inbox);\n    }\n\n    // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\n    // This function will not apply aliassing to the `user` address on L2.\n    // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the\n    // inbox.\n    function sendTxToL2NoAliassing(\n        address target, // Address where transaction will initiate on L2.\n        address user, // Address where excess gas is credited on L2.\n        uint256 l1CallValue, // msg.value deposited to `user` on L2.\n        uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this\n        // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should\n        // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`.\n        uint256 maxGas, // Gas limit for immediate L2 execution attempt.\n        uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt.\n        bytes memory data // ABI encoded data to send to target.\n    ) internal returns (uint256) {\n        // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external\n        // - address destAddr: destination L2 contract address\n        // - uint256 l2CallValue: call value for retryable L2 message\n        // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee\n        // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2\n        // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled\n        // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution\n        // - uint256 gasPriceBid: price bid for L2 execution\n        // - bytes data: ABI encoded data of L2 message\n        uint256 seqNum =\n            inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }(\n                target,\n                0, // we always assume that l2CallValue = 0\n                maxSubmissionCost,\n                user,\n                user,\n                maxGas,\n                gasPriceBid,\n                data\n            );\n        return seqNum;\n    }\n\n    // Copied mostly from: https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol#L31\n    modifier onlyFromCrossDomainAccount(address l2Counterpart) {\n        // a message coming from the counterpart gateway was executed by the bridge\n        IBridge bridge = IBridge(inbox.bridge());\n        require(msg.sender == address(bridge), \"NOT_FROM_BRIDGE\");\n\n        // and the outbox reports that the L2 address of the sender is the counterpart gateway\n        address l2ToL1Sender = iArbitrum_Outbox(bridge.activeOutbox()).l2ToL1Sender();\n        require(l2ToL1Sender == l2Counterpart, \"ONLY_COUNTERPART_GATEWAY\");\n        _;\n    }\n}\n"
            },
            "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\ninterface ParentMessengerConsumerInterface {\n    // Function called on Oracle hub to pass in data send from L2, with chain ID.\n    function processMessageFromChild(uint256 chainId, bytes memory data) external;\n}\n"
            },
            "@uma/core/contracts/common/implementation/Lockable.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\n */\ncontract Lockable {\n    bool private _notEntered;\n\n    constructor() {\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\n        // refund coming into effect.\n        _notEntered = true;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n     * function that does the actual state modification.\n     */\n    modifier nonReentrant() {\n        _preEntranceCheck();\n        _preEntranceSet();\n        _;\n        _postEntranceReset();\n    }\n\n    /**\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\n     */\n    modifier nonReentrantView() {\n        _preEntranceCheck();\n        _;\n    }\n\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\n    // then call `_postEntranceReset()`.\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\n    function _preEntranceCheck() internal view {\n        // On the first call to nonReentrant, _notEntered will be true\n        require(_notEntered, \"ReentrancyGuard: reentrant call\");\n    }\n\n    function _preEntranceSet() internal {\n        // Any calls to nonReentrant after this point will fail\n        _notEntered = false;\n    }\n\n    function _postEntranceReset() internal {\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        _notEntered = true;\n    }\n}\n"
            },
            "@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol": {
                "content": "// SPDX-License-Identifier: Apache-2.0\n\npragma solidity ^0.8.0;\n\ninterface IBridge {\n    function activeOutbox() external view returns (address);\n}\n\ninterface iArbitrum_Inbox {\n    // Retryable tickets are the Arbitrum protocol’s canonical method for passing generalized messages from Ethereum to\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\n    // where any user can re-execute for some fixed period (roughly one week).\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\n    function createRetryableTicketNoRefundAliasRewrite(\n        address destAddr,\n        uint256 l2CallValue,\n        uint256 maxSubmissionCost,\n        address excessFeeRefundAddress,\n        address callValueRefundAddress,\n        uint256 maxGas,\n        uint256 gasPriceBid,\n        bytes calldata data\n    ) external payable returns (uint256);\n\n    function bridge() external view returns (address);\n}\n"
            },
            "@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol": {
                "content": "// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\n// with changes only to the solidity version.\n\n// SPDX-License-Identifier: Apache-2.0\n\n/*\n * Copyright 2021, Offchain Labs, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *    http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npragma solidity ^0.8.0;\n\ninterface iArbitrum_Outbox {\n    function l2ToL1Sender() external view returns (address);\n}\n"
            },
            "contracts/insured-bridge/test/Arbitrum_InboxMock.sol": {
                "content": "pragma solidity ^0.8.0;\nimport \"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\";\nimport \"@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol\";\n\ncontract Arbitrum_OutboxMock {\n    function l2ToL1Sender() external view returns (address) {\n        // Function not called in tests, only smocked.\n        return address(this);\n    }\n}\n\ncontract Arbitrum_BridgeMock {\n    address public outbox;\n\n    function setOutbox(address _outbox) external {\n        outbox = _outbox;\n    }\n\n    function activeOutbox() external view returns (address) {\n        return outbox;\n    }\n\n    // This function can be called by an EOA to send a call to the parent messenger, which is important in tests\n    // because `processMessageFromCrossChainChild` can only be called by the Bridge contract.\n    function processMessageFromCrossChainChild(address payable messengerToCall, bytes memory data) external {\n        Arbitrum_ParentMessenger(messengerToCall).processMessageFromCrossChainChild(data);\n    }\n}\n\ncontract Arbitrum_InboxMock is iArbitrum_Inbox {\n    // We leave these unused function parameters named because this contract is used with smockit and makes testing\n    // this function's call inputs easier.\n    function createRetryableTicketNoRefundAliasRewrite(\n        address destAddr,\n        uint256 l2CallValue,\n        uint256 maxSubmissionCost,\n        address excessFeeRefundAddress,\n        address callValueRefundAddress,\n        uint256 maxGas,\n        uint256 gasPriceBid,\n        bytes calldata data\n    ) external payable override returns (uint256) {\n        return 0;\n    }\n\n    function bridge() external view returns (address) {\n        // Function not called in tests, only smocked.\n        return address(this);\n    }\n}\n"
            },
            "contracts/insured-bridge/RateModelStore.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"../common/implementation/MultiCaller.sol\";\n\n/**\n * @title Maps rate model objects to L1 token.\n * @dev This contract is designed to be queried by off-chain relayers that need to compute realized LP fee %'s before\n * submitting relay transactions to a BridgePool contract. Therefore, this contract does not perform any validation on\n * the shape of the rate model, which is stored as a string to enable arbitrary data encoding via a stringified JSON\n * object. This leaves this contract unopionated on the parameters within the rate model, enabling governance to adjust\n * the structure in the future.\n */\ncontract RateModelStore is Ownable, MultiCaller {\n    mapping(address => string) public l1TokenRateModels;\n\n    event UpdatedRateModel(address indexed l1Token, string rateModel);\n\n    /**\n     * @notice Updates rate model string for L1 token.\n     * @param l1Token the l1 token rate model to update.\n     * @param rateModel the updated rate model.\n     */\n    function updateRateModel(address l1Token, string memory rateModel) external onlyOwner {\n        l1TokenRateModels[l1Token] = rateModel;\n        emit UpdatedRateModel(l1Token, rateModel);\n    }\n}\n"
            },
            "contracts/common/implementation/MultiCaller.sol": {
                "content": "// This contract is taken from Uniswaps's multi call implementation (https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol)\n// and was modified to be solidity 0.8 compatible. Additionally, the method was restricted to only work with msg.value\n// set to 0 to avoid any nasty attack vectors on function calls that use value sent with deposits.\npragma solidity ^0.8.0;\n\n/// @title MultiCaller\n/// @notice Enables calling multiple methods in a single call to the contract\ncontract MultiCaller {\n    function multicall(bytes[] calldata data) external payable returns (bytes[] memory results) {\n        require(msg.value == 0, \"Only multicall with 0 value\");\n        results = new bytes[](data.length);\n        for (uint256 i = 0; i < data.length; i++) {\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\n\n            if (!success) {\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\n                if (result.length < 68) revert();\n                assembly {\n                    result := add(result, 0x04)\n                }\n                revert(abi.decode(result, (string)));\n            }\n\n            results[i] = result;\n        }\n    }\n}\n"
            },
            "contracts/insured-bridge/ovm/Optimism_Wrapper.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/**\n * @title Optimism Eth Wrapper\n * @dev Any ETH sent to this contract is wrapped into WETH and sent to the set bridge pool. This enables ETH to be sent\n * over the canonical Optimism bridge, which does not support WETH bridging.\n */\ninterface WETH9Like {\n    function deposit() external payable;\n\n    function transfer(address guy, uint256 wad) external;\n\n    function balanceOf(address guy) external view returns (uint256);\n}\n\ncontract Optimism_Wrapper is Ownable {\n    WETH9Like public weth;\n    address public bridgePool;\n\n    event ChangedBridgePool(address indexed bridgePool);\n\n    /**\n     * @notice Construct Optimism Wrapper contract.\n     * @param _weth l1WethContract address. Normally deployed at 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.\n     * @param _bridgePool address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract.\n     */\n    constructor(WETH9Like _weth, address _bridgePool) {\n        weth = _weth;\n        bridgePool = _bridgePool;\n        emit ChangedBridgePool(bridgePool);\n    }\n\n    /**\n     * @notice Called by owner of the wrapper to change the destination of the wrapped ETH (bridgePool).\n     * @param newBridgePool address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract.\n     */\n    function changeBridgePool(address newBridgePool) public onlyOwner {\n        bridgePool = newBridgePool;\n        emit ChangedBridgePool(bridgePool);\n    }\n\n    /**\n     * @notice Publicly callable function that takes all ETH in this contract, wraps it to WETH and sends it to the\n     * bridge pool contract. Function is called by fallback functions to automatically wrap ETH to WETH and send at the\n     * conclusion of a canonical ETH bridging action.\n     */\n    function wrapAndTransfer() public payable {\n        weth.deposit{ value: address(this).balance }();\n        weth.transfer(bridgePool, weth.balanceOf(address(this)));\n    }\n\n    // Fallback function enable this contract to receive funds when they are unwrapped from the weth contract.\n    fallback() external payable {\n        wrapAndTransfer();\n    }\n}\n"
            },
            "contracts/insured-bridge/ovm/Optimism_Messenger.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\";\nimport \"../interfaces/MessengerInterface.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/**\n * @notice Sends cross chain messages Optimism L2 network.\n * @dev This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the\n * BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.\n */\ncontract Optimism_Messenger is Ownable, CrossDomainEnabled, MessengerInterface {\n    constructor(address _crossDomainMessenger) CrossDomainEnabled(_crossDomainMessenger) {}\n\n    /**\n     * @notice Sends a message to an account on L2.\n     * @param target The intended recipient on L2.\n     * @param gasLimit The gasLimit for the receipt of the message on L2.\n     * @param message The data to send to the target (usually calldata to a function with\n     *  `onlyFromCrossDomainAccount()`)\n     */\n    function relayMessage(\n        address target,\n        address,\n        uint256,\n        uint256 gasLimit,\n        uint256,\n        uint256,\n        bytes memory message\n    ) external payable override onlyOwner {\n        sendCrossDomainMessage(target, uint32(gasLimit), message);\n    }\n}\n"
            },
            "@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol": {
                "content": "// SPDX-License-Identifier: MIT\npragma solidity >0.5.0 <0.9.0;\n\n/* Interface Imports */\nimport { ICrossDomainMessenger } from \"./ICrossDomainMessenger.sol\";\n\n/**\n * @title CrossDomainEnabled\n * @dev Helper contract for contracts performing cross-domain communications\n *\n * Compiler used: defined by inheriting contract\n */\ncontract CrossDomainEnabled {\n    /*************\n     * Variables *\n     *************/\n\n    // Messenger contract used to send and recieve messages from the other domain.\n    address public messenger;\n\n    /***************\n     * Constructor *\n     ***************/\n\n    /**\n     * @param _messenger Address of the CrossDomainMessenger on the current layer.\n     */\n    constructor(address _messenger) {\n        messenger = _messenger;\n    }\n\n    /**********************\n     * Function Modifiers *\n     **********************/\n\n    /**\n     * Enforces that the modified function is only callable by a specific cross-domain account.\n     * @param _sourceDomainAccount The only account on the originating domain which is\n     *  authenticated to call this function.\n     */\n    modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {\n        require(\n            msg.sender == address(getCrossDomainMessenger()),\n            \"OVM_XCHAIN: messenger contract unauthenticated\"\n        );\n\n        require(\n            getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,\n            \"OVM_XCHAIN: wrong sender of cross-domain message\"\n        );\n\n        _;\n    }\n\n    /**********************\n     * Internal Functions *\n     **********************/\n\n    /**\n     * Gets the messenger, usually from storage. This function is exposed in case a child contract\n     * needs to override.\n     * @return The address of the cross-domain messenger contract which should be used.\n     */\n    function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) {\n        return ICrossDomainMessenger(messenger);\n    }\n\n    /**q\n     * Sends a message to an account on another domain\n     * @param _crossDomainTarget The intended recipient on the destination domain\n     * @param _message The data to send to the target (usually calldata to a function with\n     *  `onlyFromCrossDomainAccount()`)\n     * @param _gasLimit The gasLimit for the receipt of the message on the target domain.\n     */\n    function sendCrossDomainMessage(\n        address _crossDomainTarget,\n        uint32 _gasLimit,\n        bytes memory _message\n    ) internal {\n        getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);\n    }\n}\n"
            },
            "contracts/insured-bridge/interfaces/MessengerInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @notice Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will\n * differ for each L2.\n */\ninterface MessengerInterface {\n    function relayMessage(\n        address target,\n        address userToRefund,\n        uint256 l1CallValue,\n        uint256 gasLimit,\n        uint256 gasPrice,\n        uint256 maxSubmissionCost,\n        bytes memory message\n    ) external payable;\n}\n"
            },
            "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol": {
                "content": "// SPDX-License-Identifier: MIT\npragma solidity >0.5.0 <0.9.0;\n\n/**\n * @title ICrossDomainMessenger\n */\ninterface ICrossDomainMessenger {\n    /**********\n     * Events *\n     **********/\n\n    event SentMessage(\n        address indexed target,\n        address sender,\n        bytes message,\n        uint256 messageNonce,\n        uint256 gasLimit\n    );\n    event RelayedMessage(bytes32 indexed msgHash);\n    event FailedRelayedMessage(bytes32 indexed msgHash);\n\n    /*************\n     * Variables *\n     *************/\n\n    function xDomainMessageSender() external view returns (address);\n\n    /********************\n     * Public Functions *\n     ********************/\n\n    /**\n     * Sends a cross domain message to the target messenger.\n     * @param _target Target contract address.\n     * @param _message Message to send to the target.\n     * @param _gasLimit Gas limit for the provided message.\n     */\n    function sendMessage(\n        address _target,\n        bytes calldata _message,\n        uint32 _gasLimit\n    ) external;\n}\n"
            },
            "contracts/insured-bridge/test/MessengerMock.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../interfaces/MessengerInterface.sol\";\n\n/**\n * @notice Implements the `relayMessage` trivially so that we can test whether the BridgeAdmin correctly calls into this\n * contract.\n */\ncontract MessengerMock is MessengerInterface {\n    event RelayedMessage(address indexed target, uint256 gasLimit, uint256 gasPrice, bytes message);\n\n    /**\n     * @notice Sends a message to an account on L2.\n     * @param target The intended recipient on L2.\n     * @param gasLimit The gasLimit for the receipt of the message on L2.\n     * @param gasPrice Gas price bid for L2 transaction.\n     * @param message The data to send to the target (usually calldata to a function with\n     *  `onlyFromCrossDomainAccount()`)\n     */\n    function relayMessage(\n        address target,\n        address,\n        uint256,\n        uint256 gasLimit,\n        uint256 gasPrice,\n        uint256,\n        bytes memory message\n    ) external payable override {\n        emit RelayedMessage(target, gasLimit, gasPrice, message);\n    }\n}\n"
            },
            "contracts/insured-bridge/BridgeAdmin.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"./interfaces//BridgePoolInterface.sol\";\nimport \"./interfaces/BridgeAdminInterface.sol\";\nimport \"./interfaces/MessengerInterface.sol\";\nimport \"../oracle/interfaces/IdentifierWhitelistInterface.sol\";\nimport \"../oracle/interfaces/FinderInterface.sol\";\nimport \"../oracle/implementation/Constants.sol\";\nimport \"../common/interfaces/AddressWhitelistInterface.sol\";\nimport \"../common/implementation/Lockable.sol\";\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/**\n * @notice Administrative contract deployed on L1 that has implicit references to all L2 DepositBoxes.\n * @dev This contract is\n * responsible for making global variables accessible to BridgePool contracts, which house passive liquidity and\n * enable relaying of L2 deposits.\n * @dev The owner of this contract can also call permissioned functions on registered L2 DepositBoxes.\n */\ncontract BridgeAdmin is BridgeAdminInterface, Ownable, Lockable {\n    // Finder used to point to latest OptimisticOracle and other DVM contracts.\n    address public override finder;\n\n    // This contract can relay messages to any number of L2 DepositBoxes, one per L2 network, each identified by a\n    // unique network ID. To relay a message, both the deposit box contract address and a messenger contract address\n    // need to be stored. The messenger implementation differs for each L2 because L1 --> L2 messaging is non-standard.\n    // The deposit box contract originate the deposits that can be fulfilled by BridgePool contracts on L1.\n    mapping(uint256 => DepositUtilityContracts) private _depositContracts;\n\n    // L1 token addresses are mapped to their canonical token address on L2 and the BridgePool contract that houses\n    // relay liquidity for any deposits of the canonical L2 token.\n    mapping(address => L1TokenRelationships) private _whitelistedTokens;\n\n    // Set upon construction and can be reset by Owner.\n    uint32 public override optimisticOracleLiveness;\n    uint64 public override proposerBondPct;\n    bytes32 public override identifier;\n\n    // Add this modifier to methods that are expected to bridge messages to a L2 Deposit contract, which\n    // will cause unexpected behavior if the deposit or messenger helper contract isn't set and valid.\n    modifier canRelay(uint256 chainId) {\n        _validateDepositContracts(\n            _depositContracts[chainId].depositContract,\n            _depositContracts[chainId].messengerContract\n        );\n        _;\n    }\n\n    /**\n     * @notice Construct the Bridge Admin\n     * @param _finder DVM finder to find other UMA ecosystem contracts.\n     * @param _optimisticOracleLiveness Timeout that all bridging actions from L2->L1 must wait for a OptimisticOracle response.\n     * @param _proposerBondPct Percentage of the bridged amount that a relayer must put up as a bond.\n     * @param _identifier Identifier used when querying the OO for a cross bridge transfer action.\n     */\n    constructor(\n        address _finder,\n        uint32 _optimisticOracleLiveness,\n        uint64 _proposerBondPct,\n        bytes32 _identifier\n    ) {\n        finder = _finder;\n        require(address(_getCollateralWhitelist()) != address(0), \"Invalid finder\");\n        _setOptimisticOracleLiveness(_optimisticOracleLiveness);\n        _setProposerBondPct(_proposerBondPct);\n        _setIdentifier(_identifier);\n    }\n\n    /**************************************\n     *        ADMIN FUNCTIONS             *\n     **************************************/\n\n    /**\n     * @notice Sets a price identifier to use for relayed deposits. BridgePools reads the identifier from this contract.\n     * @dev Can only be called by the current owner.\n     * @param _identifier New identifier to set.\n     */\n    function setIdentifier(bytes32 _identifier) public onlyOwner nonReentrant() {\n        _setIdentifier(_identifier);\n    }\n\n    /**\n     * @notice Sets challenge period for relayed deposits. BridgePools will read this value from this contract.\n     * @dev Can only be called by the current owner.\n     * @param liveness New OptimisticOracle liveness period to set for relay price requests.\n     */\n    function setOptimisticOracleLiveness(uint32 liveness) public onlyOwner nonReentrant() {\n        _setOptimisticOracleLiveness(liveness);\n    }\n\n    /**\n     * @notice Sets challenge period for relayed deposits. BridgePools will read this value from this contract.\n     * @dev Can only be called by the current owner.\n     * @param _proposerBondPct New OptimisticOracle proposer bond % to set for relay price requests. 1e18 = 100%.\n     */\n    function setProposerBondPct(uint64 _proposerBondPct) public onlyOwner nonReentrant() {\n        _setProposerBondPct(_proposerBondPct);\n    }\n\n    /**\n     * @notice Associates the L2 deposit and L1 messenger helper addresses with an L2 network ID.\n     * @dev Only callable by the current owner.\n     * @param chainId L2 network ID to set addresses for.\n     * @param depositContract Address of L2 deposit contract.\n     * @param messengerContract Address of L1 helper contract that relays messages to L2.\n     */\n    function setDepositContract(\n        uint256 chainId,\n        address depositContract,\n        address messengerContract\n    ) public onlyOwner nonReentrant() {\n        _validateDepositContracts(depositContract, messengerContract);\n        _depositContracts[chainId].depositContract = depositContract;\n        _depositContracts[chainId].messengerContract = messengerContract;\n        emit SetDepositContracts(chainId, depositContract, messengerContract);\n    }\n\n    /**\n     * @notice Enables the current owner to transfer ownership of a set of owned bridge pools to a new owner.\n     * @dev Only callable by the current owner.\n     * @param bridgePools array of bridge pools to transfer ownership.\n     * @param newAdmin new admin contract to set ownership to.\n     */\n    function transferBridgePoolAdmin(address[] memory bridgePools, address newAdmin) public onlyOwner nonReentrant() {\n        for (uint8 i = 0; i < bridgePools.length; i++) {\n            BridgePoolInterface(bridgePools[i]).changeAdmin(newAdmin);\n        }\n        emit BridgePoolsAdminTransferred(bridgePools, newAdmin);\n    }\n\n    /**\n     * @notice Enable the current owner to change the decay rate at which LP shares accumulate fees for a particular\n     * BridgePool. The higher this value, the faster LP shares realize pending fees.\n     * @dev Only callable by the current owner.\n     * @param bridgePool Bridge Pool to change LP fee rate for.\n     * @param newLpFeeRate The new rate to set for the `bridgePool`.\n     */\n    function setLpFeeRatePerSecond(address bridgePool, uint64 newLpFeeRate) public onlyOwner nonReentrant() {\n        BridgePoolInterface(bridgePool).setLpFeeRatePerSecond(newLpFeeRate);\n        emit SetLpFeeRate(bridgePool, newLpFeeRate);\n    }\n\n    /**************************************************\n     *        CROSSDOMAIN ADMIN FUNCTIONS             *\n     **************************************************/\n\n    /**\n     * @notice Set new contract as the admin address in the L2 Deposit contract.\n     * @dev Only callable by the current owner.\n     * @dev msg.value must equal to l1CallValue.\n     * @param chainId L2 network ID where Deposit contract is deployed.\n     * @param admin New admin address to set on L2.\n     * @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\n     * depending on the L2 network that this contract sends a message to.\n     * @param l2Gas Gas limit to set for relayed message on L2.\n     * @param l2GasPrice Gas price bid to set for relayed message on L2.\n     * @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\n     */\n    function setCrossDomainAdmin(\n        uint256 chainId,\n        address admin,\n        uint256 l1CallValue,\n        uint256 l2Gas,\n        uint256 l2GasPrice,\n        uint256 maxSubmissionCost\n    ) public payable onlyOwner canRelay(chainId) nonReentrant() {\n        require(admin != address(0), \"Admin cannot be zero address\");\n        _relayMessage(\n            _depositContracts[chainId].messengerContract,\n            l1CallValue,\n            _depositContracts[chainId].depositContract,\n            msg.sender,\n            l2Gas,\n            l2GasPrice,\n            maxSubmissionCost,\n            abi.encodeWithSignature(\"setCrossDomainAdmin(address)\", admin)\n        );\n        emit SetCrossDomainAdmin(chainId, admin);\n    }\n\n    /**\n     * @notice Sets the minimum time between L2-->L1 token withdrawals in the L2 Deposit contract.\n     * @dev Only callable by the current owner.\n     * @dev msg.value must equal to l1CallValue.\n     * @param chainId L2 network ID where Deposit contract is deployed.\n     * @param minimumBridgingDelay the new minimum delay.\n     * @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\n     * depending on the L2 network that this contract sends a message to.\n     * @param l2Gas Gas limit to set for relayed message on L2.\n     * @param l2GasPrice Gas price bid to set for relayed message on L2.\n     * @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\n     */\n    function setMinimumBridgingDelay(\n        uint256 chainId,\n        uint64 minimumBridgingDelay,\n        uint256 l1CallValue,\n        uint256 l2Gas,\n        uint256 l2GasPrice,\n        uint256 maxSubmissionCost\n    ) public payable onlyOwner canRelay(chainId) nonReentrant() {\n        _relayMessage(\n            _depositContracts[chainId].messengerContract,\n            l1CallValue,\n            _depositContracts[chainId].depositContract,\n            msg.sender,\n            l2Gas,\n            l2GasPrice,\n            maxSubmissionCost,\n            abi.encodeWithSignature(\"setMinimumBridgingDelay(uint64)\", minimumBridgingDelay)\n        );\n        emit SetMinimumBridgingDelay(chainId, minimumBridgingDelay);\n    }\n\n    /**\n     * @notice Owner can pause/unpause L2 deposits for a tokens.\n     * @dev Only callable by Owner of this contract. Will set the same setting in the L2 Deposit contract via the cross\n     * domain messenger.\n     * @dev msg.value must equal to l1CallValue.\n     * @param chainId L2 network ID where Deposit contract is deployed.\n     * @param l1Token address of L1 Token to enable/disable deposits and relays for.\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\n     * @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\n     * depending on the L2 network that this contract sends a message to.\n     * @param l2Gas Gas limit to set for relayed message on L2.\n     * @param l2GasPrice Gas price bid to set for relayed message on L2.\n     * @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\n     */\n    function setEnableDepositsAndRelays(\n        uint256 chainId,\n        address l1Token,\n        bool depositsEnabled,\n        uint256 l1CallValue,\n        uint256 l2Gas,\n        uint256 l2GasPrice,\n        uint256 maxSubmissionCost\n    ) public payable onlyOwner canRelay(chainId) nonReentrant() {\n        // Disable relays on the BridgePool.\n        BridgePoolInterface(_whitelistedTokens[l1Token].bridgePool).setRelaysEnabled(depositsEnabled);\n\n        // Send cross-chain message to the associated bridgeDepositBox to disable deposits.\n        address l2Token = _whitelistedTokens[l1Token].l2Tokens[chainId];\n        _relayMessage(\n            _depositContracts[chainId].messengerContract,\n            l1CallValue,\n            _depositContracts[chainId].depositContract,\n            msg.sender,\n            l2Gas,\n            l2GasPrice,\n            maxSubmissionCost,\n            abi.encodeWithSignature(\"setEnableDeposits(address,bool)\", l2Token, depositsEnabled)\n        );\n        emit DepositsEnabled(chainId, l2Token, depositsEnabled);\n    }\n\n    /**\n     * @notice Privileged account can associate a whitelisted token with its linked token address on L2. The linked L2\n     * token can thereafter be deposited into the Deposit contract on L2 and relayed via the BridgePool contract.\n     * @dev msg.value must equal to l1CallValue.\n     * @dev This method is also used to to update the address of the bridgePool within a BridgeDepositBox through the\n     * re-whitelisting of a previously whitelisted token to update the address of the bridge pool in the deposit box.\n     * @dev Only callable by Owner of this contract. Also initiates a cross-chain call to the L2 Deposit contract to\n     * whitelist the token mapping.\n     * @param chainId L2 network ID where Deposit contract is deployed.\n     * @param l1Token Address of L1 token that can be used to relay L2 token deposits.\n     * @param l2Token Address of L2 token whose deposits are fulfilled by `l1Token`.\n     * @param bridgePool Address of BridgePool which manages liquidity to fulfill L2-->L1 relays.\n     * @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\n     * depending on the L2 network that this contract sends a message to.\n     * @param l2Gas Gas limit to set for relayed message on L2.\n     * @param l2GasPrice Gas price bid to set for relayed message on L2.\n     * @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\n     */\n    function whitelistToken(\n        uint256 chainId,\n        address l1Token,\n        address l2Token,\n        address bridgePool,\n        uint256 l1CallValue,\n        uint256 l2Gas,\n        uint256 l2GasPrice,\n        uint256 maxSubmissionCost\n    ) public payable onlyOwner canRelay(chainId) nonReentrant() {\n        require(bridgePool != address(0), \"BridgePool cannot be zero address\");\n        require(l2Token != address(0), \"L2 token cannot be zero address\");\n        require(_getCollateralWhitelist().isOnWhitelist(address(l1Token)), \"L1Token token not whitelisted\");\n\n        require(address(BridgePoolInterface(bridgePool).l1Token()) == l1Token, \"Bridge pool has different L1 token\");\n\n        // Braces to resolve Stack too deep compile error\n        {\n            L1TokenRelationships storage l1TokenRelationships = _whitelistedTokens[l1Token];\n            l1TokenRelationships.l2Tokens[chainId] = l2Token; // Set the L2Token at the index of the chainId.\n            l1TokenRelationships.bridgePool = bridgePool;\n        }\n\n        _relayMessage(\n            _depositContracts[chainId].messengerContract,\n            l1CallValue,\n            _depositContracts[chainId].depositContract,\n            msg.sender,\n            l2Gas,\n            l2GasPrice,\n            maxSubmissionCost,\n            abi.encodeWithSignature(\"whitelistToken(address,address,address)\", l1Token, l2Token, bridgePool)\n        );\n        emit WhitelistToken(chainId, l1Token, l2Token, bridgePool);\n    }\n\n    /**************************************\n     *           VIEW FUNCTIONS           *\n     **************************************/\n    function depositContracts(uint256 chainId) external view override returns (DepositUtilityContracts memory) {\n        return _depositContracts[chainId];\n    }\n\n    function whitelistedTokens(address l1Token, uint256 chainId)\n        external\n        view\n        override\n        returns (address l2Token, address bridgePool)\n    {\n        return (_whitelistedTokens[l1Token].l2Tokens[chainId], _whitelistedTokens[l1Token].bridgePool);\n    }\n\n    /**************************************\n     *        INTERNAL FUNCTIONS          *\n     **************************************/\n\n    function _getIdentifierWhitelist() private view returns (IdentifierWhitelistInterface) {\n        return\n            IdentifierWhitelistInterface(\n                FinderInterface(finder).getImplementationAddress(OracleInterfaces.IdentifierWhitelist)\n            );\n    }\n\n    function _getCollateralWhitelist() private view returns (AddressWhitelistInterface) {\n        return\n            AddressWhitelistInterface(\n                FinderInterface(finder).getImplementationAddress(OracleInterfaces.CollateralWhitelist)\n            );\n    }\n\n    function _setIdentifier(bytes32 _identifier) private {\n        require(_getIdentifierWhitelist().isIdentifierSupported(_identifier), \"Identifier not registered\");\n        identifier = _identifier;\n        emit SetRelayIdentifier(identifier);\n    }\n\n    function _setOptimisticOracleLiveness(uint32 liveness) private {\n        // The following constraints are copied from a similar function in the OptimisticOracle contract:\n        // - https://github.com/UMAprotocol/protocol/blob/dd211c4e3825fe007d1161025a34e9901b26031a/packages/core/contracts/oracle/implementation/OptimisticOracle.sol#L621\n        require(liveness < 5200 weeks, \"Liveness too large\");\n        require(liveness > 0, \"Liveness cannot be 0\");\n        optimisticOracleLiveness = liveness;\n        emit SetOptimisticOracleLiveness(optimisticOracleLiveness);\n    }\n\n    function _setProposerBondPct(uint64 _proposerBondPct) private {\n        proposerBondPct = _proposerBondPct;\n        emit SetProposerBondPct(proposerBondPct);\n    }\n\n    function _validateDepositContracts(address depositContract, address messengerContract) private pure {\n        require(\n            (depositContract != address(0)) && (messengerContract != address(0)),\n            \"Invalid deposit or messenger contract\"\n        );\n    }\n\n    // Send msg.value == l1CallValue to Messenger, which can then use it in any way to execute cross domain message.\n    function _relayMessage(\n        address messengerContract,\n        uint256 l1CallValue,\n        address target,\n        address user,\n        uint256 l2Gas,\n        uint256 l2GasPrice,\n        uint256 maxSubmissionCost,\n        bytes memory message\n    ) private {\n        require(l1CallValue == msg.value, \"Wrong number of ETH sent\");\n        MessengerInterface(messengerContract).relayMessage{ value: l1CallValue }(\n            target,\n            user,\n            l1CallValue,\n            l2Gas,\n            l2GasPrice,\n            maxSubmissionCost,\n            message\n        );\n    }\n}\n"
            },
            "contracts/insured-bridge/interfaces/BridgePoolInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ninterface BridgePoolInterface {\n    function l1Token() external view returns (IERC20);\n\n    function changeAdmin(address newAdmin) external;\n\n    function setLpFeeRatePerSecond(uint64 _newLpFeeRatePerSecond) external;\n\n    function setRelaysEnabled(bool _relaysEnabled) external;\n}\n"
            },
            "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @notice Helper view methods designed to be called by BridgePool contracts.\n */\ninterface BridgeAdminInterface {\n    event SetDepositContracts(\n        uint256 indexed chainId,\n        address indexed l2DepositContract,\n        address indexed l2MessengerContract\n    );\n    event SetCrossDomainAdmin(uint256 indexed chainId, address indexed newAdmin);\n    event SetRelayIdentifier(bytes32 indexed identifier);\n    event SetOptimisticOracleLiveness(uint32 indexed liveness);\n    event SetProposerBondPct(uint64 indexed proposerBondPct);\n    event WhitelistToken(uint256 chainId, address indexed l1Token, address indexed l2Token, address indexed bridgePool);\n    event SetMinimumBridgingDelay(uint256 indexed chainId, uint64 newMinimumBridgingDelay);\n    event DepositsEnabled(uint256 indexed chainId, address indexed l2Token, bool depositsEnabled);\n    event BridgePoolsAdminTransferred(address[] bridgePools, address indexed newAdmin);\n    event SetLpFeeRate(address indexed bridgePool, uint64 newLpFeeRatePerSecond);\n\n    function finder() external view returns (address);\n\n    struct DepositUtilityContracts {\n        address depositContract; // L2 deposit contract where cross-chain relays originate.\n        address messengerContract; // L1 helper contract that can send a message to the L2 with the mapped network ID.\n    }\n\n    function depositContracts(uint256) external view returns (DepositUtilityContracts memory);\n\n    struct L1TokenRelationships {\n        mapping(uint256 => address) l2Tokens; // L2 Chain Id to l2Token address.\n        address bridgePool;\n    }\n\n    function whitelistedTokens(address, uint256) external view returns (address l2Token, address bridgePool);\n\n    function optimisticOracleLiveness() external view returns (uint32);\n\n    function proposerBondPct() external view returns (uint64);\n\n    function identifier() external view returns (bytes32);\n}\n"
            },
            "contracts/oracle/interfaces/IdentifierWhitelistInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Interface for whitelists of supported identifiers that the oracle can provide prices for.\n */\ninterface IdentifierWhitelistInterface {\n    /**\n     * @notice Adds the provided identifier as a supported identifier.\n     * @dev Price requests using this identifier will succeed after this call.\n     * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\n     */\n    function addSupportedIdentifier(bytes32 identifier) external;\n\n    /**\n     * @notice Removes the identifier from the whitelist.\n     * @dev Price requests using this identifier will no longer succeed after this call.\n     * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\n     */\n    function removeSupportedIdentifier(bytes32 identifier) external;\n\n    /**\n     * @notice Checks whether an identifier is on the whitelist.\n     * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\n     * @return bool if the identifier is supported (or not).\n     */\n    function isIdentifierSupported(bytes32 identifier) external view returns (bool);\n}\n"
            },
            "contracts/oracle/interfaces/FinderInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Provides addresses of the live contracts implementing certain interfaces.\n * @dev Examples are the Oracle or Store interfaces.\n */\ninterface FinderInterface {\n    /**\n     * @notice Updates the address of the contract that implements `interfaceName`.\n     * @param interfaceName bytes32 encoding of the interface name that is either changed or registered.\n     * @param implementationAddress address of the deployed contract that implements the interface.\n     */\n    function changeImplementationAddress(bytes32 interfaceName, address implementationAddress) external;\n\n    /**\n     * @notice Gets the address of the contract that implements the given `interfaceName`.\n     * @param interfaceName queried interface.\n     * @return implementationAddress address of the deployed contract that implements the interface.\n     */\n    function getImplementationAddress(bytes32 interfaceName) external view returns (address);\n}\n"
            },
            "contracts/oracle/implementation/Constants.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Stores common interface names used throughout the DVM by registration in the Finder.\n */\nlibrary OracleInterfaces {\n    bytes32 public constant Oracle = \"Oracle\";\n    bytes32 public constant IdentifierWhitelist = \"IdentifierWhitelist\";\n    bytes32 public constant Store = \"Store\";\n    bytes32 public constant FinancialContractsAdmin = \"FinancialContractsAdmin\";\n    bytes32 public constant Registry = \"Registry\";\n    bytes32 public constant CollateralWhitelist = \"CollateralWhitelist\";\n    bytes32 public constant OptimisticOracle = \"OptimisticOracle\";\n    bytes32 public constant Bridge = \"Bridge\";\n    bytes32 public constant GenericHandler = \"GenericHandler\";\n    bytes32 public constant SkinnyOptimisticOracle = \"SkinnyOptimisticOracle\";\n}\n\n/**\n * @title Commonly re-used values for contracts associated with the OptimisticOracle.\n */\nlibrary OptimisticOracleConstraints {\n    // Any price request submitted to the OptimisticOracle must contain ancillary data no larger than this value.\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` constant value otherwise it is possible\n    // that a price can be requested to the OptimisticOracle successfully, but cannot be resolved by the DVM which\n    // refuses to accept a price request made with ancillary data length over a certain size.\n    uint256 public constant ancillaryBytesLimit = 8192;\n}\n"
            },
            "contracts/common/interfaces/AddressWhitelistInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\ninterface AddressWhitelistInterface {\n    function addToWhitelist(address newElement) external;\n\n    function removeFromWhitelist(address newElement) external;\n\n    function isOnWhitelist(address newElement) external view returns (bool);\n\n    function getWhitelist() external view returns (address[] memory);\n}\n"
            },
            "contracts/common/implementation/Lockable.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\n */\ncontract Lockable {\n    bool private _notEntered;\n\n    constructor() {\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\n        // refund coming into effect.\n        _notEntered = true;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n     * function that does the actual state modification.\n     */\n    modifier nonReentrant() {\n        _preEntranceCheck();\n        _preEntranceSet();\n        _;\n        _postEntranceReset();\n    }\n\n    /**\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\n     */\n    modifier nonReentrantView() {\n        _preEntranceCheck();\n        _;\n    }\n\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\n    // then call `_postEntranceReset()`.\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\n    function _preEntranceCheck() internal view {\n        // On the first call to nonReentrant, _notEntered will be true\n        require(_notEntered, \"ReentrancyGuard: reentrant call\");\n    }\n\n    function _preEntranceSet() internal {\n        // Any calls to nonReentrant after this point will fail\n        _notEntered = false;\n    }\n\n    function _postEntranceReset() internal {\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        _notEntered = true;\n    }\n}\n"
            },
            "contracts/insured-bridge/BridgeDepositBox.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../common/implementation/Testable.sol\";\nimport \"../common/implementation/Lockable.sol\";\n\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ninterface TokenLike {\n    function balanceOf(address guy) external returns (uint256 wad);\n}\n\ninterface WETH9Like {\n    function deposit() external payable;\n\n    function withdraw(uint256 wad) external;\n}\n\n/**\n * @title OVM Bridge Deposit Box.\n * @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\n */\n\nabstract contract BridgeDepositBox is Testable, Lockable {\n    using SafeERC20 for IERC20;\n    /*************************************\n     *  OVM DEPOSIT BOX DATA STRUCTURES  *\n     *************************************/\n\n    // ChainID of the L2 this deposit box is deployed on.\n    uint256 public chainId;\n\n    // Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.\n    address public l1Weth;\n\n    // Track the total number of deposits. Used as a unique identifier for bridged transfers.\n    uint256 public numberOfDeposits;\n\n    struct L2TokenRelationships {\n        address l1Token;\n        address l1BridgePool;\n        uint64 lastBridgeTime;\n        bool depositsEnabled;\n    }\n\n    // Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token\n    // type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.\n    mapping(address => L2TokenRelationships) public whitelistedTokens;\n\n    // Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.\n    uint64 public minimumBridgingDelay;\n\n    /****************************************\n     *                EVENTS                *\n     ****************************************/\n\n    event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);\n    event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);\n    event DepositsEnabled(address l2Token, bool depositsEnabled);\n    event FundsDeposited(\n        uint256 chainId,\n        uint256 depositId,\n        address l1Recipient,\n        address l2Sender,\n        address l1Token,\n        address l2Token,\n        uint256 amount,\n        uint64 slowRelayFeePct,\n        uint64 instantRelayFeePct,\n        uint64 quoteTimestamp\n    );\n    event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);\n\n    /****************************************\n     *               MODIFIERS              *\n     ****************************************/\n\n    modifier onlyIfDepositsEnabled(address l2Token) {\n        require(whitelistedTokens[l2Token].depositsEnabled, \"Contract is disabled\");\n        _;\n    }\n\n    /**\n     * @notice Construct the Bridge Deposit Box\n     * @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\n     * @param _chainId Chain identifier for the Bridge deposit box.\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\n     */\n    constructor(\n        uint64 _minimumBridgingDelay,\n        uint256 _chainId,\n        address _l1Weth,\n        address timerAddress\n    ) Testable(timerAddress) {\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\n        chainId = _chainId;\n        l1Weth = _l1Weth;\n    }\n\n    /**************************************\n     *          ADMIN FUNCTIONS           *\n     **************************************/\n\n    /**\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\n     * @param newMinimumBridgingDelay the new minimum delay.\n     */\n    function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {\n        minimumBridgingDelay = newMinimumBridgingDelay;\n        emit SetMinimumBridgingDelay(minimumBridgingDelay);\n    }\n\n    /**\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\n     */\n    function _whitelistToken(\n        address l1Token,\n        address l2Token,\n        address l1BridgePool\n    ) internal {\n        whitelistedTokens[l2Token] = L2TokenRelationships({\n            l1Token: l1Token,\n            l1BridgePool: l1BridgePool,\n            lastBridgeTime: uint64(getCurrentTime()),\n            depositsEnabled: true\n        });\n\n        emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);\n    }\n\n    /**\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\n     * @param l2Token address of L2 token to enable/disable deposits for.\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\n     */\n    function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {\n        whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;\n        emit DepositsEnabled(l2Token, depositsEnabled);\n    }\n\n    function bridgeTokens(address l2Token, uint32 l2Gas) public virtual;\n\n    /**************************************\n     *         DEPOSITOR FUNCTIONS        *\n     **************************************/\n\n    /**\n     * @notice Called by L2 user to bridge funds between L2 and L1.\n     * @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\n     * @dev The caller must first approve this contract to spend `amount` of `l2Token`.\n     * @param l1Recipient L1 address that should receive the tokens.\n     * @param l2Token L2 token to deposit.\n     * @param amount How many L2 tokens should be deposited.\n     * @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\n     * @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\n     * @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\n     *    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\n     */\n    function deposit(\n        address l1Recipient,\n        address l2Token,\n        uint256 amount,\n        uint64 slowRelayFeePct,\n        uint64 instantRelayFeePct,\n        uint64 quoteTimestamp\n    ) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {\n        require(isWhitelistToken(l2Token), \"deposit token not whitelisted\");\n        // We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.\n        // The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.\n        require(slowRelayFeePct <= 0.25e18, \"slowRelayFeePct must be <= 25%\");\n        require(instantRelayFeePct <= 0.25e18, \"instantRelayFeePct must be <= 25%\");\n\n        // Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp\n        // corresponds to the L1 timestamp of the last confirmed L1 ⇒ L2 transaction. The quoteTime must be within 10\n        // mins of the current time to allow for this variance.\n        // Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result\n        // in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.\n        // Consider requiring `quoteTimestamp >= 10 minutes`.\n        require(\n            getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,\n            \"deposit mined after deadline\"\n        );\n        // If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user\n        // is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.\n        if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {\n            require(msg.value == amount, \"msg.value must match amount\");\n            WETH9Like(address(l2Token)).deposit{ value: msg.value }();\n        }\n        // Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.\n        // Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In\n        // this case the msg.value will be set to 0, indicating a \"normal\" ERC20 bridging action.\n        else IERC20(l2Token).safeTransferFrom(msg.sender, address(this), amount);\n\n        emit FundsDeposited(\n            chainId,\n            numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).\n            l1Recipient,\n            msg.sender,\n            whitelistedTokens[l2Token].l1Token,\n            l2Token,\n            amount,\n            slowRelayFeePct,\n            instantRelayFeePct,\n            quoteTimestamp\n        );\n\n        numberOfDeposits += 1;\n    }\n\n    /**************************************\n     *           VIEW FUNCTIONS           *\n     **************************************/\n\n    /**\n     * @notice Checks if a given L2 token is whitelisted.\n     * @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\n     * the token has been whitelisted.\n     * @param l2Token L2 token to check against the whitelist.\n     * @return true if token is whitelised.\n     */\n    function isWhitelistToken(address l2Token) public view returns (bool) {\n        return whitelistedTokens[l2Token].lastBridgeTime != 0;\n    }\n\n    function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {\n        return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;\n    }\n\n    /**\n     * @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\n     * balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\n     * and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\n     * @dev This function is also public for caller convenience.\n     * @param l2Token L2 token to check bridging status.\n     * @return true if token is whitelised and enough time has elapsed since the previous bridge.\n     */\n    function canBridge(address l2Token) public view returns (bool) {\n        return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);\n    }\n}\n"
            },
            "contracts/common/implementation/Testable.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"./Timer.sol\";\n\n/**\n * @title Base class that provides time overrides, but only if being run in test mode.\n */\nabstract contract Testable {\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\n    // Note: this variable should be set on construction and never modified.\n    address public timerAddress;\n\n    /**\n     * @notice Constructs the Testable contract. Called by child contracts.\n     * @param _timerAddress Contract that stores the current time in a testing environment.\n     * Must be set to 0x0 for production environments that use live time.\n     */\n    constructor(address _timerAddress) {\n        timerAddress = _timerAddress;\n    }\n\n    /**\n     * @notice Reverts if not running in test mode.\n     */\n    modifier onlyIfTest {\n        require(timerAddress != address(0x0));\n        _;\n    }\n\n    /**\n     * @notice Sets the current time.\n     * @dev Will revert if not running in test mode.\n     * @param time timestamp to set current Testable time to.\n     */\n    function setCurrentTime(uint256 time) external onlyIfTest {\n        Timer(timerAddress).setCurrentTime(time);\n    }\n\n    /**\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\n     * Otherwise, it will return the block timestamp.\n     * @return uint for the current Testable timestamp.\n     */\n    function getCurrentTime() public view virtual returns (uint256) {\n        if (timerAddress != address(0x0)) {\n            return Timer(timerAddress).getCurrentTime();\n        } else {\n            return block.timestamp; // solhint-disable-line not-rely-on-time\n        }\n    }\n}\n"
            },
            "contracts/common/implementation/Timer.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Universal store of current contract time for testing environments.\n */\ncontract Timer {\n    uint256 private currentTime;\n\n    constructor() {\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\n    }\n\n    /**\n     * @notice Sets the current time.\n     * @dev Will revert if not running in test mode.\n     * @param time timestamp to set `currentTime` to.\n     */\n    function setCurrentTime(uint256 time) external {\n        currentTime = time;\n    }\n\n    /**\n     * @notice Gets the currentTime variable set in the Timer.\n     * @return uint256 for the current Testable timestamp.\n     */\n    function getCurrentTime() public view returns (uint256) {\n        return currentTime;\n    }\n}\n"
            },
            "contracts/insured-bridge/test/BridgeDepositBoxMock.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../BridgeDepositBox.sol\";\n\ncontract BridgeDepositBoxMock is BridgeDepositBox {\n    using SafeERC20 for IERC20;\n\n    // Address of the L1 contract that acts as the owner of this Bridge deposit box.\n    address public bridgeAdmin;\n\n    event SetBridgeAdmin(address newBridgeAdmin);\n\n    modifier onlyBridgeAdmin() {\n        require(msg.sender == bridgeAdmin, \"Not bridge admin\");\n        _;\n    }\n\n    /**\n     * @notice Ownable bridge deposit box. Used for testing environments that don't have specific l1/l2 messaging logic.\n     */\n\n    constructor(\n        address _bridgeAdmin,\n        uint64 _minimumBridgingDelay,\n        address _l1Weth,\n        address timerAddress\n    ) BridgeDepositBox(_minimumBridgingDelay, 10, _l1Weth, timerAddress) {\n        _setBridgeAdmin(_bridgeAdmin);\n    }\n\n    /**************************************\n     *          ADMIN FUNCTIONS           *\n     **************************************/\n\n    /**\n     * @notice Changes the L1 administrator associated with this L2 deposit deposit box.\n     * @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\n     * @param _bridgeAdmin address of the new L1 admin contract.\n     */\n    function setCrossDomainAdmin(address _bridgeAdmin) public onlyBridgeAdmin() {\n        _setBridgeAdmin(_bridgeAdmin);\n    }\n\n    /**\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\n     * @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\n     * @param _minimumBridgingDelay the new minimum delay.\n     */\n    function setMinimumBridgingDelay(uint64 _minimumBridgingDelay) public onlyBridgeAdmin() {\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\n    }\n\n    /**\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\n     * @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\n     */\n    function whitelistToken(\n        address l1Token,\n        address l2Token,\n        address l1BridgePool\n    ) public onlyBridgeAdmin() {\n        _whitelistToken(l1Token, l2Token, l1BridgePool);\n    }\n\n    /**\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\n     * @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\n     * @param _l2Token address of L2 token to enable/disable deposits for.\n     * @param _depositsEnabled bool to set if the deposit box should accept/reject deposits.\n     */\n    function setEnableDeposits(address _l2Token, bool _depositsEnabled) public onlyBridgeAdmin() {\n        _setEnableDeposits(_l2Token, _depositsEnabled);\n    }\n\n    /**************************************\n     *          RELAYER FUNCTIONS         *\n     **************************************/\n\n    /**\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\n     *      token bridge, to the L1 Withdraw box.\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\n     * @param l2Token L2 token to relay over the canonical bridge.\n     * @param l1Gas Unused by optimism, but included for potential forward compatibility considerations.\n     */\n    function bridgeTokens(address l2Token, uint32 l1Gas) public override nonReentrant() {\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\n        require(bridgeDepositBoxBalance > 0, \"can't bridge zero tokens\");\n        require(canBridge(l2Token), \"non-whitelisted token or last bridge too recent\");\n\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\n\n        // Note in this test contract we simply send the l2 tokens to the l1BridgePool.\n        IERC20(l2Token).safeTransfer(whitelistedTokens[l2Token].l1BridgePool, bridgeDepositBoxBalance);\n\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\n    }\n\n    /**************************************\n     *         INTERNAL FUNCTIONS         *\n     **************************************/\n\n    function _setBridgeAdmin(address _l1BridgeAdmin) internal {\n        require(_l1BridgeAdmin != address(0), \"Bad bridge router address\");\n        bridgeAdmin = _l1BridgeAdmin;\n        emit SetBridgeAdmin(bridgeAdmin);\n    }\n}\n"
            },
            "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../BridgeDepositBox.sol\";\nimport \"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\";\nimport \"@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol\";\nimport \"@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol\";\n\n/**\n * @notice OVM specific bridge deposit box.\n * @dev Uses OVM cross-domain-enabled logic for access control.\n */\n\ncontract OVM_BridgeDepositBox is BridgeDepositBox, CrossDomainEnabled {\n    // Address of the L1 contract that acts as the owner of this Bridge deposit box.\n    address public crossDomainAdmin;\n\n    event SetXDomainAdmin(address indexed newAdmin);\n\n    /**\n     * @notice Construct the Optimism Bridge Deposit Box\n     * @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\n     * @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\n     * @param _chainId L2 Chain identifier this deposit box is deployed on.\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\n     */\n    constructor(\n        address _crossDomainAdmin,\n        uint64 _minimumBridgingDelay,\n        uint256 _chainId,\n        address _l1Weth,\n        address timerAddress\n    )\n        CrossDomainEnabled(Lib_PredeployAddresses.L2_CROSS_DOMAIN_MESSENGER)\n        BridgeDepositBox(_minimumBridgingDelay, _chainId, _l1Weth, timerAddress)\n    {\n        _setCrossDomainAdmin(_crossDomainAdmin);\n    }\n\n    /**************************************\n     *          ADMIN FUNCTIONS           *\n     **************************************/\n\n    /**\n     * @notice Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\n     * @dev This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which\n     * is expected to be the Optimism_Messenger.\n     * @dev Only callable by the existing admin via the Optimism cross domain messenger.\n     * @param newCrossDomainAdmin address of the new L1 admin contract.\n     */\n    function setCrossDomainAdmin(address newCrossDomainAdmin) public onlyFromCrossDomainAccount(crossDomainAdmin) {\n        _setCrossDomainAdmin(newCrossDomainAdmin);\n    }\n\n    /**\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\n     * @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\n     * @param newMinimumBridgingDelay the new minimum delay.\n     */\n    function setMinimumBridgingDelay(uint64 newMinimumBridgingDelay)\n        public\n        onlyFromCrossDomainAccount(crossDomainAdmin)\n    {\n        _setMinimumBridgingDelay(newMinimumBridgingDelay);\n    }\n\n    /**\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\n     * @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\n     */\n    function whitelistToken(\n        address l1Token,\n        address l2Token,\n        address l1BridgePool\n    ) public onlyFromCrossDomainAccount(crossDomainAdmin) {\n        _whitelistToken(l1Token, l2Token, l1BridgePool);\n    }\n\n    /**\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\n     * @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\n     * @param l2Token address of L2 token to enable/disable deposits for.\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\n     */\n    function setEnableDeposits(address l2Token, bool depositsEnabled)\n        public\n        onlyFromCrossDomainAccount(crossDomainAdmin)\n    {\n        _setEnableDeposits(l2Token, depositsEnabled);\n    }\n\n    /**************************************\n     *          RELAYER FUNCTIONS         *\n     **************************************/\n\n    /**\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\n     *      token bridge, to the L1 Withdraw box.\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\n     * @param l2Token L2 token to relay over the canonical bridge.\n     * @param l1Gas Unused by optimism, but included for potential forward compatibility considerations.\n     */\n    function bridgeTokens(address l2Token, uint32 l1Gas) public virtual override nonReentrant() {\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\n        require(bridgeDepositBoxBalance > 0, \"can't bridge zero tokens\");\n        require(canBridge(l2Token), \"non-whitelisted token or last bridge too recent\");\n\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\n\n        IL2ERC20Bridge(Lib_PredeployAddresses.L2_STANDARD_BRIDGE).withdrawTo(\n            l2Token, // _l2Token. Address of the L2 token to bridge over.\n            whitelistedTokens[l2Token].l1BridgePool, // _to. Withdraw, over the bridge, to the l1 withdraw contract.\n            bridgeDepositBoxBalance, // _amount. Send the full balance of the deposit box to bridge.\n            l1Gas, // _l1Gas. Unused, but included for potential forward compatibility considerations\n            \"\" // _data. We don't need to send any data for the bridging action.\n        );\n\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\n    }\n\n    /**************************************\n     *         INTERNAL FUNCTIONS         *\n     **************************************/\n\n    function _setCrossDomainAdmin(address newCrossDomainAdmin) internal {\n        require(newCrossDomainAdmin != address(0), \"Bad bridge router address\");\n        crossDomainAdmin = newCrossDomainAdmin;\n        emit SetXDomainAdmin(crossDomainAdmin);\n    }\n}\n"
            },
            "@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol": {
                "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\n/**\n * @title Lib_PredeployAddresses\n */\nlibrary Lib_PredeployAddresses {\n    address internal constant L2_TO_L1_MESSAGE_PASSER = 0x4200000000000000000000000000000000000000;\n    address internal constant L1_MESSAGE_SENDER = 0x4200000000000000000000000000000000000001;\n    address internal constant DEPLOYER_WHITELIST = 0x4200000000000000000000000000000000000002;\n    address payable internal constant OVM_ETH = payable(0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000);\n    address internal constant L2_CROSS_DOMAIN_MESSENGER =\n        0x4200000000000000000000000000000000000007;\n    address internal constant LIB_ADDRESS_MANAGER = 0x4200000000000000000000000000000000000008;\n    address internal constant PROXY_EOA = 0x4200000000000000000000000000000000000009;\n    address internal constant L2_STANDARD_BRIDGE = 0x4200000000000000000000000000000000000010;\n    address internal constant SEQUENCER_FEE_WALLET = 0x4200000000000000000000000000000000000011;\n    address internal constant L2_STANDARD_TOKEN_FACTORY =\n        0x4200000000000000000000000000000000000012;\n    address internal constant L1_BLOCK_NUMBER = 0x4200000000000000000000000000000000000013;\n}\n"
            },
            "@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol": {
                "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\n/**\n * @title IL2ERC20Bridge\n */\ninterface IL2ERC20Bridge {\n    /**********\n     * Events *\n     **********/\n\n    event WithdrawalInitiated(\n        address indexed _l1Token,\n        address indexed _l2Token,\n        address indexed _from,\n        address _to,\n        uint256 _amount,\n        bytes _data\n    );\n\n    event DepositFinalized(\n        address indexed _l1Token,\n        address indexed _l2Token,\n        address indexed _from,\n        address _to,\n        uint256 _amount,\n        bytes _data\n    );\n\n    event DepositFailed(\n        address indexed _l1Token,\n        address indexed _l2Token,\n        address indexed _from,\n        address _to,\n        uint256 _amount,\n        bytes _data\n    );\n\n    /********************\n     * Public Functions *\n     ********************/\n\n    /**\n     * @dev get the address of the corresponding L1 bridge contract.\n     * @return Address of the corresponding L1 bridge contract.\n     */\n    function l1TokenBridge() external returns (address);\n\n    /**\n     * @dev initiate a withdraw of some tokens to the caller's account on L1\n     * @param _l2Token Address of L2 token where withdrawal was initiated.\n     * @param _amount Amount of the token to withdraw.\n     * param _l1Gas Unused, but included for potential forward compatibility considerations.\n     * @param _data Optional data to forward to L1. This data is provided\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\n     *        length, these contracts provide no guarantees about its content.\n     */\n    function withdraw(\n        address _l2Token,\n        uint256 _amount,\n        uint32 _l1Gas,\n        bytes calldata _data\n    ) external;\n\n    /**\n     * @dev initiate a withdraw of some token to a recipient's account on L1.\n     * @param _l2Token Address of L2 token where withdrawal is initiated.\n     * @param _to L1 adress to credit the withdrawal to.\n     * @param _amount Amount of the token to withdraw.\n     * param _l1Gas Unused, but included for potential forward compatibility considerations.\n     * @param _data Optional data to forward to L1. This data is provided\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\n     *        length, these contracts provide no guarantees about its content.\n     */\n    function withdrawTo(\n        address _l2Token,\n        address _to,\n        uint256 _amount,\n        uint32 _l1Gas,\n        bytes calldata _data\n    ) external;\n\n    /*************************\n     * Cross-chain Functions *\n     *************************/\n\n    /**\n     * @dev Complete a deposit from L1 to L2, and credits funds to the recipient's balance of this\n     * L2 token. This call will fail if it did not originate from a corresponding deposit in\n     * L1StandardTokenBridge.\n     * @param _l1Token Address for the l1 token this is called with\n     * @param _l2Token Address for the l2 token this is called with\n     * @param _from Account to pull the deposit from on L2.\n     * @param _to Address to receive the withdrawal at\n     * @param _amount Amount of the token to withdraw\n     * @param _data Data provider by the sender on L1. This data is provided\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\n     *        length, these contracts provide no guarantees about its content.\n     */\n    function finalizeDeposit(\n        address _l1Token,\n        address _l2Token,\n        address _from,\n        address _to,\n        uint256 _amount,\n        bytes calldata _data\n    ) external;\n}\n"
            },
            "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol": {
                "content": "pragma solidity ^0.8.0;\n\nimport \"./OVM_BridgeDepositBox.sol\";\n\n/**\n * @title OVM_OETH_BridgeDepositBox\n * @dev Modified version of OVM_BridgeDepositBox that supports Optimism ETH being sent over the canonical bridge as ETH.\n * This is re-wrapped to WETH on L2. All other functionality remains the same.\n */\n\ncontract OVM_OETH_BridgeDepositBox is OVM_BridgeDepositBox {\n    // l2Eth is ETH on Optimism. This acts as both an ERC20 and ETH on the OVM. In production is deployed at address\n    // 0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000. We need to know the address in this contract as the Optimism bridge\n    // does not support WETH so we need to unwrap to ETH first then send over ETH.\n    address public l2Eth;\n    // The L1 ETH Wrapper contract receives ETH, wraps it to WETH and sends it to the BridgePool. This enables the\n    // us to keep the same L1 contracts while supporting Optimsim.\n    address public l1EthWrapper;\n\n    /**\n     * @notice Construct the Optimism Bridge Deposit Box\n     * @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\n     * @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\n     * @param _chainId L2 Chain identifier this deposit box is deployed on.\n     * @param _l1Weth Address of Weth on L1. Used to inform if a bridging action should wrap ETH to WETH, if the desired\n     *      asset-to-bridge is for a whitelisted token mapped to this L1 Weth token.\n     * @param _l2Eth Address of ETH on L2. If someone wants to bridge L2 Weth from this contract to L1, then L2 ETH\n     *     should be sent over the Optimism bridge.\n     * @param _l1EthWrapper Address of custom ETH wrapper on L1. Any ETH sent to this contract will be wrapped to WETH\n     *     and sent to the WETH Bridge Pool.\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\n     */\n    constructor(\n        address _crossDomainAdmin,\n        uint64 _minimumBridgingDelay,\n        uint256 _chainId,\n        address _l1Weth,\n        address _l2Eth,\n        address _l1EthWrapper,\n        address timerAddress\n    ) OVM_BridgeDepositBox(_crossDomainAdmin, _minimumBridgingDelay, _chainId, _l1Weth, timerAddress) {\n        l2Eth = _l2Eth;\n        l1EthWrapper = _l1EthWrapper;\n    }\n\n    /**\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\n     *     token bridge, to the L1 Withdraw box. Implementation is exactly the same as the standard OVM_BridgeDepositBox\n     * except constructed to work with Optimism ETH by first unwrapping WETH then bridging OETH. The target on L1 is\n     * not the bridgePool but to the l1EthWrapper that takes any ETH sent to it, wraps it and sends to the BridgePool.\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\n     * @param l2Token L2 token to relay over the canonical bridge.\n     * @param l1Gas Unused by optimism, but included for potential forward compatibility considerations.\n     */\n    function bridgeTokens(address l2Token, uint32 l1Gas) public override nonReentrant() {\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\n        require(bridgeDepositBoxBalance > 0, \"can't bridge zero tokens\");\n        require(canBridge(l2Token), \"non-whitelisted token or last bridge too recent\");\n\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\n\n        address bridgePool = whitelistedTokens[l2Token].l1BridgePool;\n\n        // If the l1Token mapping to the l2Token is l1Weth, then to work with the canonical optimism bridge, we first\n        //  unwrap it to ETH then bridge the newly unwraped L2 ETH over the canonical bridge. On L1 the l1EthWrapper will\n        // re-wrap the ETH to WETH and send it to the WETH bridge pool.\n        if (whitelistedTokens[l2Token].l1Token == l1Weth) {\n            WETH9Like(l2Token).withdraw(bridgeDepositBoxBalance);\n            l2Token = l2Eth;\n            bridgePool = l1EthWrapper;\n        }\n        IL2ERC20Bridge(Lib_PredeployAddresses.L2_STANDARD_BRIDGE).withdrawTo(\n            l2Token, // _l2Token. Address of the L2 token to bridge over.\n            bridgePool, // _to. Withdraw, over the bridge, to the l1 withdraw contract.\n            bridgeDepositBoxBalance, // _amount. Send the full balance of the deposit box to bridge.\n            l1Gas, // _l1Gas. Unused, but included for potential forward compatibility considerations\n            \"\" // _data. We don't need to send any data for the bridging action.\n        );\n\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\n    }\n\n    // Fallback function to enable this contract to receive ETH sent to it via WETH unwrapping. When l2ETH is unwrapped\n    // from l2WETH, the l2ETH is sent to this contract before being sent over the canonical Optimism's bridge.\n    receive() external payable {}\n\n    fallback() external payable {}\n}\n"
            },
            "contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol": {
                "content": "pragma solidity ^0.8.0;\nimport \"@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol\";\n\ncontract OVM_L1CrossDomainMessengerMock is ICrossDomainMessenger {\n    function xDomainMessageSender() external view override returns (address) {\n        // Trivial return this contract's address.\n        return address(this);\n    }\n\n    function sendMessage(\n        address _target,\n        bytes calldata _message,\n        uint32 _gasLimit\n    ) external override {}\n    // Do nothing.\n}\n"
            },
            "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../BridgeDepositBox.sol\";\nimport \"../../external/avm/AVM_CrossDomainEnabled.sol\";\n\ninterface StandardBridgeLike {\n    function outboundTransfer(\n        address _l1Token,\n        address _to,\n        uint256 _amount,\n        bytes calldata _data\n    ) external payable returns (bytes memory);\n}\n\n/**\n * @notice AVM specific bridge deposit box.\n * @dev Uses AVM cross-domain-enabled logic for access control.\n */\n\ncontract AVM_BridgeDepositBox is BridgeDepositBox, AVM_CrossDomainEnabled {\n    // Address of the L1 contract that acts as the owner of this Bridge deposit box.\n    address public crossDomainAdmin;\n\n    // Address of the Arbitrum L2 token gateway.\n    address public l2GatewayRouter;\n\n    event SetXDomainAdmin(address indexed newAdmin);\n\n    /**\n     * @notice Construct the Arbitrum Bridge Deposit Box\n     * @param _l2GatewayRouter Address of the Arbitrum L2 token gateway router for sending tokens from L2->L1.\n     * @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\n     * @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\n     * @param _chainId L2 Chain identifier this deposit box is deployed on.\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\n     */\n    constructor(\n        address _l2GatewayRouter,\n        address _crossDomainAdmin,\n        uint64 _minimumBridgingDelay,\n        uint256 _chainId,\n        address _l1Weth,\n        address timerAddress\n    ) BridgeDepositBox(_minimumBridgingDelay, _chainId, _l1Weth, timerAddress) {\n        l2GatewayRouter = _l2GatewayRouter;\n        _setCrossDomainAdmin(_crossDomainAdmin);\n    }\n\n    /**************************************\n     *          ADMIN FUNCTIONS           *\n     **************************************/\n\n    /**\n     * @notice Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\n     * @dev This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which\n     * is expected to be the Arbitrum_Messenger.\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\n     * @param newCrossDomainAdmin address of the new L1 admin contract.\n     */\n    function setCrossDomainAdmin(address newCrossDomainAdmin) public onlyFromCrossDomainAccount(crossDomainAdmin) {\n        _setCrossDomainAdmin(newCrossDomainAdmin);\n    }\n\n    /**\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\n     * @param newMinimumBridgingDelay the new minimum delay.\n     */\n    function setMinimumBridgingDelay(uint64 newMinimumBridgingDelay)\n        public\n        onlyFromCrossDomainAccount(crossDomainAdmin)\n    {\n        _setMinimumBridgingDelay(newMinimumBridgingDelay);\n    }\n\n    /**\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on Arbitrum.\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\n     */\n    function whitelistToken(\n        address l1Token,\n        address l2Token,\n        address l1BridgePool\n    ) public onlyFromCrossDomainAccount(crossDomainAdmin) {\n        _whitelistToken(l1Token, l2Token, l1BridgePool);\n    }\n\n    /**\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\n     * @param l2Token address of L2 token to enable/disable deposits for.\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\n     */\n    function setEnableDeposits(address l2Token, bool depositsEnabled)\n        public\n        onlyFromCrossDomainAccount(crossDomainAdmin)\n    {\n        _setEnableDeposits(l2Token, depositsEnabled);\n    }\n\n    /**************************************\n     *          RELAYER FUNCTIONS         *\n     **************************************/\n\n    /**\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\n     *      token bridge, to the L1 Withdraw box.\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\n     * @param l2Token L2 token to relay over the canonical bridge.\n     * @param l1Gas Unused by Arbitrum, but included for potential forward compatibility considerations.\n     */\n    function bridgeTokens(address l2Token, uint32 l1Gas) public override nonReentrant() {\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\n        require(bridgeDepositBoxBalance > 0, \"can't bridge zero tokens\");\n        require(canBridge(l2Token), \"non-whitelisted token or last bridge too recent\");\n\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\n\n        StandardBridgeLike(l2GatewayRouter).outboundTransfer(\n            whitelistedTokens[l2Token].l1Token, // _l1Token. Address of the L1 token to bridge over.\n            whitelistedTokens[l2Token].l1BridgePool, // _to. Withdraw, over the bridge, to the l1 withdraw contract.\n            bridgeDepositBoxBalance, // _amount. Send the full balance of the deposit box to bridge.\n            \"\" // _data. We don't need to send any data for the bridging action.\n        );\n\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\n    }\n\n    /**************************************\n     *         INTERNAL FUNCTIONS         *\n     **************************************/\n\n    function _setCrossDomainAdmin(address newCrossDomainAdmin) internal {\n        require(newCrossDomainAdmin != address(0), \"Empty address\");\n        crossDomainAdmin = newCrossDomainAdmin;\n        emit SetXDomainAdmin(crossDomainAdmin);\n    }\n}\n"
            },
            "contracts/external/avm/AVM_CrossDomainEnabled.sol": {
                "content": "// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l2/L2CrossDomainEnabled.sol\n// with a change to the solidity version.\n\npragma solidity ^0.8.0;\n\nimport \"./interfaces/ArbSys.sol\";\n\nabstract contract AVM_CrossDomainEnabled {\n    event SentCrossDomainMessage(address indexed from, address indexed to, uint256 indexed id, bytes data);\n\n    modifier onlyFromCrossDomainAccount(address l1Counterpart) {\n        require(msg.sender == applyL1ToL2Alias(l1Counterpart), \"ONLY_COUNTERPART_GATEWAY\");\n        _;\n    }\n\n    uint160 constant offset = uint160(0x1111000000000000000000000000000000001111);\n\n    // l1 addresses are transformed during l1->l2 calls. See https://developer.offchainlabs.com/docs/l1_l2_messages#address-aliasing for more information.\n    function applyL1ToL2Alias(address l1Address) internal pure returns (address l2Address) {\n        l2Address = address(uint160(l1Address) + offset);\n    }\n\n    // Sends a message to L1 via the ArbSys contract. See https://developer.offchainlabs.com/docs/arbsys.\n    // After the Arbitrum chain advances some set amount of time, ArbOS gathers all outgoing messages, Merklizes them,\n    // and publishes the root as an OutboxEntry in the chain's outbox. Note that this happens \"automatically\";\n    // i.e., it requires no additional action from the user. After the Outbox entry is published on the L1 chain,\n    // the user (or anybody) can compute the Merkle proof of inclusion of their outgoing message. Anytime after the\n    // dispute window passes (~7 days), any user can execute the L1 message by calling Outbox.executeTransaction;\n    // if it reverts, it can be re-executed any number of times and with no upper time-bound.\n    // To read more about the L2 --> L1 lifecycle, see: https://developer.offchainlabs.com/docs/l1_l2_messages#explanation.\n    function sendCrossDomainMessage(\n        address user,\n        address to,\n        bytes memory data\n    ) internal returns (uint256) {\n        // note: this method doesn't support sending ether to L1 together with a call\n        uint256 id = ArbSys(address(100)).sendTxToL1(to, data);\n\n        emit SentCrossDomainMessage(user, to, id, data);\n\n        return id;\n    }\n}\n"
            },
            "contracts/external/avm/interfaces/ArbSys.sol": {
                "content": "// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/54a2109a97c5b1504824c6317d358e2d2733b5a3/contracts/arbitrum/ArbSys.sol\n// with changes only to the solidity version and comments.\n\npragma solidity ^0.8.0;\n\n/**\n * @notice Precompiled contract that exists in every Arbitrum chain at address(100),\n * 0x0000000000000000000000000000000000000064. Exposes a variety of system-level functionality. ArbSys provides\n * systems functionality useful to some Arbitrum contracts. Any contract running on an Arbitrum Chain can call the\n * chain's ArbSys.\n */\ninterface ArbSys {\n    /**\n     * @notice Get internal version number identifying an ArbOS build\n     * @return version number as int\n     */\n    function arbOSVersion() external pure returns (uint256);\n\n    function arbChainID() external view returns (uint256);\n\n    /**\n     * @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)\n     * @return block number as int\n     */\n    function arbBlockNumber() external view returns (uint256);\n\n    /**\n     * @notice Send given amount of Eth to dest from sender.\n     * This is a convenience function, which is equivalent to calling sendTxToL1 with empty calldataForL1.\n     * @param destination recipient address on L1\n     * @return unique identifier for this L2-to-L1 transaction.\n     */\n    function withdrawEth(address destination) external payable returns (uint256);\n\n    /**\n     * @notice Send a transaction to L1\n     * @param destination recipient address on L1\n     * @param calldataForL1 (optional) calldata for L1 contract call\n     * @return a unique identifier for this L2-to-L1 transaction.\n     */\n    function sendTxToL1(address destination, bytes calldata calldataForL1) external payable returns (uint256);\n\n    /**\n     * @notice get the number of transactions issued by the given external account or the account sequence number of the given contract\n     * @param account target account\n     * @return the number of transactions issued by the given external account or the account sequence number of the given contract\n     */\n    function getTransactionCount(address account) external view returns (uint256);\n\n    /**\n     * @notice get the value of target L2 storage slot\n     * This function is only callable from address 0 to prevent contracts from being able to call it\n     * @param account target account\n     * @param index target index of storage slot\n     * @return stotage value for the given account at the given index\n     */\n    function getStorageAt(address account, uint256 index) external view returns (uint256);\n\n    /**\n     * @notice check if current call is coming from l1\n     * @return true if the caller of this was called directly from L1\n     */\n    function isTopLevelCall() external view returns (bool);\n\n    event EthWithdrawal(address indexed destAddr, uint256 amount);\n\n    event L2ToL1Transaction(\n        address caller,\n        address indexed destination,\n        uint256 indexed uniqueId,\n        uint256 indexed batchNumber,\n        uint256 indexInBatch,\n        uint256 arbBlockNum,\n        uint256 ethBlockNum,\n        uint256 timestamp,\n        uint256 callvalue,\n        bytes data\n    );\n}\n"
            },
            "contracts/insured-bridge/avm/Arbitrum_Messenger.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"./Arbitrum_CrossDomainEnabled.sol\";\nimport \"../interfaces/MessengerInterface.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\n\n/**\n * @notice Sends cross chain messages Arbitrum L2 network.\n * @dev This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the\n * BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.\n * @dev This address will be the sender of any L1 --> L2 retryable tickets, so it should be set as the cross domain\n * owner for L2 contracts that expect to receive cross domain messages.\n */\ncontract Arbitrum_Messenger is Ownable, Arbitrum_CrossDomainEnabled, MessengerInterface {\n    event RelayedMessage(\n        address indexed from,\n        address indexed to,\n        uint256 indexed seqNum,\n        address userToRefund,\n        uint256 l1CallValue,\n        uint256 gasLimit,\n        uint256 gasPrice,\n        uint256 maxSubmissionCost,\n        bytes data\n    );\n\n    /**\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\n     */\n    constructor(address _inbox) Arbitrum_CrossDomainEnabled(_inbox) {}\n\n    /**\n     * @notice Sends a message to an account on L2. If this message reverts on l2 for any reason it can either be\n     * resent on L1, or redeemed on L2 manually. To learn more see how \"retryable tickets\" work on Arbitrum\n     * https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\n     * @param target The intended recipient on L2.\n     * @param userToRefund User on L2 to refund extra fees to.\n     * @param l1CallValue Amount of ETH deposited to `target` contract on L2. Used to pay for L2 submission fee and\n     * l2CallValue. This will usually be > 0.\n     * @param gasLimit The gasLimit for the receipt of the message on L2.\n     * @param gasPrice Gas price bid for L2 execution.\n     * @param maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee.\n     * This amount is proportional to the size of `data`.\n     * @param message The data to send to the target (usually calldata to a function with\n     *  `onlyFromCrossDomainAccount()`)\n     */\n    function relayMessage(\n        address target,\n        address userToRefund,\n        uint256 l1CallValue,\n        uint256 gasLimit,\n        uint256 gasPrice,\n        uint256 maxSubmissionCost,\n        bytes memory message\n    ) external payable override onlyOwner {\n        // Since we know the L2 target's address in advance, we don't need to alias an L1 address.\n        uint256 seqNumber =\n            sendTxToL2NoAliassing(target, userToRefund, l1CallValue, maxSubmissionCost, gasLimit, gasPrice, message);\n        emit RelayedMessage(\n            msg.sender,\n            target,\n            seqNumber,\n            userToRefund,\n            l1CallValue,\n            gasLimit,\n            gasPrice,\n            maxSubmissionCost,\n            message\n        );\n    }\n}\n"
            },
            "contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol": {
                "content": "// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol\n// with a change to the solidity version.\npragma solidity ^0.8.0;\n\nimport \"../../external/avm/interfaces/iArbitrum_Inbox.sol\";\nimport \"../../external/avm/interfaces/iArbitrum_Outbox.sol\";\n\nabstract contract Arbitrum_CrossDomainEnabled {\n    iArbitrum_Inbox public immutable inbox;\n\n    /**\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\n     */\n    constructor(address _inbox) {\n        inbox = iArbitrum_Inbox(_inbox);\n    }\n\n    // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\n    // This function will not apply aliassing to the `user` address on L2.\n    // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the\n    // inbox.\n    function sendTxToL2NoAliassing(\n        address target, // Address where transaction will initiate on L2.\n        address user, // Address where excess gas is credited on L2.\n        uint256 l1CallValue, // msg.value deposited to `user` on L2.\n        uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this\n        // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should\n        // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`.\n        uint256 maxGas, // Gas limit for immediate L2 execution attempt.\n        uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt.\n        bytes memory data // ABI encoded data to send to target.\n    ) internal returns (uint256) {\n        // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external\n        // - address destAddr: destination L2 contract address\n        // - uint256 l2CallValue: call value for retryable L2 message\n        // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee\n        // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2\n        // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled\n        // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution\n        // - uint256 gasPriceBid: price bid for L2 execution\n        // - bytes data: ABI encoded data of L2 message\n        uint256 seqNum =\n            inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }(\n                target,\n                0, // we always assume that l2CallValue = 0\n                maxSubmissionCost,\n                user,\n                user,\n                maxGas,\n                gasPriceBid,\n                data\n            );\n        return seqNum;\n    }\n\n    // Copied mostly from: https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol#L31\n    modifier onlyFromCrossDomainAccount(address l2Counterpart) {\n        // a message coming from the counterpart gateway was executed by the bridge\n        IBridge bridge = IBridge(inbox.bridge());\n        require(msg.sender == address(bridge), \"NOT_FROM_BRIDGE\");\n\n        // and the outbox reports that the L2 address of the sender is the counterpart gateway\n        address l2ToL1Sender = iArbitrum_Outbox(bridge.activeOutbox()).l2ToL1Sender();\n        require(l2ToL1Sender == l2Counterpart, \"ONLY_COUNTERPART_GATEWAY\");\n        _;\n    }\n}\n"
            },
            "contracts/external/avm/interfaces/iArbitrum_Inbox.sol": {
                "content": "// SPDX-License-Identifier: Apache-2.0\n\npragma solidity ^0.8.0;\n\ninterface IBridge {\n    function activeOutbox() external view returns (address);\n}\n\ninterface iArbitrum_Inbox {\n    // Retryable tickets are the Arbitrum protocol’s canonical method for passing generalized messages from Ethereum to\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\n    // where any user can re-execute for some fixed period (roughly one week).\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\n    function createRetryableTicketNoRefundAliasRewrite(\n        address destAddr,\n        uint256 l2CallValue,\n        uint256 maxSubmissionCost,\n        address excessFeeRefundAddress,\n        address callValueRefundAddress,\n        uint256 maxGas,\n        uint256 gasPriceBid,\n        bytes calldata data\n    ) external payable returns (uint256);\n\n    function bridge() external view returns (address);\n}\n"
            },
            "contracts/external/avm/interfaces/iArbitrum_Outbox.sol": {
                "content": "// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\n// with changes only to the solidity version.\n\n// SPDX-License-Identifier: Apache-2.0\n\n/*\n * Copyright 2021, Offchain Labs, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *    http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\npragma solidity ^0.8.0;\n\ninterface iArbitrum_Outbox {\n    function l2ToL1Sender() external view returns (address);\n}\n"
            },
            "@openzeppelin/contracts/security/Pausable.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract Pausable is Context {\n    /**\n     * @dev Emitted when the pause is triggered by `account`.\n     */\n    event Paused(address account);\n\n    /**\n     * @dev Emitted when the pause is lifted by `account`.\n     */\n    event Unpaused(address account);\n\n    bool private _paused;\n\n    /**\n     * @dev Initializes the contract in unpaused state.\n     */\n    constructor () {\n        _paused = false;\n    }\n\n    /**\n     * @dev Returns true if the contract is paused, and false otherwise.\n     */\n    function paused() public view virtual returns (bool) {\n        return _paused;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is not paused.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    modifier whenNotPaused() {\n        require(!paused(), \"Pausable: paused\");\n        _;\n    }\n\n    /**\n     * @dev Modifier to make a function callable only when the contract is paused.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    modifier whenPaused() {\n        require(paused(), \"Pausable: not paused\");\n        _;\n    }\n\n    /**\n     * @dev Triggers stopped state.\n     *\n     * Requirements:\n     *\n     * - The contract must not be paused.\n     */\n    function _pause() internal virtual whenNotPaused {\n        _paused = true;\n        emit Paused(_msgSender());\n    }\n\n    /**\n     * @dev Returns to normal state.\n     *\n     * Requirements:\n     *\n     * - The contract must be paused.\n     */\n    function _unpause() internal virtual whenPaused {\n        _paused = false;\n        emit Unpaused(_msgSender());\n    }\n}\n"
            },
            "contracts/external/chainbridge/Bridge.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\nimport \"@openzeppelin/contracts/security/Pausable.sol\";\nimport \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"./interfaces/IDepositExecute.sol\";\nimport \"./interfaces/IBridge.sol\";\nimport \"./interfaces/IERCHandler.sol\";\nimport \"./interfaces/IGenericHandler.sol\";\n\n/**\n    @title Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\n    @author ChainSafe Systems.\n */\ncontract Bridge is Pausable, AccessControl {\n    using SafeMath for uint256;\n\n    uint8 public _chainID;\n    uint256 public _relayerThreshold;\n    uint256 public _totalRelayers;\n    uint256 public _totalProposals;\n    uint256 public _fee;\n    uint256 public _expiry;\n\n    enum Vote { No, Yes }\n\n    enum ProposalStatus { Inactive, Active, Passed, Executed, Cancelled }\n\n    struct Proposal {\n        bytes32 _resourceID;\n        bytes32 _dataHash;\n        address[] _yesVotes;\n        address[] _noVotes;\n        ProposalStatus _status;\n        uint256 _proposedBlock;\n    }\n\n    // destinationChainID => number of deposits\n    mapping(uint8 => uint64) public _depositCounts;\n    // resourceID => handler address\n    mapping(bytes32 => address) public _resourceIDToHandlerAddress;\n    // depositNonce => destinationChainID => bytes\n    mapping(uint64 => mapping(uint8 => bytes)) public _depositRecords;\n    // destinationChainID + depositNonce => dataHash => Proposal\n    mapping(uint72 => mapping(bytes32 => Proposal)) public _proposals;\n    // destinationChainID + depositNonce => dataHash => relayerAddress => bool\n    mapping(uint72 => mapping(bytes32 => mapping(address => bool))) public _hasVotedOnProposal;\n\n    event RelayerThresholdChanged(uint256 indexed newThreshold);\n    event RelayerAdded(address indexed relayer);\n    event RelayerRemoved(address indexed relayer);\n    event Deposit(uint8 indexed destinationChainID, bytes32 indexed resourceID, uint64 indexed depositNonce);\n    event ProposalEvent(\n        uint8 indexed originChainID,\n        uint64 indexed depositNonce,\n        ProposalStatus indexed status,\n        bytes32 resourceID,\n        bytes32 dataHash\n    );\n\n    event ProposalVote(\n        uint8 indexed originChainID,\n        uint64 indexed depositNonce,\n        ProposalStatus indexed status,\n        bytes32 resourceID\n    );\n\n    bytes32 public constant RELAYER_ROLE = keccak256(\"RELAYER_ROLE\");\n\n    modifier onlyAdmin() {\n        _onlyAdmin();\n        _;\n    }\n\n    modifier onlyAdminOrRelayer() {\n        _onlyAdminOrRelayer();\n        _;\n    }\n\n    modifier onlyRelayers() {\n        _onlyRelayers();\n        _;\n    }\n\n    function _onlyAdminOrRelayer() private view {\n        require(\n            hasRole(DEFAULT_ADMIN_ROLE, msg.sender) || hasRole(RELAYER_ROLE, msg.sender),\n            \"sender is not relayer or admin\"\n        );\n    }\n\n    function _onlyAdmin() private view {\n        require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), \"sender doesn't have admin role\");\n    }\n\n    function _onlyRelayers() private view {\n        require(hasRole(RELAYER_ROLE, msg.sender), \"sender doesn't have relayer role\");\n    }\n\n    /**\n        @notice Initializes Bridge, creates and grants {msg.sender} the admin role,\n        creates and grants {initialRelayers} the relayer role.\n        @param chainID ID of chain the Bridge contract exists on.\n        @param initialRelayers Addresses that should be initially granted the relayer role.\n        @param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed.\n     */\n    constructor(\n        uint8 chainID,\n        address[] memory initialRelayers,\n        uint256 initialRelayerThreshold,\n        uint256 fee,\n        uint256 expiry\n    ) {\n        _chainID = chainID;\n        _relayerThreshold = initialRelayerThreshold;\n        _fee = fee;\n        _expiry = expiry;\n\n        _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n        _setRoleAdmin(RELAYER_ROLE, DEFAULT_ADMIN_ROLE);\n\n        for (uint256 i; i < initialRelayers.length; i++) {\n            grantRole(RELAYER_ROLE, initialRelayers[i]);\n            _totalRelayers++;\n        }\n    }\n\n    /**\n        @notice Returns true if {relayer} has the relayer role.\n        @param relayer Address to check.\n     */\n    function isRelayer(address relayer) external view returns (bool) {\n        return hasRole(RELAYER_ROLE, relayer);\n    }\n\n    /**\n        @notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\n        @notice Only callable by an address that currently has the admin role.\n        @param newAdmin Address that admin role will be granted to.\n     */\n    function renounceAdmin(address newAdmin) external onlyAdmin {\n        grantRole(DEFAULT_ADMIN_ROLE, newAdmin);\n        renounceRole(DEFAULT_ADMIN_ROLE, msg.sender);\n    }\n\n    /**\n        @notice Pauses deposits, proposal creation and voting, and deposit executions.\n        @notice Only callable by an address that currently has the admin role.\n     */\n    function adminPauseTransfers() external onlyAdmin {\n        _pause();\n    }\n\n    /**\n        @notice Unpauses deposits, proposal creation and voting, and deposit executions.\n        @notice Only callable by an address that currently has the admin role.\n     */\n    function adminUnpauseTransfers() external onlyAdmin {\n        _unpause();\n    }\n\n    /**\n        @notice Modifies the number of votes required for a proposal to be considered passed.\n        @notice Only callable by an address that currently has the admin role.\n        @param newThreshold Value {_relayerThreshold} will be changed to.\n        @notice Emits {RelayerThresholdChanged} event.\n     */\n    function adminChangeRelayerThreshold(uint256 newThreshold) external onlyAdmin {\n        _relayerThreshold = newThreshold;\n        emit RelayerThresholdChanged(newThreshold);\n    }\n\n    /**\n        @notice Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.\n        @notice Only callable by an address that currently has the admin role.\n        @param relayerAddress Address of relayer to be added.\n        @notice Emits {RelayerAdded} event.\n     */\n    function adminAddRelayer(address relayerAddress) external onlyAdmin {\n        require(!hasRole(RELAYER_ROLE, relayerAddress), \"addr already has relayer role!\");\n        grantRole(RELAYER_ROLE, relayerAddress);\n        emit RelayerAdded(relayerAddress);\n        _totalRelayers++;\n    }\n\n    /**\n        @notice Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.\n        @notice Only callable by an address that currently has the admin role.\n        @param relayerAddress Address of relayer to be removed.\n        @notice Emits {RelayerRemoved} event.\n     */\n    function adminRemoveRelayer(address relayerAddress) external onlyAdmin {\n        require(hasRole(RELAYER_ROLE, relayerAddress), \"addr doesn't have relayer role!\");\n        revokeRole(RELAYER_ROLE, relayerAddress);\n        emit RelayerRemoved(relayerAddress);\n        _totalRelayers--;\n    }\n\n    /**\n        @notice Sets a new resource for handler contracts that use the IERCHandler interface,\n        and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n        @notice Only callable by an address that currently has the admin role.\n        @param handlerAddress Address of handler resource will be set for.\n        @param resourceID ResourceID to be used when making deposits.\n        @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\n     */\n    function adminSetResource(\n        address handlerAddress,\n        bytes32 resourceID,\n        address tokenAddress\n    ) external onlyAdmin {\n        _resourceIDToHandlerAddress[resourceID] = handlerAddress;\n        IERCHandler handler = IERCHandler(handlerAddress);\n        handler.setResource(resourceID, tokenAddress);\n    }\n\n    /**\n        @notice Sets a new resource for handler contracts that use the IGenericHandler interface,\n        and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n        @notice Only callable by an address that currently has the admin role.\n        @param handlerAddress Address of handler resource will be set for.\n        @param resourceID ResourceID to be used when making deposits.\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n     */\n    function adminSetGenericResource(\n        address handlerAddress,\n        bytes32 resourceID,\n        address contractAddress,\n        bytes4 depositFunctionSig,\n        bytes4 executeFunctionSig\n    ) external onlyAdmin {\n        _resourceIDToHandlerAddress[resourceID] = handlerAddress;\n        IGenericHandler handler = IGenericHandler(handlerAddress);\n        handler.setResource(resourceID, contractAddress, depositFunctionSig, executeFunctionSig);\n    }\n\n    /**\n        @notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n        @notice Only callable by an address that currently has the admin role.\n        @param handlerAddress Address of handler resource will be set for.\n        @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\n     */\n    function adminSetBurnable(address handlerAddress, address tokenAddress) external onlyAdmin {\n        IERCHandler handler = IERCHandler(handlerAddress);\n        handler.setBurnable(tokenAddress);\n    }\n\n    /**\n        @notice Returns a proposal.\n        @param originChainID Chain ID deposit originated from.\n        @param depositNonce ID of proposal generated by proposal's origin Bridge contract.\n        @param dataHash Hash of data to be provided when deposit proposal is executed.\n        @return Proposal which consists of:\n        - _dataHash Hash of data to be provided when deposit proposal is executed.\n        - _yesVotes Number of votes in favor of proposal.\n        - _noVotes Number of votes against proposal.\n        - _status Current status of proposal.\n     */\n    function getProposal(\n        uint8 originChainID,\n        uint64 depositNonce,\n        bytes32 dataHash\n    ) external view returns (Proposal memory) {\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(originChainID);\n        return _proposals[nonceAndID][dataHash];\n    }\n\n    /**\n        @notice Changes deposit fee.\n        @notice Only callable by admin.\n        @param newFee Value {_fee} will be updated to.\n     */\n    function adminChangeFee(uint256 newFee) external onlyAdmin {\n        require(_fee != newFee, \"Current fee is equal to new fee\");\n        _fee = newFee;\n    }\n\n    /**\n        @notice Used to manually withdraw funds from ERC safes.\n        @param handlerAddress Address of handler to withdraw from.\n        @param tokenAddress Address of token to withdraw.\n        @param recipient Address to withdraw tokens to.\n        @param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.\n     */\n    function adminWithdraw(\n        address handlerAddress,\n        address tokenAddress,\n        address recipient,\n        uint256 amountOrTokenID\n    ) external onlyAdmin {\n        IERCHandler handler = IERCHandler(handlerAddress);\n        handler.withdraw(tokenAddress, recipient, amountOrTokenID);\n    }\n\n    /**\n        @notice Initiates a transfer using a specified handler contract.\n        @notice Only callable when Bridge is not paused.\n        @param destinationChainID ID of chain deposit will be bridged to.\n        @param resourceID ResourceID used to find address of handler to be used for deposit.\n        @param data Additional data to be passed to specified handler.\n        @notice Emits {Deposit} event.\n     */\n    function deposit(\n        uint8 destinationChainID,\n        bytes32 resourceID,\n        bytes calldata data\n    ) external payable whenNotPaused {\n        require(msg.value == _fee, \"Incorrect fee supplied\");\n\n        address handler = _resourceIDToHandlerAddress[resourceID];\n        require(handler != address(0), \"resourceID not mapped to handler\");\n\n        uint64 depositNonce = ++_depositCounts[destinationChainID];\n        _depositRecords[depositNonce][destinationChainID] = data;\n\n        IDepositExecute depositHandler = IDepositExecute(handler);\n        depositHandler.deposit(resourceID, destinationChainID, depositNonce, msg.sender, data);\n\n        emit Deposit(destinationChainID, resourceID, depositNonce);\n    }\n\n    /**\n        @notice When called, {msg.sender} will be marked as voting in favor of proposal.\n        @notice Only callable by relayers when Bridge is not paused.\n        @param chainID ID of chain deposit originated from.\n        @param depositNonce ID of deposited generated by origin Bridge contract.\n        @param dataHash Hash of data provided when deposit was made.\n        @notice Proposal must not have already been passed or executed.\n        @notice {msg.sender} must not have already voted on proposal.\n        @notice Emits {ProposalEvent} event with status indicating the proposal status.\n        @notice Emits {ProposalVote} event.\n     */\n    function voteProposal(\n        uint8 chainID,\n        uint64 depositNonce,\n        bytes32 resourceID,\n        bytes32 dataHash\n    ) external onlyRelayers whenNotPaused {\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\n        Proposal storage proposal = _proposals[nonceAndID][dataHash];\n\n        require(_resourceIDToHandlerAddress[resourceID] != address(0), \"no handler for resourceID\");\n        require(uint256(proposal._status) <= 1, \"proposal already passed/executed/cancelled\");\n        require(!_hasVotedOnProposal[nonceAndID][dataHash][msg.sender], \"relayer already voted\");\n\n        if (uint256(proposal._status) == 0) {\n            ++_totalProposals;\n            _proposals[nonceAndID][dataHash] = Proposal({\n                _resourceID: resourceID,\n                _dataHash: dataHash,\n                _yesVotes: new address[](1),\n                _noVotes: new address[](0),\n                _status: ProposalStatus.Active,\n                _proposedBlock: block.number\n            });\n\n            proposal._yesVotes[0] = msg.sender;\n            emit ProposalEvent(chainID, depositNonce, ProposalStatus.Active, resourceID, dataHash);\n        } else {\n            if (block.number.sub(proposal._proposedBlock) > _expiry) {\n                // if the number of blocks that has passed since this proposal was\n                // submitted exceeds the expiry threshold set, cancel the proposal\n                proposal._status = ProposalStatus.Cancelled;\n                emit ProposalEvent(chainID, depositNonce, ProposalStatus.Cancelled, resourceID, dataHash);\n            } else {\n                require(dataHash == proposal._dataHash, \"datahash mismatch\");\n                proposal._yesVotes.push(msg.sender);\n            }\n        }\n        if (proposal._status != ProposalStatus.Cancelled) {\n            _hasVotedOnProposal[nonceAndID][dataHash][msg.sender] = true;\n            emit ProposalVote(chainID, depositNonce, proposal._status, resourceID);\n\n            // If _depositThreshold is set to 1, then auto finalize\n            // or if _relayerThreshold has been exceeded\n            if (_relayerThreshold <= 1 || proposal._yesVotes.length >= _relayerThreshold) {\n                proposal._status = ProposalStatus.Passed;\n\n                emit ProposalEvent(chainID, depositNonce, ProposalStatus.Passed, resourceID, dataHash);\n            }\n        }\n    }\n\n    /**\n        @notice Executes a deposit proposal that is considered passed using a specified handler contract.\n        @notice Only callable by relayers when Bridge is not paused.\n        @param chainID ID of chain deposit originated from.\n        @param depositNonce ID of deposited generated by origin Bridge contract.\n        @param dataHash Hash of data originally provided when deposit was made.\n        @notice Proposal must be past expiry threshold.\n        @notice Emits {ProposalEvent} event with status {Cancelled}.\n     */\n    function cancelProposal(\n        uint8 chainID,\n        uint64 depositNonce,\n        bytes32 dataHash\n    ) public onlyAdminOrRelayer {\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\n        Proposal storage proposal = _proposals[nonceAndID][dataHash];\n\n        require(proposal._status != ProposalStatus.Cancelled, \"Proposal already cancelled\");\n        require(block.number.sub(proposal._proposedBlock) > _expiry, \"Proposal not at expiry threshold\");\n\n        proposal._status = ProposalStatus.Cancelled;\n        emit ProposalEvent(chainID, depositNonce, ProposalStatus.Cancelled, proposal._resourceID, proposal._dataHash);\n    }\n\n    /**\n        @notice Executes a deposit proposal that is considered passed using a specified handler contract.\n        @notice Only callable by relayers when Bridge is not paused.\n        @param chainID ID of chain deposit originated from.\n        @param resourceID ResourceID to be used when making deposits.\n        @param depositNonce ID of deposited generated by origin Bridge contract.\n        @param data Data originally provided when deposit was made.\n        @notice Proposal must have Passed status.\n        @notice Hash of {data} must equal proposal's {dataHash}.\n        @notice Emits {ProposalEvent} event with status {Executed}.\n     */\n    function executeProposal(\n        uint8 chainID,\n        uint64 depositNonce,\n        bytes calldata data,\n        bytes32 resourceID\n    ) external onlyRelayers whenNotPaused {\n        address handler = _resourceIDToHandlerAddress[resourceID];\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\n        bytes32 dataHash = keccak256(abi.encodePacked(handler, data));\n        Proposal storage proposal = _proposals[nonceAndID][dataHash];\n\n        require(proposal._status != ProposalStatus.Inactive, \"proposal is not active\");\n        require(proposal._status == ProposalStatus.Passed, \"proposal already transferred\");\n        require(dataHash == proposal._dataHash, \"data doesn't match datahash\");\n\n        proposal._status = ProposalStatus.Executed;\n\n        IDepositExecute depositHandler = IDepositExecute(_resourceIDToHandlerAddress[proposal._resourceID]);\n        depositHandler.executeProposal(proposal._resourceID, data);\n\n        emit ProposalEvent(chainID, depositNonce, proposal._status, proposal._resourceID, proposal._dataHash);\n    }\n\n    /**\n        @notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\n        This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\n        @param addrs Array of addresses to transfer {amounts} to.\n        @param amounts Array of amonuts to transfer to {addrs}.\n     */\n    function transferFunds(address payable[] calldata addrs, uint256[] calldata amounts) external onlyAdmin {\n        for (uint256 i = 0; i < addrs.length; i++) {\n            addrs[i].transfer(amounts[i]);\n        }\n    }\n}\n"
            },
            "@openzeppelin/contracts/access/AccessControl.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../utils/Context.sol\";\nimport \"../utils/Strings.sol\";\nimport \"../utils/introspection/ERC165.sol\";\n\n/**\n * @dev External interface of AccessControl declared to support ERC165 detection.\n */\ninterface IAccessControl {\n    function hasRole(bytes32 role, address account) external view returns (bool);\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\n    function grantRole(bytes32 role, address account) external;\n    function revokeRole(bytes32 role, address account) external;\n    function renounceRole(bytes32 role, address account) external;\n}\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```\n * function foo() public {\n *     require(hasRole(MY_ROLE, msg.sender));\n *     ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it.\n */\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\n    struct RoleData {\n        mapping (address => bool) members;\n        bytes32 adminRole;\n    }\n\n    mapping (bytes32 => RoleData) private _roles;\n\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n    /**\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n     *\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n     * {RoleAdminChanged} not being emitted signaling this.\n     *\n     * _Available since v3.1._\n     */\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n    /**\n     * @dev Emitted when `account` is granted `role`.\n     *\n     * `sender` is the account that originated the contract call, an admin role\n     * bearer except when using {_setupRole}.\n     */\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Emitted when `account` is revoked `role`.\n     *\n     * `sender` is the account that originated the contract call:\n     *   - if using `revokeRole`, it is the admin role bearer\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\n     */\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n    /**\n     * @dev Modifier that checks that an account has a specific role. Reverts\n     * with a standardized message including the required role.\n     *\n     * The format of the revert reason is given by the following regular expression:\n     *\n     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\n     *\n     * _Available since v4.1._\n     */\n    modifier onlyRole(bytes32 role) {\n        _checkRole(role, _msgSender());\n        _;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IAccessControl).interfaceId\n            || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev Returns `true` if `account` has been granted `role`.\n     */\n    function hasRole(bytes32 role, address account) public view override returns (bool) {\n        return _roles[role].members[account];\n    }\n\n    /**\n     * @dev Revert with a standard message if `account` is missing `role`.\n     *\n     * The format of the revert reason is given by the following regular expression:\n     *\n     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\n     */\n    function _checkRole(bytes32 role, address account) internal view {\n        if(!hasRole(role, account)) {\n            revert(string(abi.encodePacked(\n                \"AccessControl: account \",\n                Strings.toHexString(uint160(account), 20),\n                \" is missing role \",\n                Strings.toHexString(uint256(role), 32)\n            )));\n        }\n    }\n\n    /**\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\n     * {revokeRole}.\n     *\n     * To change a role's admin, use {_setRoleAdmin}.\n     */\n    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {\n        return _roles[role].adminRole;\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n        _grantRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from `account`.\n     *\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\n     *\n     * Requirements:\n     *\n     * - the caller must have ``role``'s admin role.\n     */\n    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\n        _revokeRole(role, account);\n    }\n\n    /**\n     * @dev Revokes `role` from the calling account.\n     *\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\n     * purpose is to provide a mechanism for accounts to lose their privileges\n     * if they are compromised (such as when a trusted device is misplaced).\n     *\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\n     * event.\n     *\n     * Requirements:\n     *\n     * - the caller must be `account`.\n     */\n    function renounceRole(bytes32 role, address account) public virtual override {\n        require(account == _msgSender(), \"AccessControl: can only renounce roles for self\");\n\n        _revokeRole(role, account);\n    }\n\n    /**\n     * @dev Grants `role` to `account`.\n     *\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\n     * event. Note that unlike {grantRole}, this function doesn't perform any\n     * checks on the calling account.\n     *\n     * [WARNING]\n     * ====\n     * This function should only be called from the constructor when setting\n     * up the initial roles for the system.\n     *\n     * Using this function in any other way is effectively circumventing the admin\n     * system imposed by {AccessControl}.\n     * ====\n     */\n    function _setupRole(bytes32 role, address account) internal virtual {\n        _grantRole(role, account);\n    }\n\n    /**\n     * @dev Sets `adminRole` as ``role``'s admin role.\n     *\n     * Emits a {RoleAdminChanged} event.\n     */\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);\n        _roles[role].adminRole = adminRole;\n    }\n\n    function _grantRole(bytes32 role, address account) private {\n        if (!hasRole(role, account)) {\n            _roles[role].members[account] = true;\n            emit RoleGranted(role, account, _msgSender());\n        }\n    }\n\n    function _revokeRole(bytes32 role, address account) private {\n        if (hasRole(role, account)) {\n            _roles[role].members[account] = false;\n            emit RoleRevoked(role, account, _msgSender());\n        }\n    }\n}\n"
            },
            "@openzeppelin/contracts/utils/math/SafeMath.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n// CAUTION\n// This version of SafeMath should only be used with Solidity 0.8 or later,\n// because it relies on the compiler's built in overflow checks.\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler\n * now has built in overflow checking.\n */\nlibrary SafeMath {\n    /**\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            uint256 c = a + b;\n            if (c < a) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b > a) return (false, 0);\n            return (true, a - b);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n            // benefit is lost if 'b' is also tested.\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n            if (a == 0) return (true, 0);\n            uint256 c = a * b;\n            if (c / a != b) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a / b);\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a % b);\n        }\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a + b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting on\n     * overflow (when the result is negative).\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a * b;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator.\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting when dividing by zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a % b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n     * overflow (when the result is negative).\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {trySub}.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        unchecked {\n            require(b <= a, errorMessage);\n            return a - b;\n        }\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        unchecked {\n            require(b > 0, errorMessage);\n            return a / b;\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting with custom message when dividing by zero.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryMod}.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        unchecked {\n            require(b > 0, errorMessage);\n            return a % b;\n        }\n    }\n}\n"
            },
            "contracts/external/chainbridge/interfaces/IDepositExecute.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n    @title Interface for handler contracts that support deposits and deposit executions.\n    @author ChainSafe Systems.\n */\ninterface IDepositExecute {\n    /**\n        @notice It is intended that deposit are made using the Bridge contract.\n        @param destinationChainID Chain ID deposit is expected to be bridged to.\n        @param depositNonce This value is generated as an ID by the Bridge contract.\n        @param depositer Address of account making the deposit in the Bridge contract.\n        @param data Consists of additional data needed for a specific deposit.\n     */\n    function deposit(\n        bytes32 resourceID,\n        uint8 destinationChainID,\n        uint64 depositNonce,\n        address depositer,\n        bytes calldata data\n    ) external;\n\n    /**\n        @notice It is intended that proposals are executed by the Bridge contract.\n        @param data Consists of additional data needed for a specific deposit execution.\n     */\n    function executeProposal(bytes32 resourceID, bytes calldata data) external;\n}\n"
            },
            "contracts/external/chainbridge/interfaces/IBridge.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n    @title Interface for Bridge contract.\n    @author ChainSafe Systems.\n */\ninterface IBridge {\n    /**\n        @notice Exposing getter for {_chainID} instead of forcing the use of call.\n        @return uint8 The {_chainID} that is currently set for the Bridge contract.\n     */\n    function _chainID() external returns (uint8);\n\n    function deposit(\n        uint8 destinationChainID,\n        bytes32 resourceID,\n        bytes calldata data\n    ) external;\n}\n"
            },
            "contracts/external/chainbridge/interfaces/IERCHandler.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n    @title Interface to be used with handlers that support ERC20s and ERC721s.\n    @author ChainSafe Systems.\n */\ninterface IERCHandler {\n    /**\n        @notice Correlates {resourceID} with {contractAddress}.\n        @param resourceID ResourceID to be used when making deposits.\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n     */\n    function setResource(bytes32 resourceID, address contractAddress) external;\n\n    /**\n        @notice Marks {contractAddress} as mintable/burnable.\n        @param contractAddress Address of contract to be used when making or executing deposits.\n     */\n    function setBurnable(address contractAddress) external;\n\n    /**\n        @notice Used to manually release funds from ERC safes.\n        @param tokenAddress Address of token contract to release.\n        @param recipient Address to release tokens to.\n        @param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to release.\n     */\n    function withdraw(\n        address tokenAddress,\n        address recipient,\n        uint256 amountOrTokenID\n    ) external;\n}\n"
            },
            "contracts/external/chainbridge/interfaces/IGenericHandler.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n    @title Interface for handler that handles generic deposits and deposit executions.\n    @dev Copied directly from here: https://github.com/ChainSafe/chainbridge-solidity/releases/tag/v1.0.0.\n    @author ChainSafe Systems.\n */\ninterface IGenericHandler {\n    /**\n        @notice Correlates {resourceID} with {contractAddress}, {depositFunctionSig}, and {executeFunctionSig}.\n        @param resourceID ResourceID to be used when making deposits.\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n        @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\n        @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.\n     */\n    function setResource(\n        bytes32 resourceID,\n        address contractAddress,\n        bytes4 depositFunctionSig,\n        bytes4 executeFunctionSig\n    ) external;\n}\n"
            },
            "@openzeppelin/contracts/utils/Strings.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    bytes16 private constant alphabet = \"0123456789abcdef\";\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        // Inspired by OraclizeAPI's implementation - MIT licence\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n        if (value == 0) {\n            return \"0\";\n        }\n        uint256 temp = value;\n        uint256 digits;\n        while (temp != 0) {\n            digits++;\n            temp /= 10;\n        }\n        bytes memory buffer = new bytes(digits);\n        while (value != 0) {\n            digits -= 1;\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\n            value /= 10;\n        }\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        if (value == 0) {\n            return \"0x00\";\n        }\n        uint256 temp = value;\n        uint256 length = 0;\n        while (temp != 0) {\n            length++;\n            temp >>= 8;\n        }\n        return toHexString(value, length);\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = alphabet[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, \"Strings: hex length insufficient\");\n        return string(buffer);\n    }\n\n}\n"
            },
            "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"
            },
            "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"
            },
            "contracts/external/chainbridge/handlers/GenericHandler.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"../interfaces/IGenericHandler.sol\";\n\n/**\n    @title Handles generic deposits and deposit executions.\n    @author ChainSafe Systems.\n    @notice This contract is intended to be used with the Bridge contract.\n */\ncontract GenericHandler is IGenericHandler {\n    address public _bridgeAddress;\n\n    struct DepositRecord {\n        uint8 _destinationChainID;\n        address _depositer;\n        bytes32 _resourceID;\n        bytes _metaData;\n    }\n\n    // depositNonce => Deposit Record\n    mapping(uint8 => mapping(uint64 => DepositRecord)) public _depositRecords;\n\n    // resourceID => contract address\n    mapping(bytes32 => address) public _resourceIDToContractAddress;\n\n    // contract address => resourceID\n    mapping(address => bytes32) public _contractAddressToResourceID;\n\n    // contract address => deposit function signature\n    mapping(address => bytes4) public _contractAddressToDepositFunctionSignature;\n\n    // contract address => execute proposal function signature\n    mapping(address => bytes4) public _contractAddressToExecuteFunctionSignature;\n\n    // token contract address => is whitelisted\n    mapping(address => bool) public _contractWhitelist;\n\n    modifier onlyBridge() {\n        _onlyBridge();\n        _;\n    }\n\n    function _onlyBridge() private view {\n        require(msg.sender == _bridgeAddress, \"sender must be bridge contract\");\n    }\n\n    /**\n        @param bridgeAddress Contract address of previously deployed Bridge.\n        @param initialResourceIDs Resource IDs used to identify a specific contract address.\n        These are the Resource IDs this contract will initially support.\n        @param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\n        called to perform deposit and execution calls.\n        @param initialDepositFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\n        and are the function that will be called when executing {deposit}\n        @param initialExecuteFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\n        and are the function that will be called when executing {executeProposal}\n\n        @dev {initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures},\n        and {initialExecuteFunctionSignatures} must all have the same length. Also,\n        values must be ordered in the way that that index x of any mentioned array\n        must be intended for value x of any other array, e.g. {initialContractAddresses}[0]\n        is the intended address for {initialDepositFunctionSignatures}[0].\n     */\n    constructor(\n        address bridgeAddress,\n        bytes32[] memory initialResourceIDs,\n        address[] memory initialContractAddresses,\n        bytes4[] memory initialDepositFunctionSignatures,\n        bytes4[] memory initialExecuteFunctionSignatures\n    ) {\n        require(\n            initialResourceIDs.length == initialContractAddresses.length,\n            \"initialResourceIDs and initialContractAddresses len mismatch\"\n        );\n\n        require(\n            initialContractAddresses.length == initialDepositFunctionSignatures.length,\n            \"provided contract addresses and function signatures len mismatch\"\n        );\n\n        require(\n            initialDepositFunctionSignatures.length == initialExecuteFunctionSignatures.length,\n            \"provided deposit and execute function signatures len mismatch\"\n        );\n\n        _bridgeAddress = bridgeAddress;\n\n        for (uint256 i = 0; i < initialResourceIDs.length; i++) {\n            _setResource(\n                initialResourceIDs[i],\n                initialContractAddresses[i],\n                initialDepositFunctionSignatures[i],\n                initialExecuteFunctionSignatures[i]\n            );\n        }\n    }\n\n    /**\n        @param depositNonce This ID will have been generated by the Bridge contract.\n        @param destId ID of chain deposit will be bridged to.\n        @return DepositRecord which consists of:\n        - _destinationChainID ChainID deposited tokens are intended to end up on.\n        - _resourceID ResourceID used when {deposit} was executed.\n        - _depositer Address that initially called {deposit} in the Bridge contract.\n        - _metaData Data to be passed to method executed in corresponding {resourceID} contract.\n    */\n    function getDepositRecord(uint64 depositNonce, uint8 destId) external view returns (DepositRecord memory) {\n        return _depositRecords[destId][depositNonce];\n    }\n\n    /**\n        @notice First verifies {_resourceIDToContractAddress}[{resourceID}] and\n        {_contractAddressToResourceID}[{contractAddress}] are not already set,\n        then sets {_resourceIDToContractAddress} with {contractAddress},\n        {_contractAddressToResourceID} with {resourceID},\n        {_contractAddressToDepositFunctionSignature} with {depositFunctionSig},\n        {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig},\n        and {_contractWhitelist} to true for {contractAddress}.\n        @param resourceID ResourceID to be used when making deposits.\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n        @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\n        @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.\n     */\n    function setResource(\n        bytes32 resourceID,\n        address contractAddress,\n        bytes4 depositFunctionSig,\n        bytes4 executeFunctionSig\n    ) external override onlyBridge {\n        _setResource(resourceID, contractAddress, depositFunctionSig, executeFunctionSig);\n    }\n\n    /**\n        @notice A deposit is initiatied by making a deposit in the Bridge contract.\n        @param destinationChainID Chain ID deposit is expected to be bridged to.\n        @param depositNonce This value is generated as an ID by the Bridge contract.\n        @param depositer Address of account making the deposit in the Bridge contract.\n        @notice {contractAddress} is required to be whitelisted\n        @notice If {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set,\n        {metaData} is expected to consist of needed function arguments.\n     */\n    function deposit(\n        bytes32 resourceID,\n        uint8 destinationChainID,\n        uint64 depositNonce,\n        address depositer,\n        bytes calldata\n    ) external onlyBridge {\n        bytes32 lenMetadata;\n        bytes memory metadata;\n\n        assembly {\n            // Load length of metadata from data + 64\n            lenMetadata := calldataload(0xC4)\n            // Load free memory pointer\n            metadata := mload(0x40)\n\n            mstore(0x40, add(0x20, add(metadata, lenMetadata)))\n\n            // func sig (4) + destinationChainId (padded to 32) + depositNonce (32) + depositor (32) +\n            // bytes length (32) + resourceId (32) + length (32) = 0xC4\n\n            calldatacopy(\n                metadata, // copy to metadata\n                0xC4, // copy from calldata after metadata length declaration @0xC4\n                sub(calldatasize(), 0xC4) // copy size (calldatasize - (0xC4 + the space metaData takes up))\n            )\n        }\n\n        address contractAddress = _resourceIDToContractAddress[resourceID];\n        require(_contractWhitelist[contractAddress], \"provided contractAddress is not whitelisted\");\n\n        bytes4 sig = _contractAddressToDepositFunctionSignature[contractAddress];\n        if (sig != bytes4(0)) {\n            bytes memory callData = abi.encodePacked(sig, metadata);\n            (bool success, ) = contractAddress.call(callData);\n            require(success, \"delegatecall to contractAddress failed\");\n        }\n\n        _depositRecords[destinationChainID][depositNonce] = DepositRecord(\n            destinationChainID,\n            depositer,\n            resourceID,\n            metadata\n        );\n    }\n\n    /**\n        @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n        @notice {contractAddress} is required to be whitelisted\n        @notice If {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set,\n        {metaData} is expected to consist of needed function arguments.\n     */\n    function executeProposal(bytes32 resourceID, bytes calldata) external onlyBridge {\n        bytes memory metaData;\n        assembly {\n            // metadata has variable length\n            // load free memory pointer to store metadata\n            metaData := mload(0x40)\n            // first 32 bytes of variable length in storage refer to length\n            let lenMeta := calldataload(0x64)\n            mstore(0x40, add(0x60, add(metaData, lenMeta)))\n\n            // in the calldata, metadata is stored @0x64 after accounting for function signature, and 2 previous params\n            calldatacopy(\n                metaData, // copy to metaData\n                0x64, // copy from calldata after data length declaration at 0x64\n                sub(calldatasize(), 0x64) // copy size (calldatasize - 0x64)\n            )\n        }\n\n        address contractAddress = _resourceIDToContractAddress[resourceID];\n        require(_contractWhitelist[contractAddress], \"provided contractAddress is not whitelisted\");\n\n        bytes4 sig = _contractAddressToExecuteFunctionSignature[contractAddress];\n        if (sig != bytes4(0)) {\n            bytes memory callData = abi.encodePacked(sig, metaData);\n            (bool success, ) = contractAddress.call(callData);\n            require(success, \"delegatecall to contractAddress failed\");\n        }\n    }\n\n    function _setResource(\n        bytes32 resourceID,\n        address contractAddress,\n        bytes4 depositFunctionSig,\n        bytes4 executeFunctionSig\n    ) internal {\n        _resourceIDToContractAddress[resourceID] = contractAddress;\n        _contractAddressToResourceID[contractAddress] = resourceID;\n        _contractAddressToDepositFunctionSignature[contractAddress] = depositFunctionSig;\n        _contractAddressToExecuteFunctionSignature[contractAddress] = executeFunctionSig;\n\n        _contractWhitelist[contractAddress] = true;\n    }\n}\n"
            },
            "contracts/common/implementation/FixedPoint.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\";\n\n/**\n * @title Library for fixed point arithmetic on uints\n */\nlibrary FixedPoint {\n    using SafeMath for uint256;\n    using SignedSafeMath for int256;\n\n    // Supports 18 decimals. E.g., 1e18 represents \"1\", 5e17 represents \"0.5\".\n    // For unsigned values:\n    //   This can represent a value up to (2^256 - 1)/10^18 = ~10^59. 10^59 will be stored internally as uint256 10^77.\n    uint256 private constant FP_SCALING_FACTOR = 10**18;\n\n    // --------------------------------------- UNSIGNED -----------------------------------------------------------------------------\n    struct Unsigned {\n        uint256 rawValue;\n    }\n\n    /**\n     * @notice Constructs an `Unsigned` from an unscaled uint, e.g., `b=5` gets stored internally as `5*(10**18)`.\n     * @param a uint to convert into a FixedPoint.\n     * @return the converted FixedPoint.\n     */\n    function fromUnscaledUint(uint256 a) internal pure returns (Unsigned memory) {\n        return Unsigned(a.mul(FP_SCALING_FACTOR));\n    }\n\n    /**\n     * @notice Whether `a` is equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if equal, or False.\n     */\n    function isEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue == fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if equal, or False.\n     */\n    function isEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue == b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue > b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue > fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(uint256 a, Unsigned memory b) internal pure returns (bool) {\n        return fromUnscaledUint(a).rawValue > b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue >= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue >= fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(uint256 a, Unsigned memory b) internal pure returns (bool) {\n        return fromUnscaledUint(a).rawValue >= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue < b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue < fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(uint256 a, Unsigned memory b) internal pure returns (bool) {\n        return fromUnscaledUint(a).rawValue < b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue <= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue <= fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(uint256 a, Unsigned memory b) internal pure returns (bool) {\n        return fromUnscaledUint(a).rawValue <= b.rawValue;\n    }\n\n    /**\n     * @notice The minimum of `a` and `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the minimum of `a` and `b`.\n     */\n    function min(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return a.rawValue < b.rawValue ? a : b;\n    }\n\n    /**\n     * @notice The maximum of `a` and `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the maximum of `a` and `b`.\n     */\n    function max(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return a.rawValue > b.rawValue ? a : b;\n    }\n\n    /**\n     * @notice Adds two `Unsigned`s, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the sum of `a` and `b`.\n     */\n    function add(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return Unsigned(a.rawValue.add(b.rawValue));\n    }\n\n    /**\n     * @notice Adds an `Unsigned` to an unscaled uint, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return the sum of `a` and `b`.\n     */\n    function add(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        return add(a, fromUnscaledUint(b));\n    }\n\n    /**\n     * @notice Subtracts two `Unsigned`s, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return Unsigned(a.rawValue.sub(b.rawValue));\n    }\n\n    /**\n     * @notice Subtracts an unscaled uint256 from an `Unsigned`, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        return sub(a, fromUnscaledUint(b));\n    }\n\n    /**\n     * @notice Subtracts an `Unsigned` from an unscaled uint256, reverting on overflow.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(uint256 a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return sub(fromUnscaledUint(a), b);\n    }\n\n    /**\n     * @notice Multiplies two `Unsigned`s, reverting on overflow.\n     * @dev This will \"floor\" the product.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the product of `a` and `b`.\n     */\n    function mul(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        // There are two caveats with this computation:\n        // 1. Max output for the represented number is ~10^41, otherwise an intermediate value overflows. 10^41 is\n        // stored internally as a uint256 ~10^59.\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 1.4 * 2e-18 = 2.8e-18, which\n        // would round to 3, but this computation produces the result 2.\n        // No need to use SafeMath because FP_SCALING_FACTOR != 0.\n        return Unsigned(a.rawValue.mul(b.rawValue) / FP_SCALING_FACTOR);\n    }\n\n    /**\n     * @notice Multiplies an `Unsigned` and an unscaled uint256, reverting on overflow.\n     * @dev This will \"floor\" the product.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return the product of `a` and `b`.\n     */\n    function mul(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        return Unsigned(a.rawValue.mul(b));\n    }\n\n    /**\n     * @notice Multiplies two `Unsigned`s and \"ceil's\" the product, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the product of `a` and `b`.\n     */\n    function mulCeil(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        uint256 mulRaw = a.rawValue.mul(b.rawValue);\n        uint256 mulFloor = mulRaw / FP_SCALING_FACTOR;\n        uint256 mod = mulRaw.mod(FP_SCALING_FACTOR);\n        if (mod != 0) {\n            return Unsigned(mulFloor.add(1));\n        } else {\n            return Unsigned(mulFloor);\n        }\n    }\n\n    /**\n     * @notice Multiplies an `Unsigned` and an unscaled uint256 and \"ceil's\" the product, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the product of `a` and `b`.\n     */\n    function mulCeil(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        // Since b is an uint, there is no risk of truncation and we can just mul it normally\n        return Unsigned(a.rawValue.mul(b));\n    }\n\n    /**\n     * @notice Divides one `Unsigned` by an `Unsigned`, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a FixedPoint numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        // There are two caveats with this computation:\n        // 1. Max value for the number dividend `a` represents is ~10^41, otherwise an intermediate value overflows.\n        // 10^41 is stored internally as a uint256 10^59.\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 2 / 3 = 0.6 repeating, which\n        // would round to 0.666666666666666667, but this computation produces the result 0.666666666666666666.\n        return Unsigned(a.rawValue.mul(FP_SCALING_FACTOR).div(b.rawValue));\n    }\n\n    /**\n     * @notice Divides one `Unsigned` by an unscaled uint256, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a FixedPoint numerator.\n     * @param b a uint256 denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        return Unsigned(a.rawValue.div(b));\n    }\n\n    /**\n     * @notice Divides one unscaled uint256 by an `Unsigned`, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a uint256 numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(uint256 a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return div(fromUnscaledUint(a), b);\n    }\n\n    /**\n     * @notice Divides one `Unsigned` by an `Unsigned` and \"ceil's\" the quotient, reverting on overflow or division by 0.\n     * @param a a FixedPoint numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function divCeil(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        uint256 aScaled = a.rawValue.mul(FP_SCALING_FACTOR);\n        uint256 divFloor = aScaled.div(b.rawValue);\n        uint256 mod = aScaled.mod(b.rawValue);\n        if (mod != 0) {\n            return Unsigned(divFloor.add(1));\n        } else {\n            return Unsigned(divFloor);\n        }\n    }\n\n    /**\n     * @notice Divides one `Unsigned` by an unscaled uint256 and \"ceil's\" the quotient, reverting on overflow or division by 0.\n     * @param a a FixedPoint numerator.\n     * @param b a uint256 denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function divCeil(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        // Because it is possible that a quotient gets truncated, we can't just call \"Unsigned(a.rawValue.div(b))\"\n        // similarly to mulCeil with a uint256 as the second parameter. Therefore we need to convert b into an Unsigned.\n        // This creates the possibility of overflow if b is very large.\n        return divCeil(a, fromUnscaledUint(b));\n    }\n\n    /**\n     * @notice Raises an `Unsigned` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\n     * @dev This will \"floor\" the result.\n     * @param a a FixedPoint numerator.\n     * @param b a uint256 denominator.\n     * @return output is `a` to the power of `b`.\n     */\n    function pow(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory output) {\n        output = fromUnscaledUint(1);\n        for (uint256 i = 0; i < b; i = i.add(1)) {\n            output = mul(output, a);\n        }\n    }\n\n    // ------------------------------------------------- SIGNED -------------------------------------------------------------\n    // Supports 18 decimals. E.g., 1e18 represents \"1\", 5e17 represents \"0.5\".\n    // For signed values:\n    //   This can represent a value up (or down) to +-(2^255 - 1)/10^18 = ~10^58. 10^58 will be stored internally as int256 10^76.\n    int256 private constant SFP_SCALING_FACTOR = 10**18;\n\n    struct Signed {\n        int256 rawValue;\n    }\n\n    function fromSigned(Signed memory a) internal pure returns (Unsigned memory) {\n        require(a.rawValue >= 0, \"Negative value provided\");\n        return Unsigned(uint256(a.rawValue));\n    }\n\n    function fromUnsigned(Unsigned memory a) internal pure returns (Signed memory) {\n        require(a.rawValue <= uint256(type(int256).max), \"Unsigned too large\");\n        return Signed(int256(a.rawValue));\n    }\n\n    /**\n     * @notice Constructs a `Signed` from an unscaled int, e.g., `b=5` gets stored internally as `5*(10**18)`.\n     * @param a int to convert into a FixedPoint.Signed.\n     * @return the converted FixedPoint.Signed.\n     */\n    function fromUnscaledInt(int256 a) internal pure returns (Signed memory) {\n        return Signed(a.mul(SFP_SCALING_FACTOR));\n    }\n\n    /**\n     * @notice Whether `a` is equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a int256.\n     * @return True if equal, or False.\n     */\n    function isEqual(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue == fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if equal, or False.\n     */\n    function isEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue == b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue > b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue > fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(int256 a, Signed memory b) internal pure returns (bool) {\n        return fromUnscaledInt(a).rawValue > b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue >= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue >= fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(int256 a, Signed memory b) internal pure returns (bool) {\n        return fromUnscaledInt(a).rawValue >= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue < b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue < fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(int256 a, Signed memory b) internal pure returns (bool) {\n        return fromUnscaledInt(a).rawValue < b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue <= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue <= fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(int256 a, Signed memory b) internal pure returns (bool) {\n        return fromUnscaledInt(a).rawValue <= b.rawValue;\n    }\n\n    /**\n     * @notice The minimum of `a` and `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the minimum of `a` and `b`.\n     */\n    function min(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        return a.rawValue < b.rawValue ? a : b;\n    }\n\n    /**\n     * @notice The maximum of `a` and `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the maximum of `a` and `b`.\n     */\n    function max(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        return a.rawValue > b.rawValue ? a : b;\n    }\n\n    /**\n     * @notice Adds two `Signed`s, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the sum of `a` and `b`.\n     */\n    function add(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        return Signed(a.rawValue.add(b.rawValue));\n    }\n\n    /**\n     * @notice Adds an `Signed` to an unscaled int, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return the sum of `a` and `b`.\n     */\n    function add(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        return add(a, fromUnscaledInt(b));\n    }\n\n    /**\n     * @notice Subtracts two `Signed`s, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        return Signed(a.rawValue.sub(b.rawValue));\n    }\n\n    /**\n     * @notice Subtracts an unscaled int256 from an `Signed`, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        return sub(a, fromUnscaledInt(b));\n    }\n\n    /**\n     * @notice Subtracts an `Signed` from an unscaled int256, reverting on overflow.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(int256 a, Signed memory b) internal pure returns (Signed memory) {\n        return sub(fromUnscaledInt(a), b);\n    }\n\n    /**\n     * @notice Multiplies two `Signed`s, reverting on overflow.\n     * @dev This will \"floor\" the product.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the product of `a` and `b`.\n     */\n    function mul(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        // There are two caveats with this computation:\n        // 1. Max output for the represented number is ~10^41, otherwise an intermediate value overflows. 10^41 is\n        // stored internally as an int256 ~10^59.\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 1.4 * 2e-18 = 2.8e-18, which\n        // would round to 3, but this computation produces the result 2.\n        // No need to use SafeMath because SFP_SCALING_FACTOR != 0.\n        return Signed(a.rawValue.mul(b.rawValue) / SFP_SCALING_FACTOR);\n    }\n\n    /**\n     * @notice Multiplies an `Signed` and an unscaled int256, reverting on overflow.\n     * @dev This will \"floor\" the product.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return the product of `a` and `b`.\n     */\n    function mul(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        return Signed(a.rawValue.mul(b));\n    }\n\n    /**\n     * @notice Multiplies two `Signed`s and \"ceil's\" the product, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the product of `a` and `b`.\n     */\n    function mulAwayFromZero(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        int256 mulRaw = a.rawValue.mul(b.rawValue);\n        int256 mulTowardsZero = mulRaw / SFP_SCALING_FACTOR;\n        // Manual mod because SignedSafeMath doesn't support it.\n        int256 mod = mulRaw % SFP_SCALING_FACTOR;\n        if (mod != 0) {\n            bool isResultPositive = isLessThan(a, 0) == isLessThan(b, 0);\n            int256 valueToAdd = isResultPositive ? int256(1) : int256(-1);\n            return Signed(mulTowardsZero.add(valueToAdd));\n        } else {\n            return Signed(mulTowardsZero);\n        }\n    }\n\n    /**\n     * @notice Multiplies an `Signed` and an unscaled int256 and \"ceil's\" the product, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the product of `a` and `b`.\n     */\n    function mulAwayFromZero(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        // Since b is an int, there is no risk of truncation and we can just mul it normally\n        return Signed(a.rawValue.mul(b));\n    }\n\n    /**\n     * @notice Divides one `Signed` by an `Signed`, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a FixedPoint numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        // There are two caveats with this computation:\n        // 1. Max value for the number dividend `a` represents is ~10^41, otherwise an intermediate value overflows.\n        // 10^41 is stored internally as an int256 10^59.\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 2 / 3 = 0.6 repeating, which\n        // would round to 0.666666666666666667, but this computation produces the result 0.666666666666666666.\n        return Signed(a.rawValue.mul(SFP_SCALING_FACTOR).div(b.rawValue));\n    }\n\n    /**\n     * @notice Divides one `Signed` by an unscaled int256, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a FixedPoint numerator.\n     * @param b an int256 denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        return Signed(a.rawValue.div(b));\n    }\n\n    /**\n     * @notice Divides one unscaled int256 by an `Signed`, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a an int256 numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(int256 a, Signed memory b) internal pure returns (Signed memory) {\n        return div(fromUnscaledInt(a), b);\n    }\n\n    /**\n     * @notice Divides one `Signed` by an `Signed` and \"ceil's\" the quotient, reverting on overflow or division by 0.\n     * @param a a FixedPoint numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function divAwayFromZero(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        int256 aScaled = a.rawValue.mul(SFP_SCALING_FACTOR);\n        int256 divTowardsZero = aScaled.div(b.rawValue);\n        // Manual mod because SignedSafeMath doesn't support it.\n        int256 mod = aScaled % b.rawValue;\n        if (mod != 0) {\n            bool isResultPositive = isLessThan(a, 0) == isLessThan(b, 0);\n            int256 valueToAdd = isResultPositive ? int256(1) : int256(-1);\n            return Signed(divTowardsZero.add(valueToAdd));\n        } else {\n            return Signed(divTowardsZero);\n        }\n    }\n\n    /**\n     * @notice Divides one `Signed` by an unscaled int256 and \"ceil's\" the quotient, reverting on overflow or division by 0.\n     * @param a a FixedPoint numerator.\n     * @param b an int256 denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function divAwayFromZero(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        // Because it is possible that a quotient gets truncated, we can't just call \"Signed(a.rawValue.div(b))\"\n        // similarly to mulCeil with an int256 as the second parameter. Therefore we need to convert b into an Signed.\n        // This creates the possibility of overflow if b is very large.\n        return divAwayFromZero(a, fromUnscaledInt(b));\n    }\n\n    /**\n     * @notice Raises an `Signed` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\n     * @dev This will \"floor\" the result.\n     * @param a a FixedPoint.Signed.\n     * @param b a uint256 (negative exponents are not allowed).\n     * @return output is `a` to the power of `b`.\n     */\n    function pow(Signed memory a, uint256 b) internal pure returns (Signed memory output) {\n        output = fromUnscaledInt(1);\n        for (uint256 i = 0; i < b; i = i.add(1)) {\n            output = mul(output, a);\n        }\n    }\n}\n"
            },
            "@openzeppelin/contracts/utils/math/SignedSafeMath.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\n * now has built in overflow checking.\n */\nlibrary SignedSafeMath {\n    /**\n     * @dev Returns the multiplication of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(int256 a, int256 b) internal pure returns (int256) {\n        return a * b;\n    }\n\n    /**\n     * @dev Returns the integer division of two signed integers. Reverts on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator.\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(int256 a, int256 b) internal pure returns (int256) {\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(int256 a, int256 b) internal pure returns (int256) {\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the addition of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(int256 a, int256 b) internal pure returns (int256) {\n        return a + b;\n    }\n}\n"
            },
            "contracts/oracle/interfaces/StoreInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"../../common/implementation/FixedPoint.sol\";\n\n/**\n * @title Interface that allows financial contracts to pay oracle fees for their use of the system.\n */\ninterface StoreInterface {\n    /**\n     * @notice Pays Oracle fees in ETH to the store.\n     * @dev To be used by contracts whose margin currency is ETH.\n     */\n    function payOracleFees() external payable;\n\n    /**\n     * @notice Pays oracle fees in the margin currency, erc20Address, to the store.\n     * @dev To be used if the margin currency is an ERC20 token rather than ETH.\n     * @param erc20Address address of the ERC20 token used to pay the fee.\n     * @param amount number of tokens to transfer. An approval for at least this amount must exist.\n     */\n    function payOracleFeesErc20(address erc20Address, FixedPoint.Unsigned calldata amount) external;\n\n    /**\n     * @notice Computes the regular oracle fees that a contract should pay for a period.\n     * @param startTime defines the beginning time from which the fee is paid.\n     * @param endTime end time until which the fee is paid.\n     * @param pfc \"profit from corruption\", or the maximum amount of margin currency that a\n     * token sponsor could extract from the contract through corrupting the price feed in their favor.\n     * @return regularFee amount owed for the duration from start to end time for the given pfc.\n     * @return latePenalty for paying the fee after the deadline.\n     */\n    function computeRegularFee(\n        uint256 startTime,\n        uint256 endTime,\n        FixedPoint.Unsigned calldata pfc\n    ) external view returns (FixedPoint.Unsigned memory regularFee, FixedPoint.Unsigned memory latePenalty);\n\n    /**\n     * @notice Computes the final oracle fees that a contract should pay at settlement.\n     * @param currency token used to pay the final fee.\n     * @return finalFee amount due.\n     */\n    function computeFinalFee(address currency) external view returns (FixedPoint.Unsigned memory);\n}\n"
            },
            "contracts/oracle/interfaces/OptimisticOracleInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title Financial contract facing Oracle interface.\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\n */\nabstract contract OptimisticOracleInterface {\n    // Struct representing the state of a price request.\n    enum State {\n        Invalid, // Never requested.\n        Requested, // Requested, no other actions taken.\n        Proposed, // Proposed, but not expired or disputed yet.\n        Expired, // Proposed, not disputed, past liveness.\n        Disputed, // Disputed, but no DVM price returned yet.\n        Resolved, // Disputed and DVM price is available.\n        Settled // Final price has been set in the contract (can get here from Expired or Resolved).\n    }\n\n    // Struct representing a price request.\n    struct Request {\n        address proposer; // Address of the proposer.\n        address disputer; // Address of the disputer.\n        IERC20 currency; // ERC20 token used to pay rewards and fees.\n        bool settled; // True if the request is settled.\n        bool refundOnDispute; // True if the requester should be refunded their reward on dispute.\n        int256 proposedPrice; // Price that the proposer submitted.\n        int256 resolvedPrice; // Price resolved once the request is settled.\n        uint256 expirationTime; // Time at which the request auto-settles without a dispute.\n        uint256 reward; // Amount of the currency to pay to the proposer on settlement.\n        uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.\n        uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.\n        uint256 customLiveness; // Custom liveness value set by the requester.\n    }\n\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible\n    // that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses\n    // to accept a price request made with ancillary data length over a certain size.\n    uint256 public constant ancillaryBytesLimit = 8192;\n\n    /**\n     * @notice Requests a new price.\n     * @param identifier price identifier being requested.\n     * @param timestamp timestamp of the price being requested.\n     * @param ancillaryData ancillary data representing additional args being passed with the price request.\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n     *               which could make sense if the contract requests and proposes the value in the same call or\n     *               provides its own reward system.\n     * @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n     * This can be changed with a subsequent call to setBond().\n     */\n    function requestPrice(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        IERC20 currency,\n        uint256 reward\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Set the proposal bond associated with a price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param bond custom bond amount to set.\n     * @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\n     * changed again with a subsequent call to setBond().\n     */\n    function setBond(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        uint256 bond\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller\n     * in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\n     * bond, so there is still profit to be made even if the reward is refunded.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     */\n    function setRefundOnDispute(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) external virtual;\n\n    /**\n     * @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n     * being auto-resolved.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param customLiveness new custom liveness.\n     */\n    function setCustomLiveness(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        uint256 customLiveness\n    ) external virtual;\n\n    /**\n     * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n     * from this proposal. However, any bonds are pulled from the caller.\n     * @param proposer address to set as the proposer.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function proposePriceFor(\n        address proposer,\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        int256 proposedPrice\n    ) public virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Proposes a price value for an existing price request.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function proposePrice(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        int256 proposedPrice\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n     * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n     * @param disputer address to set as the disputer.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the disputer once settled if the dispute was value (the proposal was incorrect).\n     */\n    function disputePriceFor(\n        address disputer,\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) public virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Disputes a price value for an existing price request with an active proposal.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\n     */\n    function disputePrice(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\n     * or settleable. Note: this method is not view so that this call may actually settle the price request if it\n     * hasn't been settled.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return resolved price.\n     */\n    function settleAndGetPrice(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) external virtual returns (int256);\n\n    /**\n     * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n     * the returned bonds as well as additional rewards.\n     */\n    function settle(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) external virtual returns (uint256 payout);\n\n    /**\n     * @notice Gets the current data structure containing all information about a price request.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return the Request data structure.\n     */\n    function getRequest(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) public view virtual returns (Request memory);\n\n    /**\n     * @notice Returns the state of a price request.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return the State enum value.\n     */\n    function getState(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) public view virtual returns (State);\n\n    /**\n     * @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return true if price has resolved or settled, false otherwise.\n     */\n    function hasPrice(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) public view virtual returns (bool);\n\n    function stampAncillaryData(bytes memory ancillaryData, address requester)\n        public\n        view\n        virtual\n        returns (bytes memory);\n}\n"
            },
            "contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"../interfaces/OptimisticOracleInterface.sol\";\n\n/**\n * @title Interface for the gas-cost-reduced version of the OptimisticOracle.\n * @notice Differences from normal OptimisticOracle:\n * - refundOnDispute: flag is removed, by default there are no refunds on disputes.\n * - customizing request parameters: In the OptimisticOracle, parameters like `bond` and `customLiveness` can be reset\n *   after a request is already made via `requestPrice`. In the SkinnyOptimisticOracle, these parameters can only be\n *   set in `requestPrice`, which has an expanded input set.\n * - settleAndGetPrice: Replaced by `settle`, which can only be called once per settleable request. The resolved price\n *   can be fetched via the `Settle` event or the return value of `settle`.\n * - general changes to interface: Functions that interact with existing requests all require the parameters of the\n *   request to modify to be passed as input. These parameters must match with the existing request parameters or the\n *   function will revert. This change reflects the internal refactor to store hashed request parameters instead of the\n *   full request struct.\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\n */\nabstract contract SkinnyOptimisticOracleInterface {\n    // Struct representing a price request. Note that this differs from the OptimisticOracleInterface's Request struct\n    // in that refundOnDispute is removed.\n    struct Request {\n        address proposer; // Address of the proposer.\n        address disputer; // Address of the disputer.\n        IERC20 currency; // ERC20 token used to pay rewards and fees.\n        bool settled; // True if the request is settled.\n        int256 proposedPrice; // Price that the proposer submitted.\n        int256 resolvedPrice; // Price resolved once the request is settled.\n        uint256 expirationTime; // Time at which the request auto-settles without a dispute.\n        uint256 reward; // Amount of the currency to pay to the proposer on settlement.\n        uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.\n        uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.\n        uint256 customLiveness; // Custom liveness value set by the requester.\n    }\n\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible\n    // that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses\n    // to accept a price request made with ancillary data length over a certain size.\n    uint256 public constant ancillaryBytesLimit = 8192;\n\n    /**\n     * @notice Requests a new price.\n     * @param identifier price identifier being requested.\n     * @param timestamp timestamp of the price being requested.\n     * @param ancillaryData ancillary data representing additional args being passed with the price request.\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n     *               which could make sense if the contract requests and proposes the value in the same call or\n     *               provides its own reward system.\n     * @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\n     * @param customLiveness custom proposal liveness to set for request.\n     * @return totalBond default bond + final fee that the proposer and disputer will be required to pay.\n     */\n    function requestPrice(\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        IERC20 currency,\n        uint256 reward,\n        uint256 bond,\n        uint256 customLiveness\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n     * from this proposal. However, any bonds are pulled from the caller.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * propose a price for.\n     * @param proposer address to set as the proposer.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function proposePriceFor(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request,\n        address proposer,\n        int256 proposedPrice\n    ) public virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Proposes a price value where caller is the proposer.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * propose a price for.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function proposePrice(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request,\n        int256 proposedPrice\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Combines logic of requestPrice and proposePrice while taking advantage of gas savings from not having to\n     * overwrite Request params that a normal requestPrice() => proposePrice() flow would entail. Note: The proposer\n     * will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\n     * @dev The caller is the requester, but the proposer can be customized.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n     *               which could make sense if the contract requests and proposes the value in the same call or\n     *               provides its own reward system.\n     * @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\n     * @param customLiveness custom proposal liveness to set for request.\n     * @param proposer address to set as the proposer.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function requestAndProposePriceFor(\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        IERC20 currency,\n        uint256 reward,\n        uint256 bond,\n        uint256 customLiveness,\n        address proposer,\n        int256 proposedPrice\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n     * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * dispute.\n     * @param disputer address to set as the disputer.\n     * @param requester sender of the initial price request.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\n     */\n    function disputePriceFor(\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request,\n        address disputer,\n        address requester\n    ) public virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Disputes a price request with an active proposal where caller is the disputer.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * dispute.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\n     */\n    function disputePrice(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * settle.\n     * @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n     * the returned bonds as well as additional rewards.\n     * @return resolvedPrice the price that the request settled to.\n     */\n    function settle(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request\n    ) external virtual returns (uint256 payout, int256 resolvedPrice);\n\n    /**\n     * @notice Computes the current state of a price request. See the State enum for more details.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters.\n     * @return the State.\n     */\n    function getState(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request\n    ) external virtual returns (OptimisticOracleInterface.State);\n\n    /**\n     * @notice Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters. The hash of these parameters must match with the request hash that is\n     * associated with the price request unique ID {requester, identifier, timestamp, ancillaryData}, or this method\n     * will revert.\n     * @return boolean indicating true if price exists and false if not.\n     */\n    function hasPrice(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request\n    ) public virtual returns (bool);\n\n    /**\n     * @notice Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param requester sender of the initial price request.\n     * @return the stamped ancillary bytes.\n     */\n    function stampAncillaryData(bytes memory ancillaryData, address requester)\n        public\n        pure\n        virtual\n        returns (bytes memory);\n}\n"
            }
        },
        "settings": {
            "optimizer": {
                "enabled": true,
                "runs": 1000000
            },
            "outputSelection": {
                "*": {
                    "*": [
                        "abi",
                        "evm.bytecode",
                        "evm.deployedBytecode",
                        "evm.methodIdentifiers",
                        "metadata",
                        "devdoc",
                        "userdoc",
                        "storageLayout",
                        "evm.gasEstimates"
                    ],
                    "": [
                        "ast"
                    ]
                }
            },
            "metadata": {
                "useLiteralContent": true
            }
        }
    },
    "output": {
        "contracts": {
            "@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol": {
                "IL2ERC20Bridge": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "_l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "_l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "_from",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "_to",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "_amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "_data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "DepositFailed",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "_l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "_l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "_from",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "_to",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "_amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "_data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "DepositFinalized",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "_l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "_l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "_from",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "_to",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "_amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "_data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "WithdrawalInitiated",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_from",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_to",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "_amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "_data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "finalizeDeposit",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1TokenBridge",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "_amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "_l1Gas",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "_data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "withdraw",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_to",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "_amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "_l1Gas",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "_data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "withdrawTo",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "finalizeDeposit(address,address,address,address,uint256,bytes)": {
                                "details": "Complete a deposit from L1 to L2, and credits funds to the recipient's balance of this L2 token. This call will fail if it did not originate from a corresponding deposit in L1StandardTokenBridge.",
                                "params": {
                                    "_amount": "Amount of the token to withdraw",
                                    "_data": "Data provider by the sender on L1. This data is provided        solely as a convenience for external contracts. Aside from enforcing a maximum        length, these contracts provide no guarantees about its content.",
                                    "_from": "Account to pull the deposit from on L2.",
                                    "_l1Token": "Address for the l1 token this is called with",
                                    "_l2Token": "Address for the l2 token this is called with",
                                    "_to": "Address to receive the withdrawal at"
                                }
                            },
                            "l1TokenBridge()": {
                                "details": "get the address of the corresponding L1 bridge contract.",
                                "returns": {
                                    "_0": "Address of the corresponding L1 bridge contract."
                                }
                            },
                            "withdraw(address,uint256,uint32,bytes)": {
                                "details": "initiate a withdraw of some tokens to the caller's account on L1",
                                "params": {
                                    "_amount": "Amount of the token to withdraw. param _l1Gas Unused, but included for potential forward compatibility considerations.",
                                    "_data": "Optional data to forward to L1. This data is provided        solely as a convenience for external contracts. Aside from enforcing a maximum        length, these contracts provide no guarantees about its content.",
                                    "_l2Token": "Address of L2 token where withdrawal was initiated."
                                }
                            },
                            "withdrawTo(address,address,uint256,uint32,bytes)": {
                                "details": "initiate a withdraw of some token to a recipient's account on L1.",
                                "params": {
                                    "_amount": "Amount of the token to withdraw. param _l1Gas Unused, but included for potential forward compatibility considerations.",
                                    "_data": "Optional data to forward to L1. This data is provided        solely as a convenience for external contracts. Aside from enforcing a maximum        length, these contracts provide no guarantees about its content.",
                                    "_l2Token": "Address of L2 token where withdrawal is initiated.",
                                    "_to": "L1 adress to credit the withdrawal to."
                                }
                            }
                        },
                        "title": "IL2ERC20Bridge",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "finalizeDeposit(address,address,address,address,uint256,bytes)": "662a633a",
                            "l1TokenBridge()": "36c717c1",
                            "withdraw(address,uint256,uint32,bytes)": "32b7006d",
                            "withdrawTo(address,address,uint256,uint32,bytes)": "a3a79548"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"DepositFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"DepositFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"WithdrawalInitiated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"finalizeDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1TokenBridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_l1Gas\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_l1Gas\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"finalizeDeposit(address,address,address,address,uint256,bytes)\":{\"details\":\"Complete a deposit from L1 to L2, and credits funds to the recipient's balance of this L2 token. This call will fail if it did not originate from a corresponding deposit in L1StandardTokenBridge.\",\"params\":{\"_amount\":\"Amount of the token to withdraw\",\"_data\":\"Data provider by the sender on L1. This data is provided        solely as a convenience for external contracts. Aside from enforcing a maximum        length, these contracts provide no guarantees about its content.\",\"_from\":\"Account to pull the deposit from on L2.\",\"_l1Token\":\"Address for the l1 token this is called with\",\"_l2Token\":\"Address for the l2 token this is called with\",\"_to\":\"Address to receive the withdrawal at\"}},\"l1TokenBridge()\":{\"details\":\"get the address of the corresponding L1 bridge contract.\",\"returns\":{\"_0\":\"Address of the corresponding L1 bridge contract.\"}},\"withdraw(address,uint256,uint32,bytes)\":{\"details\":\"initiate a withdraw of some tokens to the caller's account on L1\",\"params\":{\"_amount\":\"Amount of the token to withdraw. param _l1Gas Unused, but included for potential forward compatibility considerations.\",\"_data\":\"Optional data to forward to L1. This data is provided        solely as a convenience for external contracts. Aside from enforcing a maximum        length, these contracts provide no guarantees about its content.\",\"_l2Token\":\"Address of L2 token where withdrawal was initiated.\"}},\"withdrawTo(address,address,uint256,uint32,bytes)\":{\"details\":\"initiate a withdraw of some token to a recipient's account on L1.\",\"params\":{\"_amount\":\"Amount of the token to withdraw. param _l1Gas Unused, but included for potential forward compatibility considerations.\",\"_data\":\"Optional data to forward to L1. This data is provided        solely as a convenience for external contracts. Aside from enforcing a maximum        length, these contracts provide no guarantees about its content.\",\"_l2Token\":\"Address of L2 token where withdrawal is initiated.\",\"_to\":\"L1 adress to credit the withdrawal to.\"}}},\"title\":\"IL2ERC20Bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol\":\"IL2ERC20Bridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\n/**\\n * @title IL2ERC20Bridge\\n */\\ninterface IL2ERC20Bridge {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event WithdrawalInitiated(\\n        address indexed _l1Token,\\n        address indexed _l2Token,\\n        address indexed _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes _data\\n    );\\n\\n    event DepositFinalized(\\n        address indexed _l1Token,\\n        address indexed _l2Token,\\n        address indexed _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes _data\\n    );\\n\\n    event DepositFailed(\\n        address indexed _l1Token,\\n        address indexed _l2Token,\\n        address indexed _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes _data\\n    );\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * @dev get the address of the corresponding L1 bridge contract.\\n     * @return Address of the corresponding L1 bridge contract.\\n     */\\n    function l1TokenBridge() external returns (address);\\n\\n    /**\\n     * @dev initiate a withdraw of some tokens to the caller's account on L1\\n     * @param _l2Token Address of L2 token where withdrawal was initiated.\\n     * @param _amount Amount of the token to withdraw.\\n     * param _l1Gas Unused, but included for potential forward compatibility considerations.\\n     * @param _data Optional data to forward to L1. This data is provided\\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\\n     *        length, these contracts provide no guarantees about its content.\\n     */\\n    function withdraw(\\n        address _l2Token,\\n        uint256 _amount,\\n        uint32 _l1Gas,\\n        bytes calldata _data\\n    ) external;\\n\\n    /**\\n     * @dev initiate a withdraw of some token to a recipient's account on L1.\\n     * @param _l2Token Address of L2 token where withdrawal is initiated.\\n     * @param _to L1 adress to credit the withdrawal to.\\n     * @param _amount Amount of the token to withdraw.\\n     * param _l1Gas Unused, but included for potential forward compatibility considerations.\\n     * @param _data Optional data to forward to L1. This data is provided\\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\\n     *        length, these contracts provide no guarantees about its content.\\n     */\\n    function withdrawTo(\\n        address _l2Token,\\n        address _to,\\n        uint256 _amount,\\n        uint32 _l1Gas,\\n        bytes calldata _data\\n    ) external;\\n\\n    /*************************\\n     * Cross-chain Functions *\\n     *************************/\\n\\n    /**\\n     * @dev Complete a deposit from L1 to L2, and credits funds to the recipient's balance of this\\n     * L2 token. This call will fail if it did not originate from a corresponding deposit in\\n     * L1StandardTokenBridge.\\n     * @param _l1Token Address for the l1 token this is called with\\n     * @param _l2Token Address for the l2 token this is called with\\n     * @param _from Account to pull the deposit from on L2.\\n     * @param _to Address to receive the withdrawal at\\n     * @param _amount Amount of the token to withdraw\\n     * @param _data Data provider by the sender on L1. This data is provided\\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\\n     *        length, these contracts provide no guarantees about its content.\\n     */\\n    function finalizeDeposit(\\n        address _l1Token,\\n        address _l2Token,\\n        address _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes calldata _data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x4674c3c8733ca0db16c2b81d58227560df36a07ded3b637a0793564d90ac0475\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol": {
                "CrossDomainEnabled": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_messenger",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "inputs": [],
                            "name": "messenger",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Helper contract for contracts performing cross-domain communications Compiler used: defined by inheriting contract",
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "params": {
                                    "_messenger": "Address of the CrossDomainMessenger on the current layer."
                                }
                            }
                        },
                        "title": "CrossDomainEnabled",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_111": {
                                    "entryPoint": null,
                                    "id": 111,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 84,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:306:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "95:209:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "141:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "150:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "153:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "143:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "143:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "143:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "116:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "125:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "112:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "112:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "137:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "108:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "108:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "105:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "166:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "185:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "179:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "179:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "170:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "258:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "267:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "270:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "260:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "260:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "260:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "217:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "228:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "243:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "248:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "239:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "239:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "252:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "235:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "235:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "224:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "224:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "214:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "214:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "207:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "207:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "204:70:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "283:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "293:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "283:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "61:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "72:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:290:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b5060405161013d38038061013d83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b60ab806100926000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80633cb747bf14602d575b600080fd5b600054604c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212203eef930358eb6ee95a39e3cdca250534bfc7777bfa4509c03907565c864ba2f764736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x13D CODESIZE SUB DUP1 PUSH2 0x13D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x54 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x84 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0xAB DUP1 PUSH2 0x92 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3CB747BF EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x4C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY 0xEF SWAP4 SUB PC 0xEB PUSH15 0xE95A39E3CDCA250534BFC7777BFA45 MULMOD 0xC0 CODECOPY SMOD JUMP 0x5C DUP7 0x4B LOG2 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "324:2271:1:-:0;;;695:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;737:9;:22;;-1:-1:-1;;;;;;737:22:1;-1:-1:-1;;;;;737:22:1;;;;;;;;;;324:2271;;14:290:66;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:66;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:66:o;:::-;324:2271:1;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@messenger_100": {
                                    "entryPoint": null,
                                    "id": 100,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:242:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "182:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "190:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "178:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:226:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80633cb747bf14602d575b600080fd5b600054604c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212203eef930358eb6ee95a39e3cdca250534bfc7777bfa4509c03907565c864ba2f764736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3CB747BF EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x4C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATACOPY 0xEF SWAP4 SUB PC 0xEB PUSH15 0xE95A39E3CDCA250534BFC7777BFA45 MULMOD 0xC0 CODECOPY SMOD JUMP 0x5C DUP7 0x4B LOG2 0xF7 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "324:2271:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:24;;;;;;;;;;;;190:42:66;178:55;;;160:74;;148:2;133:18;500:24:1;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "34200",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "messenger()": "2279"
                            },
                            "internal": {
                                "getCrossDomainMessenger()": "infinite",
                                "sendCrossDomainMessage(address,uint32,bytes memory)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "messenger()": "3cb747bf"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_messenger\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Helper contract for contracts performing cross-domain communications Compiler used: defined by inheriting contract\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_messenger\":\"Address of the CrossDomainMessenger on the current layer.\"}}},\"title\":\"CrossDomainEnabled\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\":\"CrossDomainEnabled\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/* Interface Imports */\\nimport { ICrossDomainMessenger } from \\\"./ICrossDomainMessenger.sol\\\";\\n\\n/**\\n * @title CrossDomainEnabled\\n * @dev Helper contract for contracts performing cross-domain communications\\n *\\n * Compiler used: defined by inheriting contract\\n */\\ncontract CrossDomainEnabled {\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    // Messenger contract used to send and recieve messages from the other domain.\\n    address public messenger;\\n\\n    /***************\\n     * Constructor *\\n     ***************/\\n\\n    /**\\n     * @param _messenger Address of the CrossDomainMessenger on the current layer.\\n     */\\n    constructor(address _messenger) {\\n        messenger = _messenger;\\n    }\\n\\n    /**********************\\n     * Function Modifiers *\\n     **********************/\\n\\n    /**\\n     * Enforces that the modified function is only callable by a specific cross-domain account.\\n     * @param _sourceDomainAccount The only account on the originating domain which is\\n     *  authenticated to call this function.\\n     */\\n    modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {\\n        require(\\n            msg.sender == address(getCrossDomainMessenger()),\\n            \\\"OVM_XCHAIN: messenger contract unauthenticated\\\"\\n        );\\n\\n        require(\\n            getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,\\n            \\\"OVM_XCHAIN: wrong sender of cross-domain message\\\"\\n        );\\n\\n        _;\\n    }\\n\\n    /**********************\\n     * Internal Functions *\\n     **********************/\\n\\n    /**\\n     * Gets the messenger, usually from storage. This function is exposed in case a child contract\\n     * needs to override.\\n     * @return The address of the cross-domain messenger contract which should be used.\\n     */\\n    function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) {\\n        return ICrossDomainMessenger(messenger);\\n    }\\n\\n    /**q\\n     * Sends a message to an account on another domain\\n     * @param _crossDomainTarget The intended recipient on the destination domain\\n     * @param _message The data to send to the target (usually calldata to a function with\\n     *  `onlyFromCrossDomainAccount()`)\\n     * @param _gasLimit The gasLimit for the receipt of the message on the target domain.\\n     */\\n    function sendCrossDomainMessage(\\n        address _crossDomainTarget,\\n        uint32 _gasLimit,\\n        bytes memory _message\\n    ) internal {\\n        getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);\\n    }\\n}\\n\",\"keccak256\":\"0x147bd09bf9b4c02347ea21790a3dce2f733b914e4e6d73539d8abafb38827c9d\",\"license\":\"MIT\"},\"@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/**\\n * @title ICrossDomainMessenger\\n */\\ninterface ICrossDomainMessenger {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event SentMessage(\\n        address indexed target,\\n        address sender,\\n        bytes message,\\n        uint256 messageNonce,\\n        uint256 gasLimit\\n    );\\n    event RelayedMessage(bytes32 indexed msgHash);\\n    event FailedRelayedMessage(bytes32 indexed msgHash);\\n\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    function xDomainMessageSender() external view returns (address);\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * Sends a cross domain message to the target messenger.\\n     * @param _target Target contract address.\\n     * @param _message Message to send to the target.\\n     * @param _gasLimit Gas limit for the provided message.\\n     */\\n    function sendMessage(\\n        address _target,\\n        bytes calldata _message,\\n        uint32 _gasLimit\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8f29ae23021345a20ccac7b5edb3fc38268aef943b65adc8a32e74b80bf1833a\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 100,
                                "contract": "@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol:CrossDomainEnabled",
                                "label": "messenger",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol": {
                "ICrossDomainMessenger": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "msgHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "FailedRelayedMessage",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "msgHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "RelayedMessage",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "target",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "sender",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "message",
                                    "type": "bytes"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "messageNonce",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "gasLimit",
                                    "type": "uint256"
                                }
                            ],
                            "name": "SentMessage",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_target",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "_message",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "_gasLimit",
                                    "type": "uint32"
                                }
                            ],
                            "name": "sendMessage",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "xDomainMessageSender",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "sendMessage(address,bytes,uint32)": {
                                "params": {
                                    "_gasLimit": "Gas limit for the provided message.",
                                    "_message": "Message to send to the target.",
                                    "_target": "Target contract address."
                                }
                            }
                        },
                        "title": "ICrossDomainMessenger",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "sendMessage(address,bytes,uint32)": "3dbb202b",
                            "xDomainMessageSender()": "6e296e45"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"FailedRelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"RelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_gasLimit\",\"type\":\"uint32\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xDomainMessageSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"sendMessage(address,bytes,uint32)\":{\"params\":{\"_gasLimit\":\"Gas limit for the provided message.\",\"_message\":\"Message to send to the target.\",\"_target\":\"Target contract address.\"}}},\"title\":\"ICrossDomainMessenger\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"sendMessage(address,bytes,uint32)\":{\"notice\":\"Sends a cross domain message to the target messenger.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol\":\"ICrossDomainMessenger\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/**\\n * @title ICrossDomainMessenger\\n */\\ninterface ICrossDomainMessenger {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event SentMessage(\\n        address indexed target,\\n        address sender,\\n        bytes message,\\n        uint256 messageNonce,\\n        uint256 gasLimit\\n    );\\n    event RelayedMessage(bytes32 indexed msgHash);\\n    event FailedRelayedMessage(bytes32 indexed msgHash);\\n\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    function xDomainMessageSender() external view returns (address);\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * Sends a cross domain message to the target messenger.\\n     * @param _target Target contract address.\\n     * @param _message Message to send to the target.\\n     * @param _gasLimit Gas limit for the provided message.\\n     */\\n    function sendMessage(\\n        address _target,\\n        bytes calldata _message,\\n        uint32 _gasLimit\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8f29ae23021345a20ccac7b5edb3fc38268aef943b65adc8a32e74b80bf1833a\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "sendMessage(address,bytes,uint32)": {
                                "notice": "Sends a cross domain message to the target messenger."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol": {
                "Lib_PredeployAddresses": {
                    "abi": [],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "title": "Lib_PredeployAddresses",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a074add1fcee741af33158589e9f935958b93f356dade311b59e88f06827e86564736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 PUSH21 0xADD1FCEE741AF33158589E9F935958B93F356DADE3 GT 0xB5 SWAP15 DUP9 CREATE PUSH9 0x27E86564736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "98:1110:3:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;98:1110:3;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a074add1fcee741af33158589e9f935958b93f356dade311b59e88f06827e86564736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG0 PUSH21 0xADD1FCEE741AF33158589E9F935958B93F356DADE3 GT 0xB5 SWAP15 DUP9 CREATE PUSH9 0x27E86564736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "98:1110:3:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Lib_PredeployAddresses\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol\":\"Lib_PredeployAddresses\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\n/**\\n * @title Lib_PredeployAddresses\\n */\\nlibrary Lib_PredeployAddresses {\\n    address internal constant L2_TO_L1_MESSAGE_PASSER = 0x4200000000000000000000000000000000000000;\\n    address internal constant L1_MESSAGE_SENDER = 0x4200000000000000000000000000000000000001;\\n    address internal constant DEPLOYER_WHITELIST = 0x4200000000000000000000000000000000000002;\\n    address payable internal constant OVM_ETH = payable(0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000);\\n    address internal constant L2_CROSS_DOMAIN_MESSENGER =\\n        0x4200000000000000000000000000000000000007;\\n    address internal constant LIB_ADDRESS_MANAGER = 0x4200000000000000000000000000000000000008;\\n    address internal constant PROXY_EOA = 0x4200000000000000000000000000000000000009;\\n    address internal constant L2_STANDARD_BRIDGE = 0x4200000000000000000000000000000000000010;\\n    address internal constant SEQUENCER_FEE_WALLET = 0x4200000000000000000000000000000000000011;\\n    address internal constant L2_STANDARD_TOKEN_FACTORY =\\n        0x4200000000000000000000000000000000000012;\\n    address internal constant L1_BLOCK_NUMBER = 0x4200000000000000000000000000000000000013;\\n}\\n\",\"keccak256\":\"0x2bc28307af93e9716151a41a81694b56cbe513ef5eb335fb1d81f35e5db8edfa\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/access/AccessControl.sol": {
                "AccessControl": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "previousAdminRole",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "newAdminRole",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "RoleAdminChanged",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "sender",
                                    "type": "address"
                                }
                            ],
                            "name": "RoleGranted",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "sender",
                                    "type": "address"
                                }
                            ],
                            "name": "RoleRevoked",
                            "type": "event"
                        },
                        {
                            "inputs": [],
                            "name": "DEFAULT_ADMIN_ROLE",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "getRoleAdmin",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "grantRole",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "hasRole",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "renounceRole",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "revokeRole",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes4",
                                    "name": "interfaceId",
                                    "type": "bytes4"
                                }
                            ],
                            "name": "supportsInterface",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public {     require(hasRole(MY_ROLE, msg.sender));     ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.",
                        "events": {
                            "RoleAdminChanged(bytes32,bytes32,bytes32)": {
                                "details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"
                            },
                            "RoleGranted(bytes32,address,address)": {
                                "details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {_setupRole}."
                            },
                            "RoleRevoked(bytes32,address,address)": {
                                "details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)"
                            }
                        },
                        "kind": "dev",
                        "methods": {
                            "getRoleAdmin(bytes32)": {
                                "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
                            },
                            "grantRole(bytes32,address)": {
                                "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."
                            },
                            "hasRole(bytes32,address)": {
                                "details": "Returns `true` if `account` has been granted `role`."
                            },
                            "renounceRole(bytes32,address)": {
                                "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."
                            },
                            "revokeRole(bytes32,address)": {
                                "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."
                            },
                            "supportsInterface(bytes4)": {
                                "details": "See {IERC165-supportsInterface}."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "DEFAULT_ADMIN_ROLE()": "a217fddf",
                            "getRoleAdmin(bytes32)": "248a9ca3",
                            "grantRole(bytes32,address)": "2f2ff15d",
                            "hasRole(bytes32,address)": "91d14854",
                            "renounceRole(bytes32,address)": "36568abe",
                            "revokeRole(bytes32,address)": "d547741f",
                            "supportsInterface(bytes4)": "01ffc9a7"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ``` bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ``` function foo() public {     require(hasRole(MY_ROLE, msg.sender));     ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it.\",\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n    function hasRole(bytes32 role, address account) external view returns (bool);\\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n    function grantRole(bytes32 role, address account) external;\\n    function revokeRole(bytes32 role, address account) external;\\n    function renounceRole(bytes32 role, address account) external;\\n}\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n *     require(hasRole(MY_ROLE, msg.sender));\\n *     ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n    struct RoleData {\\n        mapping (address => bool) members;\\n        bytes32 adminRole;\\n    }\\n\\n    mapping (bytes32 => RoleData) private _roles;\\n\\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n    /**\\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n     *\\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n     * {RoleAdminChanged} not being emitted signaling this.\\n     *\\n     * _Available since v3.1._\\n     */\\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n    /**\\n     * @dev Emitted when `account` is granted `role`.\\n     *\\n     * `sender` is the account that originated the contract call, an admin role\\n     * bearer except when using {_setupRole}.\\n     */\\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Emitted when `account` is revoked `role`.\\n     *\\n     * `sender` is the account that originated the contract call:\\n     *   - if using `revokeRole`, it is the admin role bearer\\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n     */\\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Modifier that checks that an account has a specific role. Reverts\\n     * with a standardized message including the required role.\\n     *\\n     * The format of the revert reason is given by the following regular expression:\\n     *\\n     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\\n     *\\n     * _Available since v4.1._\\n     */\\n    modifier onlyRole(bytes32 role) {\\n        _checkRole(role, _msgSender());\\n        _;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IAccessControl).interfaceId\\n            || super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev Returns `true` if `account` has been granted `role`.\\n     */\\n    function hasRole(bytes32 role, address account) public view override returns (bool) {\\n        return _roles[role].members[account];\\n    }\\n\\n    /**\\n     * @dev Revert with a standard message if `account` is missing `role`.\\n     *\\n     * The format of the revert reason is given by the following regular expression:\\n     *\\n     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\\n     */\\n    function _checkRole(bytes32 role, address account) internal view {\\n        if(!hasRole(role, account)) {\\n            revert(string(abi.encodePacked(\\n                \\\"AccessControl: account \\\",\\n                Strings.toHexString(uint160(account), 20),\\n                \\\" is missing role \\\",\\n                Strings.toHexString(uint256(role), 32)\\n            )));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\\n     * {revokeRole}.\\n     *\\n     * To change a role's admin, use {_setRoleAdmin}.\\n     */\\n    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {\\n        return _roles[role].adminRole;\\n    }\\n\\n    /**\\n     * @dev Grants `role` to `account`.\\n     *\\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n        _grantRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Revokes `role` from `account`.\\n     *\\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n        _revokeRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Revokes `role` from the calling account.\\n     *\\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n     * purpose is to provide a mechanism for accounts to lose their privileges\\n     * if they are compromised (such as when a trusted device is misplaced).\\n     *\\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must be `account`.\\n     */\\n    function renounceRole(bytes32 role, address account) public virtual override {\\n        require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n        _revokeRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Grants `role` to `account`.\\n     *\\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\\n     * event. Note that unlike {grantRole}, this function doesn't perform any\\n     * checks on the calling account.\\n     *\\n     * [WARNING]\\n     * ====\\n     * This function should only be called from the constructor when setting\\n     * up the initial roles for the system.\\n     *\\n     * Using this function in any other way is effectively circumventing the admin\\n     * system imposed by {AccessControl}.\\n     * ====\\n     */\\n    function _setupRole(bytes32 role, address account) internal virtual {\\n        _grantRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Sets `adminRole` as ``role``'s admin role.\\n     *\\n     * Emits a {RoleAdminChanged} event.\\n     */\\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);\\n        _roles[role].adminRole = adminRole;\\n    }\\n\\n    function _grantRole(bytes32 role, address account) private {\\n        if (!hasRole(role, account)) {\\n            _roles[role].members[account] = true;\\n            emit RoleGranted(role, account, _msgSender());\\n        }\\n    }\\n\\n    function _revokeRole(bytes32 role, address account) private {\\n        if (hasRole(role, account)) {\\n            _roles[role].members[account] = false;\\n            emit RoleRevoked(role, account, _msgSender());\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x98fac37221212c8f126f198d262a4df86394bd1a9969f61e40739fe8ac013dd8\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant alphabet = \\\"0123456789abcdef\\\";\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = alphabet[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n}\\n\",\"keccak256\":\"0x456e9b3a2bfe189b5249857f624f4139e59331db518483b456c4e587a20552e0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0x5718c5df9bd67ac68a796961df938821bb5dc0cd4c6118d77e9145afb187409b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xa28007762d9da9db878dd421960c8cb9a10471f47ab5c1b3309bfe48e9e79ff4\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 314,
                                "contract": "@openzeppelin/contracts/access/AccessControl.sol:AccessControl",
                                "label": "_roles",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_mapping(t_bytes32,t_struct(RoleData)309_storage)"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_bytes32": {
                                "encoding": "inplace",
                                "label": "bytes32",
                                "numberOfBytes": "32"
                            },
                            "t_mapping(t_address,t_bool)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => bool)",
                                "numberOfBytes": "32",
                                "value": "t_bool"
                            },
                            "t_mapping(t_bytes32,t_struct(RoleData)309_storage)": {
                                "encoding": "mapping",
                                "key": "t_bytes32",
                                "label": "mapping(bytes32 => struct AccessControl.RoleData)",
                                "numberOfBytes": "32",
                                "value": "t_struct(RoleData)309_storage"
                            },
                            "t_struct(RoleData)309_storage": {
                                "encoding": "inplace",
                                "label": "struct AccessControl.RoleData",
                                "members": [
                                    {
                                        "astId": 306,
                                        "contract": "@openzeppelin/contracts/access/AccessControl.sol:AccessControl",
                                        "label": "members",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_mapping(t_address,t_bool)"
                                    },
                                    {
                                        "astId": 308,
                                        "contract": "@openzeppelin/contracts/access/AccessControl.sol:AccessControl",
                                        "label": "adminRole",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_bytes32"
                                    }
                                ],
                                "numberOfBytes": "64"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                },
                "IAccessControl": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "getRoleAdmin",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "grantRole",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "hasRole",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "renounceRole",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "revokeRole",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "External interface of AccessControl declared to support ERC165 detection.",
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "getRoleAdmin(bytes32)": "248a9ca3",
                            "grantRole(bytes32,address)": "2f2ff15d",
                            "hasRole(bytes32,address)": "91d14854",
                            "renounceRole(bytes32,address)": "36568abe",
                            "revokeRole(bytes32,address)": "d547741f"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC165 detection.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/AccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n    function hasRole(bytes32 role, address account) external view returns (bool);\\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n    function grantRole(bytes32 role, address account) external;\\n    function revokeRole(bytes32 role, address account) external;\\n    function renounceRole(bytes32 role, address account) external;\\n}\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n *     require(hasRole(MY_ROLE, msg.sender));\\n *     ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n    struct RoleData {\\n        mapping (address => bool) members;\\n        bytes32 adminRole;\\n    }\\n\\n    mapping (bytes32 => RoleData) private _roles;\\n\\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n    /**\\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n     *\\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n     * {RoleAdminChanged} not being emitted signaling this.\\n     *\\n     * _Available since v3.1._\\n     */\\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n    /**\\n     * @dev Emitted when `account` is granted `role`.\\n     *\\n     * `sender` is the account that originated the contract call, an admin role\\n     * bearer except when using {_setupRole}.\\n     */\\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Emitted when `account` is revoked `role`.\\n     *\\n     * `sender` is the account that originated the contract call:\\n     *   - if using `revokeRole`, it is the admin role bearer\\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n     */\\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Modifier that checks that an account has a specific role. Reverts\\n     * with a standardized message including the required role.\\n     *\\n     * The format of the revert reason is given by the following regular expression:\\n     *\\n     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\\n     *\\n     * _Available since v4.1._\\n     */\\n    modifier onlyRole(bytes32 role) {\\n        _checkRole(role, _msgSender());\\n        _;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IAccessControl).interfaceId\\n            || super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev Returns `true` if `account` has been granted `role`.\\n     */\\n    function hasRole(bytes32 role, address account) public view override returns (bool) {\\n        return _roles[role].members[account];\\n    }\\n\\n    /**\\n     * @dev Revert with a standard message if `account` is missing `role`.\\n     *\\n     * The format of the revert reason is given by the following regular expression:\\n     *\\n     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\\n     */\\n    function _checkRole(bytes32 role, address account) internal view {\\n        if(!hasRole(role, account)) {\\n            revert(string(abi.encodePacked(\\n                \\\"AccessControl: account \\\",\\n                Strings.toHexString(uint160(account), 20),\\n                \\\" is missing role \\\",\\n                Strings.toHexString(uint256(role), 32)\\n            )));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\\n     * {revokeRole}.\\n     *\\n     * To change a role's admin, use {_setRoleAdmin}.\\n     */\\n    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {\\n        return _roles[role].adminRole;\\n    }\\n\\n    /**\\n     * @dev Grants `role` to `account`.\\n     *\\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n        _grantRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Revokes `role` from `account`.\\n     *\\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n        _revokeRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Revokes `role` from the calling account.\\n     *\\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n     * purpose is to provide a mechanism for accounts to lose their privileges\\n     * if they are compromised (such as when a trusted device is misplaced).\\n     *\\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must be `account`.\\n     */\\n    function renounceRole(bytes32 role, address account) public virtual override {\\n        require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n        _revokeRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Grants `role` to `account`.\\n     *\\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\\n     * event. Note that unlike {grantRole}, this function doesn't perform any\\n     * checks on the calling account.\\n     *\\n     * [WARNING]\\n     * ====\\n     * This function should only be called from the constructor when setting\\n     * up the initial roles for the system.\\n     *\\n     * Using this function in any other way is effectively circumventing the admin\\n     * system imposed by {AccessControl}.\\n     * ====\\n     */\\n    function _setupRole(bytes32 role, address account) internal virtual {\\n        _grantRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Sets `adminRole` as ``role``'s admin role.\\n     *\\n     * Emits a {RoleAdminChanged} event.\\n     */\\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);\\n        _roles[role].adminRole = adminRole;\\n    }\\n\\n    function _grantRole(bytes32 role, address account) private {\\n        if (!hasRole(role, account)) {\\n            _roles[role].members[account] = true;\\n            emit RoleGranted(role, account, _msgSender());\\n        }\\n    }\\n\\n    function _revokeRole(bytes32 role, address account) private {\\n        if (hasRole(role, account)) {\\n            _roles[role].members[account] = false;\\n            emit RoleRevoked(role, account, _msgSender());\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x98fac37221212c8f126f198d262a4df86394bd1a9969f61e40739fe8ac013dd8\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant alphabet = \\\"0123456789abcdef\\\";\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = alphabet[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n}\\n\",\"keccak256\":\"0x456e9b3a2bfe189b5249857f624f4139e59331db518483b456c4e587a20552e0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0x5718c5df9bd67ac68a796961df938821bb5dc0cd4c6118d77e9145afb187409b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xa28007762d9da9db878dd421960c8cb9a10471f47ab5c1b3309bfe48e9e79ff4\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/access/Ownable.sol": {
                "Ownable": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "previousOwner",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newOwner",
                                    "type": "address"
                                }
                            ],
                            "name": "OwnershipTransferred",
                            "type": "event"
                        },
                        {
                            "inputs": [],
                            "name": "owner",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "renounceOwnership",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newOwner",
                                    "type": "address"
                                }
                            ],
                            "name": "transferOwnership",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.",
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "details": "Initializes the contract setting the deployer as the initial owner."
                            },
                            "owner()": {
                                "details": "Returns the address of the current owner."
                            },
                            "renounceOwnership()": {
                                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
                            },
                            "transferOwnership(address)": {
                                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "owner()": "8da5cb5b",
                            "renounceOwnership()": "715018a6",
                            "transferOwnership(address)": "f2fde38b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which provides a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with {transferOwnership}. This module is used through inheritance. It will make available the modifier `onlyOwner`, which can be applied to your functions to restrict their use to the owner.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/Ownable.sol\":\"Ownable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 627,
                                "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/security/Pausable.sol": {
                "Pausable": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "Paused",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "Unpaused",
                            "type": "event"
                        },
                        {
                            "inputs": [],
                            "name": "paused",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.",
                        "events": {
                            "Paused(address)": {
                                "details": "Emitted when the pause is triggered by `account`."
                            },
                            "Unpaused(address)": {
                                "details": "Emitted when the pause is lifted by `account`."
                            }
                        },
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "details": "Initializes the contract in unpaused state."
                            },
                            "paused()": {
                                "details": "Returns true if the contract is paused, and false otherwise."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "paused()": "5c975abb"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"events\":{\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the contract in unpaused state.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/security/Pausable.sol\":\"Pausable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/security/Pausable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract Pausable is Context {\\n    /**\\n     * @dev Emitted when the pause is triggered by `account`.\\n     */\\n    event Paused(address account);\\n\\n    /**\\n     * @dev Emitted when the pause is lifted by `account`.\\n     */\\n    event Unpaused(address account);\\n\\n    bool private _paused;\\n\\n    /**\\n     * @dev Initializes the contract in unpaused state.\\n     */\\n    constructor () {\\n        _paused = false;\\n    }\\n\\n    /**\\n     * @dev Returns true if the contract is paused, and false otherwise.\\n     */\\n    function paused() public view virtual returns (bool) {\\n        return _paused;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is not paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    modifier whenNotPaused() {\\n        require(!paused(), \\\"Pausable: paused\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    modifier whenPaused() {\\n        require(paused(), \\\"Pausable: not paused\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Triggers stopped state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    function _pause() internal virtual whenNotPaused {\\n        _paused = true;\\n        emit Paused(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns to normal state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    function _unpause() internal virtual whenPaused {\\n        _paused = false;\\n        emit Unpaused(_msgSender());\\n    }\\n}\\n\",\"keccak256\":\"0xab1f67e4c96dfe0e3875d22883c3dee5411914f40ce0c54ef407f030d803512e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 747,
                                "contract": "@openzeppelin/contracts/security/Pausable.sol:Pausable",
                                "label": "_paused",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_bool"
                            }
                        ],
                        "types": {
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
                "ERC20": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "string",
                                    "name": "name_",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "symbol_",
                                    "type": "string"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "owner",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "value",
                                    "type": "uint256"
                                }
                            ],
                            "name": "Approval",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "from",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "to",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "value",
                                    "type": "uint256"
                                }
                            ],
                            "name": "Transfer",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "owner",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                }
                            ],
                            "name": "allowance",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "approve",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "balanceOf",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "decimals",
                            "outputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "subtractedValue",
                                    "type": "uint256"
                                }
                            ],
                            "name": "decreaseAllowance",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "addedValue",
                                    "type": "uint256"
                                }
                            ],
                            "name": "increaseAllowance",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "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": "recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "transfer",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "sender",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "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}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.",
                        "kind": "dev",
                        "methods": {
                            "allowance(address,address)": {
                                "details": "See {IERC20-allowance}."
                            },
                            "approve(address,uint256)": {
                                "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
                            },
                            "balanceOf(address)": {
                                "details": "See {IERC20-balanceOf}."
                            },
                            "constructor": {
                                "details": "Sets the values for {name} and {symbol}. The defaut value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction."
                            },
                            "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 value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
                            },
                            "decreaseAllowance(address,uint256)": {
                                "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
                            },
                            "increaseAllowance(address,uint256)": {
                                "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
                            },
                            "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": "See {IERC20-totalSupply}."
                            },
                            "transfer(address,uint256)": {
                                "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
                            },
                            "transferFrom(address,address,uint256)": {
                                "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_866": {
                                    "entryPoint": null,
                                    "id": 866,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_decode_string_fromMemory": {
                                    "entryPoint": 292,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": {
                                    "entryPoint": 475,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 581,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 270,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:1985:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "46:95:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "63:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "70:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "75:10:66",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "66:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "66:20:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "56:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "56:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "56:31:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "103:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "106:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "96:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "96:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "96:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "127:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "130:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "120:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "120:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "120:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "14:127:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "210:821:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "259:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "268:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "271:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "261:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "261:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "261:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "238:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "246:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "234:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "234:17:66"
                                                                            },
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "253:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "230:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "230:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "223:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "223:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "220:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "284:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "300:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "294:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "294:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "288:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "316:28:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "334:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "338:1:66",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "330:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "330:10:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "342:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "326:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "326:18:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "320:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "367:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "369:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "369:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "369:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "359:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "363:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "356:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "356:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "353:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "398:17:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "412:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "408:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "408:7:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "402:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "424:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "444:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "438:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "438:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "428:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "456:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "478:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_1",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "502:2:66"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "506:4:66",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "498:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "498:13:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "_3",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "513:2:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "494:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "494:22:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "518:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "490:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "490:31:66"
                                                                            },
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "523:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "486:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "486:40:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "474:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "474:53:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "460:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "586:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "588:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "588:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "588:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "545:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "557:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "542:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "542:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "565:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "577:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "562:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "562:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "539:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "539:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "536:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "624:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "628:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "617:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "617:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "617:22:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "655:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "663:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "648:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "648:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "648:18:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "675:14:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "685:4:66",
                                                                "type": "",
                                                                "value": "0x20"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "679:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "735:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "744:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "747:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "737:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "737:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "737:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "712:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "720:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "708:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "708:15:66"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "725:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "704:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "704:24:66"
                                                                    },
                                                                    {
                                                                        "name": "end",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "730:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "701:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "701:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "698:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "760:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "769:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "764:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "825:87:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "memPtr",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "854:6:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "862:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "850:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "850:14:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "_4",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "866:2:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "846:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "846:23:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "offset",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "885:6:66"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "893:1:66"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "881:3:66"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "881:14:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_4",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "897:2:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "877:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "877:23:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "871:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "871:30:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "839:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "839:63:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "839:63:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "790:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "793:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "787:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "787:9:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "797:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "799:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "808:1:66"
                                                                                },
                                                                                {
                                                                                    "name": "_4",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "811:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "804:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "804:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "799:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "783:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "779:133:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "942:59:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "memPtr",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "971:6:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "979:2:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "967:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "967:15:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "_4",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "984:2:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "963:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "963:24:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "989:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "956:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "956:35:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "956:35:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "927:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "930:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "924:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "924:9:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "921:80:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1010:15:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1019:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "array",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1010:5:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_string_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "184:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "192:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "array",
                                                        "nodeType": "YulTypedName",
                                                        "src": "200:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "146:885:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1154:444:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1200:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1209:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1212:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1202:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1202:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1202:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1175:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1184:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1171:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1171:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1196:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1167:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1167:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1164:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1225:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1245:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1239:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1239:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1229:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1264:28:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1282:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1286:1:66",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1278:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1278:10:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1290:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1274:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1274:18:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1268:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1319:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1328:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1331:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1321:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1321:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1321:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1307:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1315:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1304:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1304:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1301:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1344:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1387:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1398:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1383:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1383:22:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1407:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_string_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1354:28:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1354:61:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1344:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1424:41:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1450:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1461:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1446:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1446:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1440:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1440:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1428:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1494:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1503:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1506:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1496:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1496:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1496:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1480:8:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1490:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1477:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1477:16:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1474:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1519:73:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1562:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1573:8:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1558:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1558:24:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1584:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_string_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1529:28:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1529:63:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1519:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1112:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1123:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1135:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1143:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1036:562:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1658:325:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1668:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1682:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1685:4:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1678:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1678:12:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1668:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1699:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1729:4:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1735:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1725:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1725:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1703:18:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1776:31:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1778:27:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1792:6:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1800:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1788:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1788:17:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1778:6:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1756:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1749:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1749:26:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1746:61:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1866:111:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1887:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "1894:3:66",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "1899:10:66",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1890:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1890:20:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1880:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1880:31:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1880:31:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1931:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1934:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1924:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1924:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1924:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1959:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1962:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1952:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1952:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1952:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1822:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1845:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1853:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1842:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1842:14:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1819:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1819:38:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1816:161:66"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1638:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1647:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1603:380:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        if gt(i, _1)\n        {\n            mstore(add(add(memPtr, _1), _4), 0)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60806040523480156200001157600080fd5b5060405162000e1538038062000e158339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b610b8380620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610944565b60405180910390f35b6100ff6100fa3660046109e0565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a0a565b6102a8565b604051601281526020016100e3565b6100ff6101513660046109e0565b61039a565b610113610164366004610a46565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d66103de565b6100ff6101a23660046109e0565b6103ed565b6100ff6101b53660046109e0565b6104c7565b6101136101c8366004610a68565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a9b565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a9b565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b600061029f3384846104d4565b50600192915050565b60006102b5848484610687565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203384529091529020548281101561037b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61038f853361038a8685610b1e565b6104d4565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161029f91859061038a908690610b35565b60606004805461020f90610a9b565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156104ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610372565b6104bd338561038a8685610b1e565b5060019392505050565b600061029f338484610687565b73ffffffffffffffffffffffffffffffffffffffff8316610576576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff8216610619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661072a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff82166107cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610372565b61088d8282610b1e565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526020819052604080822093909355908516815290812080548492906108d0908490610b35565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093691815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561097157858101830151858201604001528201610955565b81811115610983576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109db57600080fd5b919050565b600080604083850312156109f357600080fd5b6109fc836109b7565b946020939093013593505050565b600080600060608486031215610a1f57600080fd5b610a28846109b7565b9250610a36602085016109b7565b9150604084013590509250925092565b600060208284031215610a5857600080fd5b610a61826109b7565b9392505050565b60008060408385031215610a7b57600080fd5b610a84836109b7565b9150610a92602084016109b7565b90509250929050565b600181811c90821680610aaf57607f821691505b60208210811415610ae9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610b3057610b30610aef565b500390565b60008219821115610b4857610b48610aef565b50019056fea264697066735822122008c831d69a5a22072e9fad287bdabcf9d5d61cf4e90bfa44ad13e69fe78f8cb064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xE15 CODESIZE SUB DUP1 PUSH3 0xE15 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1DB JUMP JUMPDEST DUP2 MLOAD PUSH3 0x49 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x5F SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP POP POP PUSH3 0x282 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x76 SWAP1 PUSH3 0x245 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x9A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xE5 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xE5 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xC8 JUMP JUMPDEST POP PUSH3 0xF3 SWAP3 SWAP2 POP PUSH3 0xF7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xF3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0xF8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x153 JUMPI PUSH3 0x153 PUSH3 0x10E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x17E JUMPI PUSH3 0x17E PUSH3 0x10E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x1BF JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x1A0 JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x1D1 JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x215 DUP7 DUP4 DUP8 ADD PUSH3 0x124 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x23B DUP6 DUP3 DUP7 ADD PUSH3 0x124 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x25A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x27C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xB83 DUP1 PUSH3 0x292 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x944 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xA0A JUMP JUMPDEST PUSH2 0x2A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0xA46 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x3DE JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x3ED JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x4C7 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA68 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9B 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 0x23B SWAP1 PUSH2 0xA9B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F CALLER DUP5 DUP5 PUSH2 0x4D4 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B5 DUP5 DUP5 DUP5 PUSH2 0x687 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x37B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x38F DUP6 CALLER PUSH2 0x38A DUP7 DUP6 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x4D4 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x29F SWAP2 DUP6 SWAP1 PUSH2 0x38A SWAP1 DUP7 SWAP1 PUSH2 0xB35 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x4AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH2 0x4BD CALLER DUP6 PUSH2 0x38A DUP7 DUP6 PUSH2 0xB1E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F CALLER DUP5 DUP5 PUSH2 0x687 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x576 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x619 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x72A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7CD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x883 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH2 0x88D DUP3 DUP3 PUSH2 0xB1E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8D0 SWAP1 DUP5 SWAP1 PUSH2 0xB35 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x936 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x955 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FC DUP4 PUSH2 0x9B7 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA28 DUP5 PUSH2 0x9B7 JUMP JUMPDEST SWAP3 POP PUSH2 0xA36 PUSH1 0x20 DUP6 ADD PUSH2 0x9B7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA61 DUP3 PUSH2 0x9B7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA84 DUP4 PUSH2 0x9B7 JUMP JUMPDEST SWAP2 POP PUSH2 0xA92 PUSH1 0x20 DUP5 ADD PUSH2 0x9B7 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAAF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xAE9 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xB30 JUMPI PUSH2 0xB30 PUSH2 0xAEF JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xB48 JUMPI PUSH2 0xB48 PUSH2 0xAEF JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD 0xC8 BALANCE 0xD6 SWAP11 GAS 0x22 SMOD 0x2E SWAP16 0xAD 0x28 PUSH28 0xDABCF9D5D61CF4E90BFA44AD13E69FE78F8CB064736F6C6343000809 STOP CALLER ",
                            "sourceMap": "1321:9279:7:-:0;;;1898:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1965:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1988:17:7;;;;:7;;:17;;;;;:::i;:::-;;1898:114;;1321:9279;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1321:9279:7;;;-1:-1:-1;1321:9279:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:66;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:66;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:66;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:66:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:66;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;1321:9279:7;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_approve_1316": {
                                    "entryPoint": 1236,
                                    "id": 1316,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_beforeTokenTransfer_1327": {
                                    "entryPoint": null,
                                    "id": 1327,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_transfer_1162": {
                                    "entryPoint": 1671,
                                    "id": 1162,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@allowance_959": {
                                    "entryPoint": null,
                                    "id": 959,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@approve_980": {
                                    "entryPoint": 658,
                                    "id": 980,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@balanceOf_920": {
                                    "entryPoint": null,
                                    "id": 920,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@decimals_896": {
                                    "entryPoint": null,
                                    "id": 896,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@decreaseAllowance_1092": {
                                    "entryPoint": 1005,
                                    "id": 1092,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@increaseAllowance_1054": {
                                    "entryPoint": 922,
                                    "id": 1054,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@name_876": {
                                    "entryPoint": 512,
                                    "id": 876,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@symbol_886": {
                                    "entryPoint": 990,
                                    "id": 886,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@totalSupply_906": {
                                    "entryPoint": null,
                                    "id": 906,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@transferFrom_1027": {
                                    "entryPoint": 680,
                                    "id": 1027,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@transfer_941": {
                                    "entryPoint": 1223,
                                    "id": 941,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_address": {
                                    "entryPoint": 2487,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 2630,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_address": {
                                    "entryPoint": 2664,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256": {
                                    "entryPoint": 2570,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_addresst_uint256": {
                                    "entryPoint": 2528,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 2372,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 2869,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_uint256": {
                                    "entryPoint": 2846,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 2715,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 2799,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:6218:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "135:535:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "145:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "155:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "149:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "173:9:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "184:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "166:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "166:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "166:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "196:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "216:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "210:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "210:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "200:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "243:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "254:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "239:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "239:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "259:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "232:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "232:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "232:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "275:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "284:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "279:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "344:90:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "373:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "384:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "369:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "369:17:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "388:2:66",
                                                                                            "type": "",
                                                                                            "value": "64"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "365:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "365:26:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "value0",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "407:6:66"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "415:1:66"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "403:3:66"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "403:14:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "419:2:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "399:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "399:23:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "393:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "393:30:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "358:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "358:66:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "358:66:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "305:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "308:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "302:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "302:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "316:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "318:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "327:1:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "330:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "323:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "323:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "318:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "298:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "294:140:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "468:66:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "497:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "length",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "508:6:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "493:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "493:22:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "517:2:66",
                                                                                            "type": "",
                                                                                            "value": "64"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "489:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "489:31:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "522:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "482:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "482:42:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "482:42:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "449:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "452:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "446:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "446:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "443:91:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "543:121:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "559:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "578:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "586:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "574:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "574:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "591:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "570:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "570:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "555:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "555:104:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "661:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "551:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "551:113:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "543:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "104:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "115:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "126:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:656:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "724:147:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "734:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "756:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "743:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "743:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "734:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "849:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "858:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "861:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "851:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "851:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "851:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "785:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "796:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "803:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "792:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "792:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "782:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "782:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "775:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "775:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "772:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "703:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "714:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "675:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "963:167:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1009:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1018:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1021:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1011:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1011:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1011:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "984:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "993:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "980:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "980:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1005:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "976:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "976:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "973:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1034:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1063:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1044:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1044:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1034:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1082:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1109:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1120:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1105:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1105:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1092:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1092:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1082:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "921:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "932:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "944:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "952:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "876:254:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1230:92:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1240:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1252:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1263:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1248:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1248:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1240:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1282:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1307:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1300:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1300:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1293:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1293:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1275:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1275:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1275:41:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1199:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1210:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1221:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1135:187:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1428:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1438:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1450:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1461:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1446:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1446:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1438:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1480:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1491:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1473:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1473:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1473:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1397:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1408:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1419:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1327:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1613:224:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1659:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1668:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1671:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1661:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1661:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1661:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1634:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1643:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1630:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1630:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1655:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1626:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1626:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1623:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1684:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1713:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1694:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1694:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1684:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1732:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1765:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1776:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1761:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1761:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1742:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1742:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1732:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1789:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1816:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1827:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1812:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1812:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1799:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1799:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1789:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1563:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1574:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1586:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1594:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1602:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1509:328:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1939:87:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1949:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1961:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1972:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1957:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1957:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1949:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1991:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2006:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2014:4:66",
                                                                                "type": "",
                                                                                "value": "0xff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2002:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2002:17:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1984:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1984:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1984:36:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1908:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1919:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1930:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1842:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2101:116:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2147:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2156:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2159:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2149:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2149:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2149:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2122:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2131:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2118:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2118:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2143:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2114:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2114:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2111:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2172:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2201:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2182:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2182:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2172:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2067:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2078:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2090:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2031:186:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2309:173:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2355:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2364:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2367:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2357:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2357:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2357:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2330:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2339:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2326:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2326:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2351:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2322:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2322:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2319:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2380:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2409:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2390:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2390:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2380:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2428:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2461:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2472:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2457:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2457:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2438:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2438:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2428:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2267:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2278:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2290:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2298:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2222:260:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2542:382:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2552:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2566:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2569:4:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2562:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2562:12:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2552:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2583:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2613:4:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2619:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2609:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2609:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2587:18:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2660:31:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2662:27:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2676:6:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2684:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2672:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2672:17:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2662:6:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2640:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2633:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2633:26:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2630:61:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2750:168:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2771:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2774:77:66",
                                                                                    "type": "",
                                                                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2764:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2764:88:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2764:88:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2872:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2875:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2865:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2865:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2865:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2900:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2903:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2893:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2893:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2893:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2706:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2729:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2737:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2726:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2726:14:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2703:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2703:38:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2700:218:66"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2522:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2531:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2487:437:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3103:230:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3120:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3131:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3113:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3113:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3113:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3154:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3165:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3150:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3150:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3170:2:66",
                                                                        "type": "",
                                                                        "value": "40"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3143:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3143:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3143:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3193:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3204:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3189:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3189:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3209:34:66",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer amount exceeds a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3182:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3182:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3182:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3264:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3275:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3260:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3260:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6c6c6f77616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3280:10:66",
                                                                        "type": "",
                                                                        "value": "llowance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3253:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3253:38:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3253:38:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3300:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3312:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3323:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3308:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3308:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3300:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3080:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3094:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2929:404:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3370:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3387:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3390:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3380:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3380:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3380:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3484:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3487:4:66",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3477:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3477:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3477:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3508:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3511:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3501:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3501:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3501:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "3338:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3576:76:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3598:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3600:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3600:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3600:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3592:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3595:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3589:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3589:8:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3586:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3629:17:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3641:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3644:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3637:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3637:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3629:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3558:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3561:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3567:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3527:125:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3705:80:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3732:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3734:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3734:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3734:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3721:1:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3728:1:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3724:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3724:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3718:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3718:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3715:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3763:16:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3774:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3777:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3770:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3770:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3763:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3688:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3691:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3697:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3657:128:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3964:227:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3981:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3992:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3974:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3974:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3974:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4015:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4026:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4011:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4011:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4031:2:66",
                                                                        "type": "",
                                                                        "value": "37"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4004:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4004:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4004:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4054:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4065:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4050:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4050:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4070:34:66",
                                                                        "type": "",
                                                                        "value": "ERC20: decreased allowance below"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4043:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4043:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4043:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4125:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4136:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4121:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4121:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "207a65726f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4141:7:66",
                                                                        "type": "",
                                                                        "value": " zero"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4114:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4114:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4114:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4158:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4170:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4181:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4166:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4166:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4158:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3941:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3955:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3790:401:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4370:226:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4387:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4398:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4380:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4380:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4380:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4421:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4432:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4417:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4417:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4437:2:66",
                                                                        "type": "",
                                                                        "value": "36"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4410:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4410:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4410:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4460:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4471:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4456:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4456:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4476:34:66",
                                                                        "type": "",
                                                                        "value": "ERC20: approve from the zero add"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4449:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4449:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4449:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4531:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4542:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4527:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4527:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "72657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4547:6:66",
                                                                        "type": "",
                                                                        "value": "ress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4520:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4520:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4520:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4563:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4575:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4586:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4571:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4571:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4563:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4347:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4361:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4196:400:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4775:224:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4792:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4803:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4785:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4785:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4785:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4826:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4837:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4822:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4822:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4842:2:66",
                                                                        "type": "",
                                                                        "value": "34"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4815:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4815:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4815:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4865:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4876:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4861:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4861:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4881:34:66",
                                                                        "type": "",
                                                                        "value": "ERC20: approve to the zero addre"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4854:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4854:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4854:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4936:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4947:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4932:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4932:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "7373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4952:4:66",
                                                                        "type": "",
                                                                        "value": "ss"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4925:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4925:32:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4925:32:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4966:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4978:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4989:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4974:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4974:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4966:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4752:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4766:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4601:398:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5178:227:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5195:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5206:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5188:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5188:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5188:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5229:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5240:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5225:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5225:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5245:2:66",
                                                                        "type": "",
                                                                        "value": "37"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5218:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5218:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5218:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5268:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5279:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5264:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5264:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5284:34:66",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer from the zero ad"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5257:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5257:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5257:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5339:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5350:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5335:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5335:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5355:7:66",
                                                                        "type": "",
                                                                        "value": "dress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5328:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5328:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5328:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5372:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5384:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5395:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5380:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5380:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5372:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5155:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5169:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5004:401:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5584:225:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5601:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5612:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5594:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5594:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5594:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5635:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5646:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5631:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5631:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5651:2:66",
                                                                        "type": "",
                                                                        "value": "35"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5624:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5624:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5624:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5674:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5685:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5670:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5670:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5690:34:66",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer to the zero addr"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5663:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5663:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5663:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5745:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5756:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5741:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5741:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5761:5:66",
                                                                        "type": "",
                                                                        "value": "ess"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5734:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5734:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5734:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5776:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5788:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5799:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5784:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5784:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5776:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5561:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5575:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5410:399:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5988:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6005:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6016:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5998:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5998:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5998:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6039:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6050:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6035:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6035:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6055:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6028:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6028:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6028:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6078:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6089:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6074:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6074:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6094:34:66",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer amount exceeds b"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6067:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6067:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6067:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6149:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6160:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6145:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6145:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "616c616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6165:8:66",
                                                                        "type": "",
                                                                        "value": "alance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6138:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6138:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6138:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6183:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6195:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6206:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6191:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6191:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6183:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5965:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5979:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5814:402:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds a\")\n        mstore(add(headStart, 96), \"llowance\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610944565b60405180910390f35b6100ff6100fa3660046109e0565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a0a565b6102a8565b604051601281526020016100e3565b6100ff6101513660046109e0565b61039a565b610113610164366004610a46565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d66103de565b6100ff6101a23660046109e0565b6103ed565b6100ff6101b53660046109e0565b6104c7565b6101136101c8366004610a68565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610a9b565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610a9b565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b600061029f3384846104d4565b50600192915050565b60006102b5848484610687565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203384529091529020548281101561037b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61038f853361038a8685610b1e565b6104d4565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161029f91859061038a908690610b35565b60606004805461020f90610a9b565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156104ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610372565b6104bd338561038a8685610b1e565b5060019392505050565b600061029f338484610687565b73ffffffffffffffffffffffffffffffffffffffff8316610576576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff8216610619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661072a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff82166107cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610883576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610372565b61088d8282610b1e565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526020819052604080822093909355908516815290812080548492906108d0908490610b35565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093691815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561097157858101830151858201604001528201610955565b81811115610983576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109db57600080fd5b919050565b600080604083850312156109f357600080fd5b6109fc836109b7565b946020939093013593505050565b600080600060608486031215610a1f57600080fd5b610a28846109b7565b9250610a36602085016109b7565b9150604084013590509250925092565b600060208284031215610a5857600080fd5b610a61826109b7565b9392505050565b60008060408385031215610a7b57600080fd5b610a84836109b7565b9150610a92602084016109b7565b90509250929050565b600181811c90821680610aaf57607f821691505b60208210811415610ae9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610b3057610b30610aef565b500390565b60008219821115610b4857610b48610aef565b50019056fea264697066735822122008c831d69a5a22072e9fad287bdabcf9d5d61cf4e90bfa44ad13e69fe78f8cb064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x944 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0xA0A JUMP JUMPDEST PUSH2 0x2A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x39A JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0xA46 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x3DE JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x3ED JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E0 JUMP JUMPDEST PUSH2 0x4C7 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xA68 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9B 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 0x23B SWAP1 PUSH2 0xA9B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F CALLER DUP5 DUP5 PUSH2 0x4D4 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B5 DUP5 DUP5 DUP5 PUSH2 0x687 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x37B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x38F DUP6 CALLER PUSH2 0x38A DUP7 DUP6 PUSH2 0xB1E JUMP JUMPDEST PUSH2 0x4D4 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x29F SWAP2 DUP6 SWAP1 PUSH2 0x38A SWAP1 DUP7 SWAP1 PUSH2 0xB35 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xA9B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x4AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH2 0x4BD CALLER DUP6 PUSH2 0x38A DUP7 DUP6 PUSH2 0xB1E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F CALLER DUP5 DUP5 PUSH2 0x687 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x576 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x619 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x72A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7CD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x883 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH2 0x88D DUP3 DUP3 PUSH2 0xB1E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8D0 SWAP1 DUP5 SWAP1 PUSH2 0xB35 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x936 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x971 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x955 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x983 JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9FC DUP4 PUSH2 0x9B7 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA28 DUP5 PUSH2 0x9B7 JUMP JUMPDEST SWAP3 POP PUSH2 0xA36 PUSH1 0x20 DUP6 ADD PUSH2 0x9B7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA61 DUP3 PUSH2 0x9B7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA84 DUP4 PUSH2 0x9B7 JUMP JUMPDEST SWAP2 POP PUSH2 0xA92 PUSH1 0x20 DUP5 ADD PUSH2 0x9B7 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAAF JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xAE9 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xB30 JUMPI PUSH2 0xB30 PUSH2 0xAEF JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xB48 JUMPI PUSH2 0xB48 PUSH2 0xAEF JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD 0xC8 BALANCE 0xD6 SWAP11 GAS 0x22 SMOD 0x2E SWAP16 0xAD 0x28 PUSH28 0xDABCF9D5D61CF4E90BFA44AD13E69FE78F8CB064736F6C6343000809 STOP CALLER ",
                            "sourceMap": "1321:9279:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4174:166;;;;;;:::i;:::-;;:::i;:::-;;;1300:14:66;;1293:22;1275:41;;1263:2;1248:18;4174:166:7;1135:187:66;3165:106:7;3252:12;;3165:106;;;1473:25:66;;;1461:2;1446:18;3165:106:7;1327:177:66;4807:414:7;;;;;;:::i;:::-;;:::i;3014:91::-;;;3096:2;1984:36:66;;1972:2;1957:18;3014:91:7;1842:184:66;5616:212:7;;;;;;:::i;:::-;;:::i;3329:125::-;;;;;;:::i;:::-;3429:18;;3403:7;3429:18;;;;;;;;;;;;3329:125;2288:102;;;:::i;6315:371::-;;;;;;:::i;:::-;;:::i;3657:172::-;;;;;;:::i;:::-;;:::i;3887:149::-;;;;;;:::i;:::-;4002:18;;;;3976:7;4002:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3887:149;2077:98;2131:13;2163:5;2156:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:98;:::o;4174:166::-;4257:4;4273:39;665:10:12;4296:7:7;4305:6;4273:8;:39::i;:::-;-1:-1:-1;4329:4:7;4174:166;;;;:::o;4807:414::-;4913:4;4929:36;4939:6;4947:9;4958:6;4929:9;:36::i;:::-;5003:19;;;4976:24;5003:19;;;:11;:19;;;;;;;;665:10:12;5003:33:7;;;;;;;;5054:26;;;;5046:79;;;;;;;3131:2:66;5046:79:7;;;3113:21:66;3170:2;3150:18;;;3143:30;3209:34;3189:18;;;3182:62;3280:10;3260:18;;;3253:38;3308:19;;5046:79:7;;;;;;;;;5135:57;5144:6;665:10:12;5166:25:7;5185:6;5166:16;:25;:::i;:::-;5135:8;:57::i;:::-;-1:-1:-1;5210:4:7;;4807:414;-1:-1:-1;;;;4807:414:7:o;5616:212::-;665:10:12;5704:4:7;5752:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;5704:4;;5720:80;;5743:7;;5752:47;;5789:10;;5752:47;:::i;2288:102::-;2344:13;2376:7;2369:14;;;;;:::i;6315:371::-;665:10:12;6408:4:7;6451:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;6503:35;;;;6495:85;;;;;;;3992:2:66;6495:85:7;;;3974:21:66;4031:2;4011:18;;;4004:30;4070:34;4050:18;;;4043:62;4141:7;4121:18;;;4114:35;4166:19;;6495:85:7;3790:401:66;6495:85:7;6590:67;665:10:12;6613:7:7;6622:34;6641:15;6622:16;:34;:::i;6590:67::-;-1:-1:-1;6675:4:7;;6315:371;-1:-1:-1;;;6315:371:7:o;3657:172::-;3743:4;3759:42;665:10:12;3783:9:7;3794:6;3759:9;:42::i;9579:340::-;9680:19;;;9672:68;;;;;;;4398:2:66;9672:68:7;;;4380:21:66;4437:2;4417:18;;;4410:30;4476:34;4456:18;;;4449:62;4547:6;4527:18;;;4520:34;4571:19;;9672:68:7;4196:400:66;9672:68:7;9758:21;;;9750:68;;;;;;;4803:2:66;9750:68:7;;;4785:21:66;4842:2;4822:18;;;4815:30;4881:34;4861:18;;;4854:62;4952:4;4932:18;;;4925:32;4974:19;;9750:68:7;4601:398:66;9750:68:7;9829:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9880:32;;1473:25:66;;;9880:32:7;;1446:18:66;9880:32:7;;;;;;;9579:340;;;:::o;7160:592::-;7265:20;;;7257:70;;;;;;;5206:2:66;7257:70:7;;;5188:21:66;5245:2;5225:18;;;5218:30;5284:34;5264:18;;;5257:62;5355:7;5335:18;;;5328:35;5380:19;;7257:70:7;5004:401:66;7257:70:7;7345:23;;;7337:71;;;;;;;5612:2:66;7337:71:7;;;5594:21:66;5651:2;5631:18;;;5624:30;5690:34;5670:18;;;5663:62;5761:5;5741:18;;;5734:33;5784:19;;7337:71:7;5410:399:66;7337:71:7;7501:17;;;7477:21;7501:17;;;;;;;;;;;7536:23;;;;7528:74;;;;;;;6016:2:66;7528:74:7;;;5998:21:66;6055:2;6035:18;;;6028:30;6094:34;6074:18;;;6067:62;6165:8;6145:18;;;6138:36;6191:19;;7528:74:7;5814:402:66;7528:74:7;7632:22;7648:6;7632:13;:22;:::i;:::-;7612:17;;;;:9;:17;;;;;;;;;;;:42;;;;7664:20;;;;;;;;:30;;7688:6;;7612:9;7664:30;;7688:6;;7664:30;:::i;:::-;;;;;;;;7727:9;7710:35;;7719:6;7710:35;;;7738:6;7710:35;;;;1473:25:66;;1461:2;1446:18;;1327:177;7710:35:7;;;;;;;;7247:505;7160:592;;;:::o;14:656:66:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:66;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:66:o;675:196::-;743:20;;803:42;792:54;;782:65;;772:93;;861:1;858;851:12;772:93;675:196;;;:::o;876:254::-;944:6;952;1005:2;993:9;984:7;980:23;976:32;973:52;;;1021:1;1018;1011:12;973:52;1044:29;1063:9;1044:29;:::i;:::-;1034:39;1120:2;1105:18;;;;1092:32;;-1:-1:-1;;;876:254:66:o;1509:328::-;1586:6;1594;1602;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;1694:29;1713:9;1694:29;:::i;:::-;1684:39;;1742:38;1776:2;1765:9;1761:18;1742:38;:::i;:::-;1732:48;;1827:2;1816:9;1812:18;1799:32;1789:42;;1509:328;;;;;:::o;2031:186::-;2090:6;2143:2;2131:9;2122:7;2118:23;2114:32;2111:52;;;2159:1;2156;2149:12;2111:52;2182:29;2201:9;2182:29;:::i;:::-;2172:39;2031:186;-1:-1:-1;;;2031:186:66:o;2222:260::-;2290:6;2298;2351:2;2339:9;2330:7;2326:23;2322:32;2319:52;;;2367:1;2364;2357:12;2319:52;2390:29;2409:9;2390:29;:::i;:::-;2380:39;;2438:38;2472:2;2461:9;2457:18;2438:38;:::i;:::-;2428:48;;2222:260;;;;;:::o;2487:437::-;2566:1;2562:12;;;;2609;;;2630:61;;2684:4;2676:6;2672:17;2662:27;;2630:61;2737:2;2729:6;2726:14;2706:18;2703:38;2700:218;;;2774:77;2771:1;2764:88;2875:4;2872:1;2865:15;2903:4;2900:1;2893:15;2700:218;;2487:437;;;:::o;3338:184::-;3390:77;3387:1;3380:88;3487:4;3484:1;3477:15;3511:4;3508:1;3501:15;3527:125;3567:4;3595:1;3592;3589:8;3586:34;;;3600:18;;:::i;:::-;-1:-1:-1;3637:9:66;;3527:125::o;3657:128::-;3697:3;3728:1;3724:6;3721:1;3718:13;3715:39;;;3734:18;;:::i;:::-;-1:-1:-1;3770:9:66;;3657:128::o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "589400",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "allowance(address,address)": "infinite",
                                "approve(address,uint256)": "24594",
                                "balanceOf(address)": "2561",
                                "decimals()": "244",
                                "decreaseAllowance(address,uint256)": "26908",
                                "increaseAllowance(address,uint256)": "26897",
                                "name()": "infinite",
                                "symbol()": "infinite",
                                "totalSupply()": "2304",
                                "transfer(address,uint256)": "51189",
                                "transferFrom(address,address,uint256)": "infinite"
                            },
                            "internal": {
                                "_approve(address,address,uint256)": "infinite",
                                "_beforeTokenTransfer(address,address,uint256)": "infinite",
                                "_burn(address,uint256)": "infinite",
                                "_mint(address,uint256)": "infinite",
                                "_transfer(address,address,uint256)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "allowance(address,address)": "dd62ed3e",
                            "approve(address,uint256)": "095ea7b3",
                            "balanceOf(address)": "70a08231",
                            "decimals()": "313ce567",
                            "decreaseAllowance(address,uint256)": "a457c2d7",
                            "increaseAllowance(address,uint256)": "39509351",
                            "name()": "06fdde03",
                            "symbol()": "95d89b41",
                            "totalSupply()": "18160ddd",
                            "transfer(address,uint256)": "a9059cbb",
                            "transferFrom(address,address,uint256)": "23b872dd"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"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}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The defaut value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"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 value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"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\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.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 * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin guidelines: functions revert instead\\n * of returning `false` on failure. This behavior is nonetheless conventional\\n * and does not conflict with the expectations of ERC20 applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n    mapping (address => uint256) private _balances;\\n\\n    mapping (address => mapping (address => 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     * The defaut value of {decimals} is 18. To select a different value for\\n     * {decimals} you should overload it.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * 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 override 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 override 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 value {ERC20} uses, unless this function is\\n     * 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 override returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual override returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `recipient` cannot be the zero address.\\n     * - the caller must have a balance of at least `amount`.\\n     */\\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n        _transfer(_msgSender(), recipient, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n        _approve(_msgSender(), spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * Requirements:\\n     *\\n     * - `sender` and `recipient` cannot be the zero address.\\n     * - `sender` must have a balance of at least `amount`.\\n     * - the caller must have allowance for ``sender``'s tokens of at least\\n     * `amount`.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\\n        _transfer(sender, recipient, amount);\\n\\n        uint256 currentAllowance = _allowances[sender][_msgSender()];\\n        require(currentAllowance >= amount, \\\"ERC20: transfer amount exceeds allowance\\\");\\n        _approve(sender, _msgSender(), currentAllowance - amount);\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `spender` must have allowance for the caller of at least\\n     * `subtractedValue`.\\n     */\\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n        uint256 currentAllowance = _allowances[_msgSender()][spender];\\n        require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n        _approve(_msgSender(), spender, currentAllowance - subtractedValue);\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves tokens `amount` from `sender` to `recipient`.\\n     *\\n     * This is 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     * Requirements:\\n     *\\n     * - `sender` cannot be the zero address.\\n     * - `recipient` cannot be the zero address.\\n     * - `sender` must have a balance of at least `amount`.\\n     */\\n    function _transfer(address sender, address recipient, uint256 amount) internal virtual {\\n        require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n        require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(sender, recipient, amount);\\n\\n        uint256 senderBalance = _balances[sender];\\n        require(senderBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n        _balances[sender] = senderBalance - amount;\\n        _balances[recipient] += amount;\\n\\n        emit Transfer(sender, recipient, amount);\\n    }\\n\\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n     * the total supply.\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `to` cannot be the zero address.\\n     */\\n    function _mint(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n        _beforeTokenTransfer(address(0), account, amount);\\n\\n        _totalSupply += amount;\\n        _balances[account] += amount;\\n        emit Transfer(address(0), account, amount);\\n    }\\n\\n    /**\\n     * @dev Destroys `amount` tokens from `account`, reducing the\\n     * total supply.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     * - `account` must have at least `amount` tokens.\\n     */\\n    function _burn(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n        _beforeTokenTransfer(account, address(0), amount);\\n\\n        uint256 accountBalance = _balances[account];\\n        require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n        _balances[account] = accountBalance - amount;\\n        _totalSupply -= amount;\\n\\n        emit Transfer(account, address(0), amount);\\n    }\\n\\n    /**\\n     * @dev Sets `amount` 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    function _approve(address owner, address spender, uint256 amount) internal virtual {\\n        require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n        require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n        _allowances[owner][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * will be to transferred to `to`.\\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\\n}\\n\",\"keccak256\":\"0xfeccdcbf67b2006a715e5af1a4c7556004d95b2806552b5cc54e46e8eb7e887b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\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\",\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 837,
                                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                                "label": "_balances",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_mapping(t_address,t_uint256)"
                            },
                            {
                                "astId": 843,
                                "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": 845,
                                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                                "label": "_totalSupply",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 847,
                                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                                "label": "_name",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_string_storage"
                            },
                            {
                                "astId": 849,
                                "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": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "approve",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "balanceOf",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "totalSupply",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "transfer",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "sender",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "transferFrom",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Interface of the ERC20 standard as defined in the EIP.",
                        "events": {
                            "Approval(address,address,uint256)": {
                                "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
                            },
                            "Transfer(address,address,uint256)": {
                                "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
                            }
                        },
                        "kind": "dev",
                        "methods": {
                            "allowance(address,address)": {
                                "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
                            },
                            "approve(address,uint256)": {
                                "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
                            },
                            "balanceOf(address)": {
                                "details": "Returns the amount of tokens owned by `account`."
                            },
                            "totalSupply()": {
                                "details": "Returns the amount of tokens in existence."
                            },
                            "transfer(address,uint256)": {
                                "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
                            },
                            "transferFrom(address,address,uint256)": {
                                "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": 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.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"}},\"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": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "approve",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "balanceOf",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "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": "recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "transfer",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "sender",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "transferFrom",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._",
                        "kind": "dev",
                        "methods": {
                            "allowance(address,address)": {
                                "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
                            },
                            "approve(address,uint256)": {
                                "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
                            },
                            "balanceOf(address)": {
                                "details": "Returns the amount of tokens owned by `account`."
                            },
                            "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 amount of tokens in existence."
                            },
                            "transfer(address,uint256)": {
                                "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
                            },
                            "transferFrom(address,address,uint256)": {
                                "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": 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.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"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 amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\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\",\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
                "SafeERC20": {
                    "abi": [],
                    "devdoc": {
                        "details": "Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.",
                        "kind": "dev",
                        "methods": {},
                        "title": "SafeERC20",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb62382f49c004abb2e2078189cb74d123e89958652ddc7ab8e525e80cba804b64736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB PUSH3 0x382F49 0xC0 DIV 0xAB 0xB2 0xE2 SMOD DUP2 DUP10 0xCB PUSH21 0xD123E89958652DDC7AB8E525E80CBA804B64736F6C PUSH4 0x43000809 STOP CALLER ",
                            "sourceMap": "578:3197:10:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;578:3197:10;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bb62382f49c004abb2e2078189cb74d123e89958652ddc7ab8e525e80cba804b64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB PUSH3 0x382F49 0xC0 DIV 0xAB 0xB2 0xE2 SMOD DUP2 DUP10 0xCB PUSH21 0xD123E89958652DDC7AB8E525E80CBA804B64736F6C PUSH4 0x43000809 STOP CALLER ",
                            "sourceMap": "578:3197:10:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "_callOptionalReturn(contract IERC20,bytes memory)": "infinite",
                                "safeApprove(contract IERC20,address,uint256)": "infinite",
                                "safeDecreaseAllowance(contract IERC20,address,uint256)": "infinite",
                                "safeIncreaseAllowance(contract IERC20,address,uint256)": "infinite",
                                "safeTransfer(contract IERC20,address,uint256)": "infinite",
                                "safeTransferFrom(contract IERC20,address,address,uint256)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        // solhint-disable-next-line max-line-length\\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n    }\\n\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            uint256 newAllowance = oldAllowance - value;\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        if (returndata.length > 0) { // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/utils/Address.sol": {
                "Address": {
                    "abi": [],
                    "devdoc": {
                        "details": "Collection of functions related to the address type",
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200915804c8ae1cb6a98eb11f5d206d9d9d659d29fe38a13b5d8faf4cb7a0d579f64736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD ISZERO DUP1 0x4C DUP11 0xE1 0xCB PUSH11 0x98EB11F5D206D9D9D659D2 SWAP16 0xE3 DUP11 SGT 0xB5 0xD8 STATICCALL DELEGATECALL 0xCB PUSH27 0xD579F64736F6C6343000809003300000000000000000000000000 ",
                            "sourceMap": "126:7684:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;126:7684:11;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200915804c8ae1cb6a98eb11f5d206d9d9d659d29fe38a13b5d8faf4cb7a0d579f64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MULMOD ISZERO DUP1 0x4C DUP11 0xE1 0xCB PUSH11 0x98EB11F5D206D9D9D659D2 SWAP16 0xE3 DUP11 SGT 0xB5 0xD8 STATICCALL DELEGATECALL 0xCB PUSH27 0xD579F64736F6C6343000809003300000000000000000000000000 ",
                            "sourceMap": "126:7684:11:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "_verifyCallResult(bool,bytes memory,string memory)": "infinite",
                                "functionCall(address,bytes memory)": "infinite",
                                "functionCall(address,bytes memory,string memory)": "infinite",
                                "functionCallWithValue(address,bytes memory,uint256)": "infinite",
                                "functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite",
                                "functionDelegateCall(address,bytes memory)": "infinite",
                                "functionDelegateCall(address,bytes memory,string memory)": "infinite",
                                "functionStaticCall(address,bytes memory)": "infinite",
                                "functionStaticCall(address,bytes memory,string memory)": "infinite",
                                "isContract(address)": "infinite",
                                "sendValue(address payable,uint256)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/utils/Context.sol": {
                "Context": {
                    "abi": [],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/utils/Strings.sol": {
                "Strings": {
                    "abi": [],
                    "devdoc": {
                        "details": "String operations.",
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122005c9ac9d4342a8fc56099112416b1256d1db7af740c1982450a44e11e0956e6264736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV 0xC9 0xAC SWAP14 NUMBER TIMESTAMP 0xA8 0xFC JUMP MULMOD SWAP2 SLT COINBASE PUSH12 0x1256D1DB7AF740C1982450A4 0x4E GT 0xE0 SWAP6 PUSH15 0x6264736F6C63430008090033000000 ",
                            "sourceMap": "93:1878:13:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;93:1878:13;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122005c9ac9d4342a8fc56099112416b1256d1db7af740c1982450a44e11e0956e6264736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SDIV 0xC9 0xAC SWAP14 NUMBER TIMESTAMP 0xA8 0xFC JUMP MULMOD SWAP2 SLT COINBASE PUSH12 0x1256D1DB7AF740C1982450A4 0x4E GT 0xE0 SWAP6 PUSH15 0x6264736F6C63430008090033000000 ",
                            "sourceMap": "93:1878:13:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "toHexString(uint256)": "infinite",
                                "toHexString(uint256,uint256)": "infinite",
                                "toString(uint256)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant alphabet = \\\"0123456789abcdef\\\";\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = alphabet[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n}\\n\",\"keccak256\":\"0x456e9b3a2bfe189b5249857f624f4139e59331db518483b456c4e587a20552e0\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
                "ERC165": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes4",
                                    "name": "interfaceId",
                                    "type": "bytes4"
                                }
                            ],
                            "name": "supportsInterface",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.",
                        "kind": "dev",
                        "methods": {
                            "supportsInterface(bytes4)": {
                                "details": "See {IERC165-supportsInterface}."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "supportsInterface(bytes4)": "01ffc9a7"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0x5718c5df9bd67ac68a796961df938821bb5dc0cd4c6118d77e9145afb187409b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xa28007762d9da9db878dd421960c8cb9a10471f47ab5c1b3309bfe48e9e79ff4\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
                "IERC165": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes4",
                                    "name": "interfaceId",
                                    "type": "bytes4"
                                }
                            ],
                            "name": "supportsInterface",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.",
                        "kind": "dev",
                        "methods": {
                            "supportsInterface(bytes4)": {
                                "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "supportsInterface(bytes4)": "01ffc9a7"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xa28007762d9da9db878dd421960c8cb9a10471f47ab5c1b3309bfe48e9e79ff4\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/utils/math/SafeMath.sol": {
                "SafeMath": {
                    "abi": [],
                    "devdoc": {
                        "details": "Wrappers over Solidity's arithmetic operations. NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler now has built in overflow checking.",
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bacda8994ea8652ffeba2222389512b2f425af0fe55c59e0b1e543e6d01c38c164736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA 0xCD 0xA8 SWAP10 0x4E 0xA8 PUSH6 0x2FFEBA222238 SWAP6 SLT 0xB2 DELEGATECALL 0x25 0xAF 0xF 0xE5 0x5C MSIZE 0xE0 0xB1 0xE5 NUMBER 0xE6 0xD0 SHR CODESIZE 0xC1 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "398:6434:16:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;398:6434:16;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bacda8994ea8652ffeba2222389512b2f425af0fe55c59e0b1e543e6d01c38c164736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBA 0xCD 0xA8 SWAP10 0x4E 0xA8 PUSH6 0x2FFEBA222238 SWAP6 SLT 0xB2 DELEGATECALL 0x25 0xAF 0xF 0xE5 0x5C MSIZE 0xE0 0xB1 0xE5 NUMBER 0xE6 0xD0 SHR CODESIZE 0xC1 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "398:6434:16:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "add(uint256,uint256)": "infinite",
                                "div(uint256,uint256)": "infinite",
                                "div(uint256,uint256,string memory)": "infinite",
                                "mod(uint256,uint256)": "infinite",
                                "mod(uint256,uint256,string memory)": "infinite",
                                "mul(uint256,uint256)": "infinite",
                                "sub(uint256,uint256)": "infinite",
                                "sub(uint256,uint256,string memory)": "infinite",
                                "tryAdd(uint256,uint256)": "infinite",
                                "tryDiv(uint256,uint256)": "infinite",
                                "tryMod(uint256,uint256)": "infinite",
                                "tryMul(uint256,uint256)": "infinite",
                                "trySub(uint256,uint256)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations. NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler now has built in overflow checking.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            uint256 c = a + b;\\n            if (c < a) return (false, 0);\\n            return (true, c);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b > a) return (false, 0);\\n            return (true, a - b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n            // benefit is lost if 'b' is also tested.\\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n            if (a == 0) return (true, 0);\\n            uint256 c = a * b;\\n            if (c / a != b) return (false, 0);\\n            return (true, c);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b == 0) return (false, 0);\\n            return (true, a / b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b == 0) return (false, 0);\\n            return (true, a % b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a + b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting on\\n     * overflow (when the result is negative).\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a - b;\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a * b;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a / b;\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting when dividing by zero.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a % b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n     * overflow (when the result is negative).\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {trySub}.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b <= a, errorMessage);\\n            return a - b;\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b > 0, errorMessage);\\n            return a / b;\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting with custom message when dividing by zero.\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {tryMod}.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b > 0, errorMessage);\\n            return a % b;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@openzeppelin/contracts/utils/math/SignedSafeMath.sol": {
                "SignedSafeMath": {
                    "abi": [],
                    "devdoc": {
                        "details": "Wrappers over Solidity's arithmetic operations. NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler now has built in overflow checking.",
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204cc529461fff1bec2add1a08f492b5e3e5c09863385627e677d96d4331c6c7bc64736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C 0xC5 0x29 CHAINID 0x1F SELFDESTRUCT SHL 0xEC 0x2A 0xDD BYTE ADDMOD DELEGATECALL SWAP3 0xB5 0xE3 0xE5 0xC0 SWAP9 PUSH4 0x385627E6 PUSH24 0xD96D4331C6C7BC64736F6C63430008090033000000000000 ",
                            "sourceMap": "251:1399:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:1399:17;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204cc529461fff1bec2add1a08f492b5e3e5c09863385627e677d96d4331c6c7bc64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C 0xC5 0x29 CHAINID 0x1F SELFDESTRUCT SHL 0xEC 0x2A 0xDD BYTE ADDMOD DELEGATECALL SWAP3 0xB5 0xE3 0xE5 0xC0 SWAP9 PUSH4 0x385627E6 PUSH24 0xD96D4331C6C7BC64736F6C63430008090033000000000000 ",
                            "sourceMap": "251:1399:17:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "add(int256,int256)": "infinite",
                                "div(int256,int256)": "infinite",
                                "mul(int256,int256)": "infinite",
                                "sub(int256,int256)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations. NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler now has built in overflow checking.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\\n * now has built in overflow checking.\\n */\\nlibrary SignedSafeMath {\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        return a * b;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        return a / b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        return a - b;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        return a + b;\\n    }\\n}\\n\",\"keccak256\":\"0xd1ddc24b24f12a347093844dd645c3a96bcdce05d1f51b8650946ad404cb3c40\",\"license\":\"MIT\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@uma/core/contracts/common/implementation/Lockable.sol": {
                "Lockable": {
                    "abi": [
                        {
                            "inputs": [],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "title": "A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_2602": {
                                    "entryPoint": null,
                                    "id": 2602,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "6080604052348015600f57600080fd5b506000805460ff19166001179055603f80602a6000396000f3fe6080604052600080fdfea26469706673582212201447ad11e0a1d590c845401ff7d86a06c2977b06e74e2c86d74ce3e3b76f12c264736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3F DUP1 PUSH1 0x2A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ SELFBALANCE 0xAD GT 0xE0 LOG1 0xD5 SWAP1 0xC8 GASLIMIT BLOCKHASH 0x1F 0xF7 0xD8 PUSH11 0x6C2977B06E74E2C86D74C 0xE3 0xE3 0xB7 PUSH16 0x12C264736F6C63430008090033000000 ",
                            "sourceMap": "405:2280:18:-:0;;;460:439;;;;;;;;;-1:-1:-1;874:11:18;:18;;-1:-1:-1;;874:18:18;888:4;874:18;;;405:2280;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600080fdfea26469706673582212201447ad11e0a1d590c845401ff7d86a06c2977b06e74e2c86d74ce3e3b76f12c264736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EQ SELFBALANCE 0xAD GT 0xE0 LOG1 0xD5 SWAP1 0xC8 GASLIMIT BLOCKHASH 0x1F 0xF7 0xD8 PUSH11 0x6C2977B06E74E2C86D74C 0xE3 0xE3 0xB7 PUSH16 0x12C264736F6C63430008090033000000 ",
                            "sourceMap": "405:2280:18:-:0;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "12600",
                                "executionCost": "24290",
                                "totalCost": "36890"
                            },
                            "internal": {
                                "_postEntranceReset()": "infinite",
                                "_preEntranceCheck()": "infinite",
                                "_preEntranceSet()": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uma/core/contracts/common/implementation/Lockable.sol\":\"Lockable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@uma/core/contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 2594,
                                "contract": "@uma/core/contracts/common/implementation/Lockable.sol:Lockable",
                                "label": "_notEntered",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_bool"
                            }
                        ],
                        "types": {
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol": {
                "Arbitrum_ParentMessenger": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_inbox",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "_childChainId",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "childMessenger",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "targetHub",
                                    "type": "address"
                                }
                            ],
                            "name": "MessageReceivedFromChild",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "targetSpoke",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "l1CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint32",
                                    "name": "gasLimit",
                                    "type": "uint32"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "gasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "refundL2Address",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "childMessenger",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "sequenceNumber",
                                    "type": "uint256"
                                }
                            ],
                            "name": "MessageSentToChild",
                            "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": "childMessenger",
                                    "type": "address"
                                }
                            ],
                            "name": "SetChildMessenger",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint32",
                                    "name": "newDefaultGasLimit",
                                    "type": "uint32"
                                }
                            ],
                            "name": "SetDefaultGasLimit",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "newDefaultGasPrice",
                                    "type": "uint256"
                                }
                            ],
                            "name": "SetDefaultGasPrice",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "newMaxSubmissionCost",
                                    "type": "uint256"
                                }
                            ],
                            "name": "SetDefaultMaxSubmissionCost",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "governorHub",
                                    "type": "address"
                                }
                            ],
                            "name": "SetGovernorHub",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "governorSpoke",
                                    "type": "address"
                                }
                            ],
                            "name": "SetGovernorSpoke",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "oracleHub",
                                    "type": "address"
                                }
                            ],
                            "name": "SetOracleHub",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "oracleSpoke",
                                    "type": "address"
                                }
                            ],
                            "name": "SetOracleSpoke",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "newRefundL2Address",
                                    "type": "address"
                                }
                            ],
                            "name": "SetRefundL2Address",
                            "type": "event"
                        },
                        {
                            "stateMutability": "payable",
                            "type": "fallback"
                        },
                        {
                            "inputs": [],
                            "name": "childChainId",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "childMessenger",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "defaultGasLimit",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "defaultGasPrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "defaultMaxSubmissionCost",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getL1CallValue",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "governorHub",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "governorSpoke",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "inbox",
                            "outputs": [
                                {
                                    "internalType": "contract iArbitrum_Inbox",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "oracleHub",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "oracleSpoke",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "owner",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "processMessageFromCrossChainChild",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "refundL2Address",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "renounceOwnership",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "sendMessageToChild",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newChildMessenger",
                                    "type": "address"
                                }
                            ],
                            "name": "setChildMessenger",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newOracleSpoke",
                                    "type": "address"
                                }
                            ],
                            "name": "setChildOracleSpoke",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newParentMessenger",
                                    "type": "address"
                                }
                            ],
                            "name": "setChildParentMessenger",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "newDefaultGasLimit",
                                    "type": "uint32"
                                }
                            ],
                            "name": "setDefaultGasLimit",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "newDefaultGasPrice",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setDefaultGasPrice",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "newDefaultMaxSubmissionCost",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setDefaultMaxSubmissionCost",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newGovernorHub",
                                    "type": "address"
                                }
                            ],
                            "name": "setGovernorHub",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newGovernorSpoke",
                                    "type": "address"
                                }
                            ],
                            "name": "setGovernorSpoke",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newOracleHub",
                                    "type": "address"
                                }
                            ],
                            "name": "setOracleHub",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newOracleSpoke",
                                    "type": "address"
                                }
                            ],
                            "name": "setOracleSpoke",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newRefundl2Address",
                                    "type": "address"
                                }
                            ],
                            "name": "setRefundL2Address",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newOwner",
                                    "type": "address"
                                }
                            ],
                            "name": "transferOwnership",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "This contract is ownable and should be owned by the DVM governor.",
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "params": {
                                    "_childChainId": "The chain id of the Optimism L2 network this messenger should connect to.*",
                                    "_inbox": "Contract that sends generalized messages to the Arbitrum chain."
                                }
                            },
                            "getL1CallValue()": {
                                "returns": {
                                    "_0": "Amount of msg.value to include to send cross-chain message."
                                }
                            },
                            "owner()": {
                                "details": "Returns the address of the current owner."
                            },
                            "processMessageFromCrossChainChild(bytes)": {
                                "details": "The caller must be the the child messenger, sent over the canonical message bridge.Note that only the OracleHub can receive messages from the child messenger. Therefore we can always forward these messages to this contract. The OracleHub must implement processMessageFromChild to handle this message.",
                                "params": {
                                    "data": "data message sent from the child messenger. Should be an encoded function call or packed data."
                                }
                            },
                            "renounceOwnership()": {
                                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
                            },
                            "sendMessageToChild(bytes)": {
                                "details": "The caller must be the either the OracleHub or the GovernorHub. This is to send either a price or initiate a governance action to the OracleSpoke or GovernorSpoke on the child network.The recipient of this message is the child messenger. The messenger must implement processMessageFromParent which then forwards the data to the target either the OracleSpoke or the governorSpoke depending on the caller.This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.",
                                "params": {
                                    "data": "data message sent to the child messenger. Should be an encoded function call or packed data."
                                }
                            },
                            "setChildMessenger(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newChildMessenger": "address of the new child messenger, deployed on L2."
                                }
                            },
                            "setChildOracleSpoke(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.",
                                "params": {
                                    "newOracleSpoke": "the new oracle spoke address set on L2."
                                }
                            },
                            "setChildParentMessenger(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.",
                                "params": {
                                    "newParentMessenger": "the new parent messenger contract to be set on L2."
                                }
                            },
                            "setDefaultGasLimit(uint32)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newDefaultGasLimit": "the new L2 gas limit to be set."
                                }
                            },
                            "setDefaultGasPrice(uint256)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newDefaultGasPrice": "the new L2 gas price to be set."
                                }
                            },
                            "setDefaultMaxSubmissionCost(uint256)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newDefaultMaxSubmissionCost": "the new L2 max submission cost to be set."
                                }
                            },
                            "setGovernorHub(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newGovernorHub": "address of the new governor hub, deployed on L1 Ethereum."
                                }
                            },
                            "setGovernorSpoke(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newGovernorSpoke": "address of the new governor spoke, deployed on L2."
                                }
                            },
                            "setOracleHub(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newOracleHub": "address of the new oracle hub, deployed on L1 Ethereum."
                                }
                            },
                            "setOracleSpoke(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newOracleSpoke": "address of the new oracle spoke, deployed on L2."
                                }
                            },
                            "setRefundL2Address(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newRefundl2Address": "the new refund address to set."
                                }
                            },
                            "transferOwnership(address)": {
                                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_2602": {
                                    "entryPoint": null,
                                    "id": 2602,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_2741": {
                                    "entryPoint": null,
                                    "id": 2741,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_3071": {
                                    "entryPoint": null,
                                    "id": 3071,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_3253": {
                                    "entryPoint": null,
                                    "id": 3253,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_655": {
                                    "entryPoint": null,
                                    "id": 655,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@owner_664": {
                                    "entryPoint": null,
                                    "id": 664,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_uint256_fromMemory": {
                                    "entryPoint": 257,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:367:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "112:253:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "158:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "167:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "170:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "160:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "160:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "160:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "133:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "142:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "129:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "129:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "154:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "125:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "122:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "183:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "202:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "196:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "196:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "187:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "275:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "284:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "287:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "277:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "277:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "277:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "234:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "245:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "260:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "265:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "256:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "256:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "269:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "252:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "252:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "241:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "241:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "231:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "231:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "224:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "224:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "221:70:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "300:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "310:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "300:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "324:35:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "344:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "355:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "340:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "340:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "334:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "334:25:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "324:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "70:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "81:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "93:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "101:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:351:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n        value1 := mload(add(headStart, 32))\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60a06040526006805463ffffffff60a81b19166201312d60ae1b17905567016345785d8a00006007556402540be4006008553480156200003e57600080fd5b50604051620022f6380380620022f6833981016040819052620000619162000101565b6001600160a01b038216608052600080546001600160a01b031916339081178255604051839282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001556006805460ff60a01b1916600160a01b179055620000d86000546001600160a01b031690565b600980546001600160a01b0319166001600160a01b0392909216919091179055506200013d9050565b600080604083850312156200011557600080fd5b82516001600160a01b03811681146200012d57600080fd5b6020939093015192949293505050565b60805161218f620001676000396000818161059e0152818161083a0152611cb6015261218f6000f3fe6080604052600436106101a25760003560e01c80638b42a40a116100e0578063b14b0f5611610084578063d78eb11f11610061578063d78eb11f14610540578063e7b4294c14610556578063f2fde38b1461056c578063fb0e722b1461058c57005b8063b14b0f56146104dd578063bcafec13146104f3578063c75ba1f41461052057005b806395368d2e116100bd57806395368d2e1461042557806398e1e16f14610470578063a0cadf0b1461049d578063acab324c146104bd57005b80638b42a40a146103ad5780638d09550e146103cd5780638da5cb5b146103fa57005b80635f234d5311610147578063715018a611610124578063715018a61461032b57806373d62b4614610340578063816c24441461036d57806381e8ea461461038d57005b80635f234d531461028c57806362315c42146102de5780637092a2b2146102fe57005b8063109ff9a911610180578063109ff9a91461020c5780631a50ad301461022c5780634c09e6e81461024c578063524b6f701461026c57005b806308f1ed15146101a45780630a2b5e03146101cc5780630e28c764146101ec575b005b3480156101b057600080fd5b506101b96105c0565b6040519081526020015b60405180910390f35b3480156101d857600080fd5b506101a26101e7366004611d9e565b6105d7565b3480156101f857600080fd5b506101a2610207366004611d9e565b6106cc565b34801561021857600080fd5b506101a2610227366004611df1565b610813565b34801561023857600080fd5b506101a2610247366004611d9e565b610c4f565b34801561025857600080fd5b506101a2610267366004611df1565b610d3f565b34801561027857600080fd5b506101a2610287366004611ec0565b610f53565b34801561029857600080fd5b506002546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c3565b3480156102ea57600080fd5b506101a26102f9366004611d9e565b6110cf565b34801561030a57600080fd5b506006546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033757600080fd5b506101a26111bf565b34801561034c57600080fd5b506003546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037957600080fd5b506101a2610388366004611d9e565b6112af565b34801561039957600080fd5b506101a26103a8366004611d9e565b6113d8565b3480156103b957600080fd5b506101a26103c8366004611ee6565b6114c8565b3480156103d957600080fd5b506004546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561040657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b9565b34801561043157600080fd5b5060065461045b907501000000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101c3565b34801561047c57600080fd5b506005546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104a957600080fd5b506101a26104b8366004611ee6565b6115b3565b3480156104c957600080fd5b506101a26104d8366004611d9e565b61169e565b3480156104e957600080fd5b506101b960015481565b3480156104ff57600080fd5b506009546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561052c57600080fd5b506101a261053b366004611d9e565b6117e1565b34801561054c57600080fd5b506101b960075481565b34801561056257600080fd5b506101b960085481565b34801561057857600080fd5b506101a2610587366004611d9e565b6118d1565b34801561059857600080fd5b506102b97f000000000000000000000000000000000000000000000000000000000000000081565b60006105ca611a82565b6105d2611b08565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f378c0ff663d300fda5b8ad9e2dee32975ac78884277c539d47671a8d2b5d797b90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff16331461074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b60405173ffffffffffffffffffffffffffffffffffffffff82166024820152600090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc948564b0000000000000000000000000000000000000000000000000000000017905260025490915061080f90829073ffffffffffffffffffffffffffffffffffffffff16611b48565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e78cea926040518163ffffffff1660e01b815260040160206040518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190611eff565b90503373ffffffffffffffffffffffffffffffffffffffff821614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f46524f4d5f42524944474500000000000000000000000000000000006044820152606401610654565b60008173ffffffffffffffffffffffffffffffffffffffff1663ab5d89436040518163ffffffff1660e01b815260040160206040518083038186803b15801561099f57600080fd5b505afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190611eff565b73ffffffffffffffffffffffffffffffffffffffff166380648b026040518163ffffffff1660e01b815260040160206040518083038186803b158015610a1c57600080fd5b505afa158015610a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a549190611eff565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f4741544557415900000000000000006044820152606401610654565b610af3611a82565b610b20600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6003546001546040517f6423b60e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691636423b60e91610b79918890600401611f87565b600060405180830381600087803b158015610b9357600080fd5b505af1158015610ba7573d6000803e3d6000fd5b505060035460025460405173ffffffffffffffffffffffffffffffffffffffff9283169450911691507f0900453a3fb13750c432500a3921b5e974ecf1362cf21947630d60528d6bdd5990610bfd908890611fa8565b60405180910390a3610c49600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f5e60d1b338c1efe33cdc840bc15ae31e8c16ec95b6ce1e2a41d334fc28b69fbc90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff16331480610d7c575060045473ffffffffffffffffffffffffffffffffffffffff1633145b610de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792070726976696c656765642063616c6c6572000000000000000000006044820152606401610654565b610dea611a82565b610e17600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60035460009073ffffffffffffffffffffffffffffffffffffffff163314610e575760065473ffffffffffffffffffffffffffffffffffffffff16610e71565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008282604051602401610e88929190611fbb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f187717ce000000000000000000000000000000000000000000000000000000001790529050610f0a8183611b48565b5050610f50600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b610fdc611a82565b611009600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600680547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527f82420e5818c266bec5ae52072a057f0b7dae2f148dfa3cc4d2d94fcba1e99cfb906020015b60405180910390a1610f50600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe5c5f8656458e7eb3288974c5d146e8b37414ece1fccdfc3d377f58c5ead3a1690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b611338611a82565b611365600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fb1a697eb7cf7300ba21207eedfa9b7aebb022107febbc4fb28993d0f0ed291cb90602001611083565b60005473ffffffffffffffffffffffffffffffffffffffff163314611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2b3527e6183dce7676cc1a77ba1c1a943740ff02cfcd0d8ff32ae5b42205ccc590600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b611551611a82565b61157e600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60088190556040518181527f581b3a6bde09dc2c2cfaa74c9011ebfe71cda54431d7d96454ab00408651ba6c90602001611083565b60005473ffffffffffffffffffffffffffffffffffffffff163314611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b61163c611a82565b611669600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60078190556040518181527f9b163153ddcdb709353747ea107a1c8515a5123f3fa7ef84e537a675e695545990602001611083565b60005473ffffffffffffffffffffffffffffffffffffffff16331461171f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b60405173ffffffffffffffffffffffffffffffffffffffff82166024820152600090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a50ad300000000000000000000000000000000000000000000000000000000017905260025490915061080f90829073ffffffffffffffffffffffffffffffffffffffff16611b48565b60005473ffffffffffffffffffffffffffffffffffffffff163314611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f642412aa8027246b85920fe1c2364b4928dba23ead405e72d6c3ea90305d0a2990600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b73ffffffffffffffffffffffffffffffffffffffff81166119f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610654565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60065474010000000000000000000000000000000000000000900460ff16611b06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610654565b565b600654600854600091611b3b91750100000000000000000000000000000000000000000090910463ffffffff1690612022565b6007546105d2919061205f565b6000611b52611b08565b905080471015611bbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610654565b600254600954600754600654600854600094611c199473ffffffffffffffffffffffffffffffffffffffff918216949116928792750100000000000000000000000000000000000000000090910463ffffffff16908a611cb1565b60025460065460085460075460095460405195965073ffffffffffffffffffffffffffffffffffffffff94851695898616957fdeaf46ce401b41ffb05b383a170e15861664528eb335320ad3b5059afccd864e95611ca3958d958c95750100000000000000000000000000000000000000000090930463ffffffff16949193909216908b90612077565b60405180910390a350505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631b871c8d888b60008a8d8e8c8c8c6040518a63ffffffff1660e01b8152600401611d1d9897969594939291906120d7565b6020604051808303818588803b158015611d3657600080fd5b505af1158015611d4a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d6f9190612140565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5057600080fd5b600060208284031215611db057600080fd5b8135611dbb81611d7c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215611e0357600080fd5b813567ffffffffffffffff80821115611e1b57600080fd5b818401915084601f830112611e2f57600080fd5b813581811115611e4157611e41611dc2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611e8757611e87611dc2565b81604052828152876020848701011115611ea057600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215611ed257600080fd5b813563ffffffff81168114611dbb57600080fd5b600060208284031215611ef857600080fd5b5035919050565b600060208284031215611f1157600080fd5b8151611dbb81611d7c565b6000815180845260005b81811015611f4257602081850181015186830182015201611f26565b81811115611f54576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b828152604060208201526000611fa06040830184611f1c565b949350505050565b602081526000611dbb6020830184611f1c565b604081526000611fce6040830185611f1c565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561205a5761205a611ff3565b500290565b6000821982111561207257612072611ff3565b500190565b60e08152600061208a60e083018a611f1c565b60208301989098525063ffffffff9590951660408601526060850193909352608084019190915273ffffffffffffffffffffffffffffffffffffffff1660a083015260c090910152919050565b600061010073ffffffffffffffffffffffffffffffffffffffff808c1684528a602085015289604085015280891660608501528088166080850152508560a08401528460c08401528060e084015261213181840185611f1c565b9b9a5050505050505050505050565b60006020828403121561215257600080fd5b505191905056fea2646970667358221220eb471410ef1bfb2dc2ecf421357dc42c23642497057228e70b7368978ae5cf2364736f6c63430008090033",
                            "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE PUSH1 0x6 DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0xA8 SHL NOT AND PUSH3 0x1312D PUSH1 0xAE SHL OR SWAP1 SSTORE PUSH8 0x16345785D8A0000 PUSH1 0x7 SSTORE PUSH5 0x2540BE400 PUSH1 0x8 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x22F6 CODESIZE SUB DUP1 PUSH3 0x22F6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x61 SWAP2 PUSH3 0x101 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x80 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD DUP4 SWAP3 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH3 0xD8 PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x13D SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x12D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x218F PUSH3 0x167 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x59E ADD MSTORE DUP2 DUP2 PUSH2 0x83A ADD MSTORE PUSH2 0x1CB6 ADD MSTORE PUSH2 0x218F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B42A40A GT PUSH2 0xE0 JUMPI DUP1 PUSH4 0xB14B0F56 GT PUSH2 0x84 JUMPI DUP1 PUSH4 0xD78EB11F GT PUSH2 0x61 JUMPI DUP1 PUSH4 0xD78EB11F EQ PUSH2 0x540 JUMPI DUP1 PUSH4 0xE7B4294C EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xFB0E722B EQ PUSH2 0x58C JUMPI STOP JUMPDEST DUP1 PUSH4 0xB14B0F56 EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0xBCAFEC13 EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0xC75BA1F4 EQ PUSH2 0x520 JUMPI STOP JUMPDEST DUP1 PUSH4 0x95368D2E GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95368D2E EQ PUSH2 0x425 JUMPI DUP1 PUSH4 0x98E1E16F EQ PUSH2 0x470 JUMPI DUP1 PUSH4 0xA0CADF0B EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0xACAB324C EQ PUSH2 0x4BD JUMPI STOP JUMPDEST DUP1 PUSH4 0x8B42A40A EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x8D09550E EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3FA JUMPI STOP JUMPDEST DUP1 PUSH4 0x5F234D53 GT PUSH2 0x147 JUMPI DUP1 PUSH4 0x715018A6 GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x73D62B46 EQ PUSH2 0x340 JUMPI DUP1 PUSH4 0x816C2444 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x81E8EA46 EQ PUSH2 0x38D JUMPI STOP JUMPDEST DUP1 PUSH4 0x5F234D53 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x62315C42 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0x7092A2B2 EQ PUSH2 0x2FE JUMPI STOP JUMPDEST DUP1 PUSH4 0x109FF9A9 GT PUSH2 0x180 JUMPI DUP1 PUSH4 0x109FF9A9 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x1A50AD30 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x4C09E6E8 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x524B6F70 EQ PUSH2 0x26C JUMPI STOP JUMPDEST DUP1 PUSH4 0x8F1ED15 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xA2B5E03 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0xE28C764 EQ PUSH2 0x1EC JUMPI JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x5D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x6CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x227 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x247 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0xC4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH2 0xD3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EC0 JUMP JUMPDEST PUSH2 0xF53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x10CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x11BF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x388 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x12AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x3A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x13D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x3C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EE6 JUMP JUMPDEST PUSH2 0x14C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x431 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x45B SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x4B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EE6 JUMP JUMPDEST PUSH2 0x15B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x4D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x169E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x53B CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x17E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x587 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x18D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5CA PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x5D2 PUSH2 0x1B08 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x65D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x378C0FF663D300FDA5B8AD9E2DEE32975AC78884277C539D47671A8D2B5D797B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x74D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC948564B00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH2 0x80F SWAP1 DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B48 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE78CEA92 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8D6 SWAP2 SWAP1 PUSH2 0x1EFF JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x957 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F46524F4D5F4252494447450000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAB5D8943 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x99F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9D7 SWAP2 SWAP1 PUSH2 0x1EFF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x80648B02 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA54 SWAP2 SWAP1 PUSH2 0x1EFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAEB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0xAF3 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0xB20 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6423B60E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x6423B60E SWAP2 PUSH2 0xB79 SWAP2 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F87 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP5 POP SWAP2 AND SWAP2 POP PUSH32 0x900453A3FB13750C432500A3921B5E974ECF1362CF21947630D60528D6BDD59 SWAP1 PUSH2 0xBFD SWAP1 DUP9 SWAP1 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xC49 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xCD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5E60D1B338C1EFE33CDC840BC15AE31E8C16EC95B6CE1E2A41D334FC28B69FBC SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ DUP1 PUSH2 0xD7C JUMPI POP PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ JUMPDEST PUSH2 0xDE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792070726976696C656765642063616C6C657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0xDEA PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0xE17 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xE57 JUMPI PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE71 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xE88 SWAP3 SWAP2 SWAP1 PUSH2 0x1FBB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x187717CE00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 POP PUSH2 0xF0A DUP2 DUP4 PUSH2 0x1B48 JUMP JUMPDEST POP POP PUSH2 0xF50 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xFD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0xFDC PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1009 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH22 0x1000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP5 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x82420E5818C266BEC5AE52072A057F0B7DAE2F148DFA3CC4D2D94FCBA1E99CFB SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xF50 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1150 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xE5C5F8656458E7EB3288974C5D146E8B37414ECE1FCCDFC3D377F58C5EAD3A16 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1240 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1330 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0x1338 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1365 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xB1A697EB7CF7300BA21207EEDFA9B7AEBB022107FEBBC4FB28993D0F0ED291CB SWAP1 PUSH1 0x20 ADD PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1459 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2B3527E6183DCE7676CC1A77BA1C1A943740FF02CFCD0D8FF32AE5B42205CCC5 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1549 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0x1551 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x157E PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x581B3A6BDE09DC2C2CFAA74C9011EBFE71CDA54431D7D96454AB00408651BA6C SWAP1 PUSH1 0x20 ADD PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1634 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0x163C PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1669 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x9B163153DDCDB709353747EA107A1C8515A5123F3FA7EF84E537A675E6955459 SWAP1 PUSH1 0x20 ADD PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x171F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1A50AD3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH2 0x80F SWAP1 DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B48 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1862 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x642412AA8027246B85920FE1C2364B4928DBA23EAD405E72D6C3EA90305D0A29 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1952 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x19F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B06 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP2 PUSH2 0x1B3B SWAP2 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH2 0x2022 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x5D2 SWAP2 SWAP1 PUSH2 0x205F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B52 PUSH2 0x1B08 JUMP JUMPDEST SWAP1 POP DUP1 SELFBALANCE LT ISZERO PUSH2 0x1BBE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E74204554482062616C616E63650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH1 0x6 SLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP5 PUSH2 0x1C19 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP5 SWAP2 AND SWAP3 DUP8 SWAP3 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP11 PUSH2 0x1CB1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x6 SLOAD PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD SWAP6 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP6 DUP10 DUP7 AND SWAP6 PUSH32 0xDEAF46CE401B41FFB05B383A170E15861664528EB335320AD3B5059AFCCD864E SWAP6 PUSH2 0x1CA3 SWAP6 DUP14 SWAP6 DUP13 SWAP6 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 SWAP4 DIV PUSH4 0xFFFFFFFF AND SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP1 DUP12 SWAP1 PUSH2 0x2077 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B871C8D DUP9 DUP12 PUSH1 0x0 DUP11 DUP14 DUP15 DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D1D SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20D7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D6F SWAP2 SWAP1 PUSH2 0x2140 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1DBB DUP2 PUSH2 0x1D7C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1E2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1E41 JUMPI PUSH2 0x1E41 PUSH2 0x1DC2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1E87 JUMPI PUSH2 0x1E87 PUSH2 0x1DC2 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1EA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ED2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1DBB DUP2 PUSH2 0x1D7C JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F42 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1F26 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1F54 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1FA0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1F1C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1DBB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1F1C JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1FCE PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1F1C JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x205A JUMPI PUSH2 0x205A PUSH2 0x1FF3 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2072 JUMPI PUSH2 0x2072 PUSH2 0x1FF3 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP2 MSTORE PUSH1 0x0 PUSH2 0x208A PUSH1 0xE0 DUP4 ADD DUP11 PUSH2 0x1F1C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE POP PUSH4 0xFFFFFFFF SWAP6 SWAP1 SWAP6 AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP13 AND DUP5 MSTORE DUP11 PUSH1 0x20 DUP6 ADD MSTORE DUP10 PUSH1 0x40 DUP6 ADD MSTORE DUP1 DUP10 AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 DUP9 AND PUSH1 0x80 DUP6 ADD MSTORE POP DUP6 PUSH1 0xA0 DUP5 ADD MSTORE DUP5 PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x2131 DUP2 DUP5 ADD DUP6 PUSH2 0x1F1C JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB SELFBALANCE EQ LT 0xEF SHL 0xFB 0x2D 0xC2 0xEC DELEGATECALL 0x21 CALLDATALOAD PUSH30 0xC42C23642497057228E70B7368978AE5CF2364736F6C6343000809003300 ",
                            "sourceMap": "497:10147:19:-:0;;;1623:41;;;-1:-1:-1;;;;1623:41:19;-1:-1:-1;;;1623:41:19;;;2197:6;2155:48;;2344:4;2311:37;;2774:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;578:31:25;;;;867:17:5;909:18;;-1:-1:-1;;;;;;909:18:5;665:10:12;909:18:5;;;;;942:43;;2897:13:19;;665:10:12;;942:43:5;;867:17;;942:43;-1:-1:-1;1099:12:20;:28;874:11:18;:18;;-1:-1:-1;;;;874:18:18;-1:-1:-1;;;874:18:18;;;2944:7:19::2;1114::5::0;1140:6;-1:-1:-1;;;;;1140:6:5;;1068:85;2944:7:19::2;2926:15;:25:::0;;-1:-1:-1;;;;;;2926:25:19::2;-1:-1:-1::0;;;;;2926:25:19;;;::::2;::::0;;;::::2;::::0;;-1:-1:-1;497:10147:19;;-1:-1:-1;497:10147:19;14:351:66;93:6;101;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;196:16;;-1:-1:-1;;;;;241:31:66;;231:42;;221:70;;287:1;284;277:12;221:70;355:2;340:18;;;;334:25;310:5;;334:25;;-1:-1:-1;;;14:351:66:o;:::-;497:10147:19;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_2942": {
                                    "entryPoint": null,
                                    "id": 2942,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_getL1CallValue_2954": {
                                    "entryPoint": 6920,
                                    "id": 2954,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_postEntranceReset_2649": {
                                    "entryPoint": null,
                                    "id": 2649,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_2633": {
                                    "entryPoint": 6786,
                                    "id": 2633,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_2641": {
                                    "entryPoint": null,
                                    "id": 2641,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_sendMessageToChild_3002": {
                                    "entryPoint": 6984,
                                    "id": 3002,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@childChainId_3013": {
                                    "entryPoint": null,
                                    "id": 3013,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@childMessenger_3015": {
                                    "entryPoint": null,
                                    "id": 3015,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@defaultGasLimit_2713": {
                                    "entryPoint": null,
                                    "id": 2713,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@defaultGasPrice_2719": {
                                    "entryPoint": null,
                                    "id": 2719,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@defaultMaxSubmissionCost_2716": {
                                    "entryPoint": null,
                                    "id": 2716,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@getL1CallValue_2938": {
                                    "entryPoint": 1472,
                                    "id": 2938,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@governorHub_3019": {
                                    "entryPoint": null,
                                    "id": 3019,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@governorSpoke_3023": {
                                    "entryPoint": null,
                                    "id": 3023,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@inbox_3240": {
                                    "entryPoint": null,
                                    "id": 3240,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@oracleHub_3017": {
                                    "entryPoint": null,
                                    "id": 3017,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@oracleSpoke_3021": {
                                    "entryPoint": null,
                                    "id": 3021,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@owner_664": {
                                    "entryPoint": null,
                                    "id": 664,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@processMessageFromCrossChainChild_2923": {
                                    "entryPoint": 2067,
                                    "id": 2923,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@refundL2Address_2721": {
                                    "entryPoint": null,
                                    "id": 2721,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@renounceOwnership_700": {
                                    "entryPoint": 4543,
                                    "id": 700,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@sendMessageToChild_2897": {
                                    "entryPoint": 3391,
                                    "id": 2897,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@sendTxToL2NoAliassing_3291": {
                                    "entryPoint": 7345,
                                    "id": 3291,
                                    "parameterSlots": 7,
                                    "returnSlots": 1
                                },
                                "@setChildMessenger_3088": {
                                    "entryPoint": 5080,
                                    "id": 3088,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setChildOracleSpoke_2839": {
                                    "entryPoint": 5790,
                                    "id": 2839,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setChildParentMessenger_2861": {
                                    "entryPoint": 1740,
                                    "id": 2861,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setDefaultGasLimit_2779": {
                                    "entryPoint": 3923,
                                    "id": 2779,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setDefaultGasPrice_2798": {
                                    "entryPoint": 5320,
                                    "id": 2798,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setDefaultMaxSubmissionCost_2817": {
                                    "entryPoint": 5555,
                                    "id": 2817,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setGovernorHub_3122": {
                                    "entryPoint": 1495,
                                    "id": 3122,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setGovernorSpoke_3156": {
                                    "entryPoint": 6113,
                                    "id": 3156,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setOracleHub_3105": {
                                    "entryPoint": 4303,
                                    "id": 3105,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setOracleSpoke_3139": {
                                    "entryPoint": 3151,
                                    "id": 3139,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setRefundL2Address_2760": {
                                    "entryPoint": 4783,
                                    "id": 2760,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@transferOwnership_728": {
                                    "entryPoint": 6353,
                                    "id": 728,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 7582,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 7935,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes_memory_ptr": {
                                    "entryPoint": 7665,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 7910,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": 8512,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint32": {
                                    "entryPoint": 7872,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_bytes": {
                                    "entryPoint": 7964,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_rational_0_by_1_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 8407,
                                    "id": null,
                                    "parameterSlots": 9,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 8104,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed": {
                                    "entryPoint": 8123,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes_memory_ptr_t_uint256_t_uint32_t_uint256_t_uint256_t_address_t_uint256__to_t_bytes_memory_ptr_t_uint256_t_uint32_t_uint256_t_uint256_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": 8311,
                                    "id": null,
                                    "parameterSlots": 8,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_iArbitrum_Inbox_$3225__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_11d31a7f2d96eda6388edaeb9afa8e8d8dfd4901bc63d9f2e74c4d7e072a52ac__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_70ee5ddf30f34aa4e2eb2bd0652d4a9466378abefb991f116e502fdb578d384e__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_dce940e9463884772b08b5c2d125d003dd63aee1d70e14047fe87aa68736c951__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 8071,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 8287,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_mul_t_uint256": {
                                    "entryPoint": 8226,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 8179,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 7618,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_address": {
                                    "entryPoint": 7548,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:9406:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "178:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "241:109:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "328:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "337:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "340:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "330:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "330:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "330:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "264:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "275:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "282:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "271:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "271:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "261:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "261:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "254:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "254:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "251:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "230:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "196:154:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "425:177:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "471:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "480:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "483:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "473:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "473:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "473:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "446:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "455:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "442:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "442:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "467:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "438:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "438:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "435:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "496:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "522:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "509:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "509:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "500:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "566:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "541:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "541:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "541:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "581:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "591:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "581:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "391:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "402:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "414:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "355:247:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "639:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "656:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "659:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "649:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "649:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "649:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "753:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "756:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "746:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "746:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "746:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "777:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "780:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "770:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "770:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "770:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "607:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "875:901:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "921:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "930:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "933:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "923:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "923:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "923:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "896:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "905:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "892:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "892:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "917:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "888:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "888:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "885:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "946:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "973:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "960:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "960:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "950:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "992:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1002:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "996:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1047:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1056:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1059:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1049:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1049:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1049:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1035:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1043:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1032:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1032:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1029:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1072:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1086:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1097:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1082:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1082:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1076:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1152:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1161:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1164:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1154:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1154:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1154:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1131:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1135:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1127:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1127:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1142:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1123:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1123:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1116:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1116:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1113:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1177:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1200:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1187:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1187:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1181:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1226:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1228:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1228:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1228:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1218:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1222:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1215:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1215:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1212:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1257:76:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1267:66:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1261:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1342:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1362:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1356:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1356:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1346:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1374:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1396:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "1420:2:66"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1424:4:66",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1416:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1416:13:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1431:2:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1412:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1412:22:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1436:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1408:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1408:31:66"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1441:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1404:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1404:40:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1392:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1392:53:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1378:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1504:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1506:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1506:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1506:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1463:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1475:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1460:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1460:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1483:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1495:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1480:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1480:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1457:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1457:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1454:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1542:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1546:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1535:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1535:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1535:22:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1573:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1581:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1566:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1566:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1566:18:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1630:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1639:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1642:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1632:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1632:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1632:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1607:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1611:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1603:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1603:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1616:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1599:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1599:20:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1621:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1596:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1596:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1593:53:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1672:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1680:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1668:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1668:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1689:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1693:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1685:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1685:11:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1698:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1655:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1655:46:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1655:46:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "memPtr",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1725:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1733:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1721:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1721:15:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1738:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1717:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1717:24:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1743:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1710:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1710:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1710:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1754:16:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1764:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1754:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes_memory_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "841:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "852:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "864:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "796:980:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1850:207:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1896:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1905:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1908:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1898:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1898:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1898:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1871:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1880:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1867:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1867:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1892:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1863:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1863:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1860:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1921:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1947:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1934:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1934:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1925:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2011:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2020:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2023:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2013:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2013:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2013:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1979:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1990:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1997:10:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1986:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1986:22:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1976:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1976:33:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1969:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1969:41:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1966:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2036:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2046:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2036:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1816:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1827:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1839:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1781:276:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2163:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2173:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2185:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2196:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2181:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2181:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2173:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2215:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2230:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2238:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2226:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2226:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2208:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2208:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2208:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2132:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2143:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2154:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2062:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2363:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2409:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2418:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2421:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2411:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2411:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2411:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2384:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2393:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2380:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2380:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2405:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2376:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2376:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2373:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2434:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2457:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2444:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2444:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2434:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2329:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2340:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2352:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2293:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2577:93:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2587:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2599:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2610:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2595:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2595:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2587:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2629:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2644:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2652:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2640:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2640:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2622:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2622:42:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2622:42:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2546:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2557:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2568:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2478:192:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2800:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2810:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2822:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2833:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2818:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2818:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2810:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2852:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2867:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2875:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2863:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2863:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2845:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2845:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2845:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_iArbitrum_Inbox_$3225__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2769:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2780:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2791:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2675:250:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3104:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3121:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3132:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3114:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3114:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3114:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3155:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3166:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3151:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3151:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3171:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3144:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3144:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3144:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3194:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3205:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3190:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3190:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3210:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: caller is not the owner"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3183:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3183:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3183:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3254:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3266:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3277:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3262:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3262:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3254:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3081:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3095:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2930:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3372:170:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3418:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3427:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3430:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3420:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3420:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3420:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3393:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3402:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3389:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3389:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3414:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3385:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3385:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3382:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3443:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3462:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3456:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3456:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3447:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3506:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3481:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3481:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3481:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3521:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3531:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3521:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3338:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3349:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3361:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3291:251:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3721:165:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3738:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3749:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3731:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3731:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3731:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3772:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3783:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3768:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3768:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3788:2:66",
                                                                        "type": "",
                                                                        "value": "15"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3761:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3761:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3761:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3811:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3822:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3807:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3807:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4e4f545f46524f4d5f425249444745",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3827:17:66",
                                                                        "type": "",
                                                                        "value": "NOT_FROM_BRIDGE"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3800:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3800:45:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3800:45:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3854:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3866:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3877:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3862:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3862:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3854:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_11d31a7f2d96eda6388edaeb9afa8e8d8dfd4901bc63d9f2e74c4d7e072a52ac__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3698:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3712:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3547:339:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4065:174:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4082:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4093:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4075:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4075:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4075:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4116:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4127:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4112:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4112:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4132:2:66",
                                                                        "type": "",
                                                                        "value": "24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4105:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4105:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4105:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4155:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4166:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4151:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4151:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f4e4c595f434f554e544552504152545f47415445574159",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4171:26:66",
                                                                        "type": "",
                                                                        "value": "ONLY_COUNTERPART_GATEWAY"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4144:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4144:54:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4144:54:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4207:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4219:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4230:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4215:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4215:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4207:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4042:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4056:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3891:348:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4293:481:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4303:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4323:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4317:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4317:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4307:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4345:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4350:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4338:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4338:19:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4338:19:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4366:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4375:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4370:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4437:110:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulVariableDeclaration",
                                                                        "src": "4451:14:66",
                                                                        "value": {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "4461:4:66",
                                                                            "type": "",
                                                                            "value": "0x20"
                                                                        },
                                                                        "variables": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulTypedName",
                                                                                "src": "4455:2:66",
                                                                                "type": ""
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "pos",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "4493:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "4498:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4489:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "4489:11:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "_1",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4502:2:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4485:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "4485:20:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "value",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "4521:5:66"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "4528:1:66"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "4517:3:66"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "4517:13:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "4532:2:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4513:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "4513:22:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4507:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "4507:29:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4478:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4478:59:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4478:59:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4396:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4399:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4393:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4393:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4407:21:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "4409:17:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4418:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4421:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x20"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4414:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4414:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4409:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4389:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "4385:162:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4581:62:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "pos",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "4610:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "length",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "4615:6:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4606:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "4606:16:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "4624:4:66",
                                                                                            "type": "",
                                                                                            "value": "0x20"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4602:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "4602:27:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4631:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4595:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4595:38:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4595:38:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4562:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4565:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4559:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4559:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4556:87:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4652:116:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4667:3:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4680:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "4688:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4676:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4676:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4693:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4672:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4672:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4663:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4663:98:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4763:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4659:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4659:109:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4652:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_bytes",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4270:5:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4277:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4285:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4244:530:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4926:141:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4943:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4954:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4936:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4936:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4936:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4981:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4992:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4977:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4977:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4997:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4970:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4970:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4970:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5009:52:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5034:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5046:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5057:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5042:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5042:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5017:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5017:44:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5009:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4887:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4898:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4906:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4917:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4779:288:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5191:98:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5208:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5219:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5201:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5201:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5201:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5231:52:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5256:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5268:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5279:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5264:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5264:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5239:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5239:44:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5231:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5160:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5171:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5182:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5072:217:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5468:172:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5485:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5496:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5478:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5478:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5478:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5519:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5530:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5515:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5515:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5535:2:66",
                                                                        "type": "",
                                                                        "value": "22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5508:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5508:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5508:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5558:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5569:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5554:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5554:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f6e6c792070726976696c656765642063616c6c6572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5574:24:66",
                                                                        "type": "",
                                                                        "value": "Only privileged caller"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5547:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5547:52:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5547:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5608:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5620:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5631:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5616:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5616:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5608:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_dce940e9463884772b08b5c2d125d003dd63aee1d70e14047fe87aa68736c951__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5445:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5459:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5294:346:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5792:190:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5809:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5820:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5802:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5802:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5802:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5832:52:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5857:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5869:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5880:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5865:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5865:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5840:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5840:44:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5832:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5904:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5915:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5900:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5900:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5924:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5932:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5920:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5920:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5893:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5893:83:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5893:83:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5753:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5764:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5772:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5783:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5645:337:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6161:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6178:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6189:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6171:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6171:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6171:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6212:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6223:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6208:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6208:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6228:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6201:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6201:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6201:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6251:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6262:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6247:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6247:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6267:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: new owner is the zero a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6240:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6240:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6240:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6322:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6333:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6318:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6318:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6338:8:66",
                                                                        "type": "",
                                                                        "value": "ddress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6311:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6311:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6311:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6356:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6368:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6379:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6364:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6364:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6356:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6138:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6152:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5987:402:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6568:181:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6585:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6596:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6578:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6578:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6578:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6619:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6630:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6615:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6615:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6635:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6608:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6608:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6608:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6658:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6669:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6654:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6654:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6674:33:66",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6647:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6647:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6647:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6717:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6729:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6740:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6725:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6725:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6717:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6545:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6559:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6394:355:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6786:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6803:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6806:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6796:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6796:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6796:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6900:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6903:4:66",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6893:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6893:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6893:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6924:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6927:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6917:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6917:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6917:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "6754:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6995:176:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7114:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7116:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7116:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7116:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "7026:1:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "7019:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "7019:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7012:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7012:17:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7034:1:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "7041:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                                                    },
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "7109:1:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "div",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "7037:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "7037:74:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7031:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7031:81:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7008:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7008:105:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7005:131:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7145:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7160:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7163:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7156:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7156:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "product",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7145:7:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_mul_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6974:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6977:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "product",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6983:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6943:228:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7224:80:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7251:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7253:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7253:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7253:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7240:1:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7247:1:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7243:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7243:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7237:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7237:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7234:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7282:16:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7293:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7296:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7289:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7289:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7282:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7207:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7210:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7216:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7176:128:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7483:174:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7500:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7511:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7493:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7493:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7493:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7534:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7545:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7530:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7530:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7550:2:66",
                                                                        "type": "",
                                                                        "value": "24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7523:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7523:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7523:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7573:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7584:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7569:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7569:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "496e73756666696369656e74204554482062616c616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7589:26:66",
                                                                        "type": "",
                                                                        "value": "Insufficient ETH balance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7562:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7562:54:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7562:54:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7625:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7637:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7648:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7633:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7633:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7625:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_70ee5ddf30f34aa4e2eb2bd0652d4a9466378abefb991f116e502fdb578d384e__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7460:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7474:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7309:348:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7947:427:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7964:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7975:3:66",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7957:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7957:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7957:22:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7988:53:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8013:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8025:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8036:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8021:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8021:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7996:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7996:45:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7988:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8061:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8072:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8057:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8057:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8077:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8050:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8050:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8050:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8104:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8115:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8100:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8100:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8124:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8132:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8120:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8120:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8093:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8093:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8093:51:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8164:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8175:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8160:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8160:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8180:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8153:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8153:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8153:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8207:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8218:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8203:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8203:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8224:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8196:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8196:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8196:35:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8251:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8262:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8247:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8247:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value5",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8272:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8280:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8268:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8268:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8240:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8240:84:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8240:84:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8344:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8355:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8340:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8340:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8361:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8333:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8333:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8333:35:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes_memory_ptr_t_uint256_t_uint32_t_uint256_t_uint256_t_address_t_uint256__to_t_bytes_memory_ptr_t_uint256_t_uint32_t_uint256_t_uint256_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7868:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7879:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7887:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7895:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7903:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7911:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7919:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7927:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7938:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7662:712:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8702:513:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8712:13:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "8722:3:66",
                                                                "type": "",
                                                                "value": "256"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8716:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8734:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "8744:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8738:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8802:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8817:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8825:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8813:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8813:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8795:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8795:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8795:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8849:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8860:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8845:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8845:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8865:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8838:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8838:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8838:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8892:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8903:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8888:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8888:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8908:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8881:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8881:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8881:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8935:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8946:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8931:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8931:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8955:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8963:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8951:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8951:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8924:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8924:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8924:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8987:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8998:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8983:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8983:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9008:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9016:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9004:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9004:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8976:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8976:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8976:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9040:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9051:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9036:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9036:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value5",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9057:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9029:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9029:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9029:35:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9084:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9095:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9080:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9080:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9101:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9073:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9073:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9073:35:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9128:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9139:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9124:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9124:19:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9145:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9117:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9117:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9117:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9157:52:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value7",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9182:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9194:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9205:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9190:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9190:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9165:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9165:44:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9157:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_rational_0_by_1_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8615:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8626:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8634:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8642:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8650:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8658:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8666:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8674:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8682:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8693:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8379:836:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9301:103:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9347:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9356:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9359:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9349:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9349:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9349:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9322:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9331:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9318:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9318:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9343:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9314:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9314:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9311:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9372:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9388:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9382:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9382:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9372:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9267:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9278:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9290:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9220:184:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_encode_tuple_t_contract$_iArbitrum_Inbox_$3225__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_11d31a7f2d96eda6388edaeb9afa8e8d8dfd4901bc63d9f2e74c4d7e072a52ac__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"NOT_FROM_BRIDGE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ONLY_COUNTERPART_GATEWAY\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_dce940e9463884772b08b5c2d125d003dd63aee1d70e14047fe87aa68736c951__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Only privileged caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        tail := abi_encode_bytes(value0, add(headStart, 64))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_70ee5ddf30f34aa4e2eb2bd0652d4a9466378abefb991f116e502fdb578d384e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Insufficient ETH balance\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_uint256_t_uint32_t_uint256_t_uint256_t_address_t_uint256__to_t_bytes_memory_ptr_t_uint256_t_uint32_t_uint256_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 224)\n        tail := abi_encode_bytes(value0, add(headStart, 224))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), and(value5, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 192), value6)\n    }\n    function abi_encode_tuple_t_address_t_rational_0_by_1_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 256\n        let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _2))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), _1)\n        tail := abi_encode_bytes(value7, add(headStart, _1))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {
                                "3240": [
                                    {
                                        "length": 32,
                                        "start": 1438
                                    },
                                    {
                                        "length": 32,
                                        "start": 2106
                                    },
                                    {
                                        "length": 32,
                                        "start": 7350
                                    }
                                ]
                            },
                            "linkReferences": {},
                            "object": "6080604052600436106101a25760003560e01c80638b42a40a116100e0578063b14b0f5611610084578063d78eb11f11610061578063d78eb11f14610540578063e7b4294c14610556578063f2fde38b1461056c578063fb0e722b1461058c57005b8063b14b0f56146104dd578063bcafec13146104f3578063c75ba1f41461052057005b806395368d2e116100bd57806395368d2e1461042557806398e1e16f14610470578063a0cadf0b1461049d578063acab324c146104bd57005b80638b42a40a146103ad5780638d09550e146103cd5780638da5cb5b146103fa57005b80635f234d5311610147578063715018a611610124578063715018a61461032b57806373d62b4614610340578063816c24441461036d57806381e8ea461461038d57005b80635f234d531461028c57806362315c42146102de5780637092a2b2146102fe57005b8063109ff9a911610180578063109ff9a91461020c5780631a50ad301461022c5780634c09e6e81461024c578063524b6f701461026c57005b806308f1ed15146101a45780630a2b5e03146101cc5780630e28c764146101ec575b005b3480156101b057600080fd5b506101b96105c0565b6040519081526020015b60405180910390f35b3480156101d857600080fd5b506101a26101e7366004611d9e565b6105d7565b3480156101f857600080fd5b506101a2610207366004611d9e565b6106cc565b34801561021857600080fd5b506101a2610227366004611df1565b610813565b34801561023857600080fd5b506101a2610247366004611d9e565b610c4f565b34801561025857600080fd5b506101a2610267366004611df1565b610d3f565b34801561027857600080fd5b506101a2610287366004611ec0565b610f53565b34801561029857600080fd5b506002546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101c3565b3480156102ea57600080fd5b506101a26102f9366004611d9e565b6110cf565b34801561030a57600080fd5b506006546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033757600080fd5b506101a26111bf565b34801561034c57600080fd5b506003546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561037957600080fd5b506101a2610388366004611d9e565b6112af565b34801561039957600080fd5b506101a26103a8366004611d9e565b6113d8565b3480156103b957600080fd5b506101a26103c8366004611ee6565b6114c8565b3480156103d957600080fd5b506004546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561040657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b9565b34801561043157600080fd5b5060065461045b907501000000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101c3565b34801561047c57600080fd5b506005546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104a957600080fd5b506101a26104b8366004611ee6565b6115b3565b3480156104c957600080fd5b506101a26104d8366004611d9e565b61169e565b3480156104e957600080fd5b506101b960015481565b3480156104ff57600080fd5b506009546102b99073ffffffffffffffffffffffffffffffffffffffff1681565b34801561052c57600080fd5b506101a261053b366004611d9e565b6117e1565b34801561054c57600080fd5b506101b960075481565b34801561056257600080fd5b506101b960085481565b34801561057857600080fd5b506101a2610587366004611d9e565b6118d1565b34801561059857600080fd5b506102b97f000000000000000000000000000000000000000000000000000000000000000081565b60006105ca611a82565b6105d2611b08565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff16331461065d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f378c0ff663d300fda5b8ad9e2dee32975ac78884277c539d47671a8d2b5d797b90600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff16331461074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b60405173ffffffffffffffffffffffffffffffffffffffff82166024820152600090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc948564b0000000000000000000000000000000000000000000000000000000017905260025490915061080f90829073ffffffffffffffffffffffffffffffffffffffff16611b48565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e78cea926040518163ffffffff1660e01b815260040160206040518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190611eff565b90503373ffffffffffffffffffffffffffffffffffffffff821614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f46524f4d5f42524944474500000000000000000000000000000000006044820152606401610654565b60008173ffffffffffffffffffffffffffffffffffffffff1663ab5d89436040518163ffffffff1660e01b815260040160206040518083038186803b15801561099f57600080fd5b505afa1580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d79190611eff565b73ffffffffffffffffffffffffffffffffffffffff166380648b026040518163ffffffff1660e01b815260040160206040518083038186803b158015610a1c57600080fd5b505afa158015610a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a549190611eff565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f4741544557415900000000000000006044820152606401610654565b610af3611a82565b610b20600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6003546001546040517f6423b60e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691636423b60e91610b79918890600401611f87565b600060405180830381600087803b158015610b9357600080fd5b505af1158015610ba7573d6000803e3d6000fd5b505060035460025460405173ffffffffffffffffffffffffffffffffffffffff9283169450911691507f0900453a3fb13750c432500a3921b5e974ecf1362cf21947630d60528d6bdd5990610bfd908890611fa8565b60405180910390a3610c49600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f5e60d1b338c1efe33cdc840bc15ae31e8c16ec95b6ce1e2a41d334fc28b69fbc90600090a250565b60035473ffffffffffffffffffffffffffffffffffffffff16331480610d7c575060045473ffffffffffffffffffffffffffffffffffffffff1633145b610de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792070726976696c656765642063616c6c6572000000000000000000006044820152606401610654565b610dea611a82565b610e17600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60035460009073ffffffffffffffffffffffffffffffffffffffff163314610e575760065473ffffffffffffffffffffffffffffffffffffffff16610e71565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008282604051602401610e88929190611fbb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f187717ce000000000000000000000000000000000000000000000000000000001790529050610f0a8183611b48565b5050610f50600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b610fdc611a82565b611009600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600680547fffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000063ffffffff8416908102919091179091556040519081527f82420e5818c266bec5ae52072a057f0b7dae2f148dfa3cc4d2d94fcba1e99cfb906020015b60405180910390a1610f50600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fe5c5f8656458e7eb3288974c5d146e8b37414ece1fccdfc3d377f58c5ead3a1690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b611338611a82565b611365600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fb1a697eb7cf7300ba21207eedfa9b7aebb022107febbc4fb28993d0f0ed291cb90602001611083565b60005473ffffffffffffffffffffffffffffffffffffffff163314611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2b3527e6183dce7676cc1a77ba1c1a943740ff02cfcd0d8ff32ae5b42205ccc590600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b611551611a82565b61157e600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60088190556040518181527f581b3a6bde09dc2c2cfaa74c9011ebfe71cda54431d7d96454ab00408651ba6c90602001611083565b60005473ffffffffffffffffffffffffffffffffffffffff163314611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b61163c611a82565b611669600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60078190556040518181527f9b163153ddcdb709353747ea107a1c8515a5123f3fa7ef84e537a675e695545990602001611083565b60005473ffffffffffffffffffffffffffffffffffffffff16331461171f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b60405173ffffffffffffffffffffffffffffffffffffffff82166024820152600090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1a50ad300000000000000000000000000000000000000000000000000000000017905260025490915061080f90829073ffffffffffffffffffffffffffffffffffffffff16611b48565b60005473ffffffffffffffffffffffffffffffffffffffff163314611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f642412aa8027246b85920fe1c2364b4928dba23ead405e72d6c3ea90305d0a2990600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff163314611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610654565b73ffffffffffffffffffffffffffffffffffffffff81166119f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610654565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60065474010000000000000000000000000000000000000000900460ff16611b06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610654565b565b600654600854600091611b3b91750100000000000000000000000000000000000000000090910463ffffffff1690612022565b6007546105d2919061205f565b6000611b52611b08565b905080471015611bbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610654565b600254600954600754600654600854600094611c199473ffffffffffffffffffffffffffffffffffffffff918216949116928792750100000000000000000000000000000000000000000090910463ffffffff16908a611cb1565b60025460065460085460075460095460405195965073ffffffffffffffffffffffffffffffffffffffff94851695898616957fdeaf46ce401b41ffb05b383a170e15861664528eb335320ad3b5059afccd864e95611ca3958d958c95750100000000000000000000000000000000000000000090930463ffffffff16949193909216908b90612077565b60405180910390a350505050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631b871c8d888b60008a8d8e8c8c8c6040518a63ffffffff1660e01b8152600401611d1d9897969594939291906120d7565b6020604051808303818588803b158015611d3657600080fd5b505af1158015611d4a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d6f9190612140565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5057600080fd5b600060208284031215611db057600080fd5b8135611dbb81611d7c565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600060208284031215611e0357600080fd5b813567ffffffffffffffff80821115611e1b57600080fd5b818401915084601f830112611e2f57600080fd5b813581811115611e4157611e41611dc2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611e8757611e87611dc2565b81604052828152876020848701011115611ea057600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215611ed257600080fd5b813563ffffffff81168114611dbb57600080fd5b600060208284031215611ef857600080fd5b5035919050565b600060208284031215611f1157600080fd5b8151611dbb81611d7c565b6000815180845260005b81811015611f4257602081850181015186830182015201611f26565b81811115611f54576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b828152604060208201526000611fa06040830184611f1c565b949350505050565b602081526000611dbb6020830184611f1c565b604081526000611fce6040830185611f1c565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561205a5761205a611ff3565b500290565b6000821982111561207257612072611ff3565b500190565b60e08152600061208a60e083018a611f1c565b60208301989098525063ffffffff9590951660408601526060850193909352608084019190915273ffffffffffffffffffffffffffffffffffffffff1660a083015260c090910152919050565b600061010073ffffffffffffffffffffffffffffffffffffffff808c1684528a602085015289604085015280891660608501528088166080850152508560a08401528460c08401528060e084015261213181840185611f1c565b9b9a5050505050505050505050565b60006020828403121561215257600080fd5b505191905056fea2646970667358221220eb471410ef1bfb2dc2ecf421357dc42c23642497057228e70b7368978ae5cf2364736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B42A40A GT PUSH2 0xE0 JUMPI DUP1 PUSH4 0xB14B0F56 GT PUSH2 0x84 JUMPI DUP1 PUSH4 0xD78EB11F GT PUSH2 0x61 JUMPI DUP1 PUSH4 0xD78EB11F EQ PUSH2 0x540 JUMPI DUP1 PUSH4 0xE7B4294C EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xFB0E722B EQ PUSH2 0x58C JUMPI STOP JUMPDEST DUP1 PUSH4 0xB14B0F56 EQ PUSH2 0x4DD JUMPI DUP1 PUSH4 0xBCAFEC13 EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0xC75BA1F4 EQ PUSH2 0x520 JUMPI STOP JUMPDEST DUP1 PUSH4 0x95368D2E GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95368D2E EQ PUSH2 0x425 JUMPI DUP1 PUSH4 0x98E1E16F EQ PUSH2 0x470 JUMPI DUP1 PUSH4 0xA0CADF0B EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0xACAB324C EQ PUSH2 0x4BD JUMPI STOP JUMPDEST DUP1 PUSH4 0x8B42A40A EQ PUSH2 0x3AD JUMPI DUP1 PUSH4 0x8D09550E EQ PUSH2 0x3CD JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x3FA JUMPI STOP JUMPDEST DUP1 PUSH4 0x5F234D53 GT PUSH2 0x147 JUMPI DUP1 PUSH4 0x715018A6 GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x73D62B46 EQ PUSH2 0x340 JUMPI DUP1 PUSH4 0x816C2444 EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x81E8EA46 EQ PUSH2 0x38D JUMPI STOP JUMPDEST DUP1 PUSH4 0x5F234D53 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0x62315C42 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0x7092A2B2 EQ PUSH2 0x2FE JUMPI STOP JUMPDEST DUP1 PUSH4 0x109FF9A9 GT PUSH2 0x180 JUMPI DUP1 PUSH4 0x109FF9A9 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x1A50AD30 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x4C09E6E8 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x524B6F70 EQ PUSH2 0x26C JUMPI STOP JUMPDEST DUP1 PUSH4 0x8F1ED15 EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0xA2B5E03 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0xE28C764 EQ PUSH2 0x1EC JUMPI JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x5D7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x6CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x218 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x227 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x238 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x247 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0xC4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0x1DF1 JUMP JUMPDEST PUSH2 0xD3F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x287 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EC0 JUMP JUMPDEST PUSH2 0xF53 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x10CF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x11BF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x388 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x12AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x3A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x13D8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x3C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EE6 JUMP JUMPDEST PUSH2 0x14C8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x431 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x45B SWAP1 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x4B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EE6 JUMP JUMPDEST PUSH2 0x15B3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x4D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x169E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x9 SLOAD PUSH2 0x2B9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x53B CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x17E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x562 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B9 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x578 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A2 PUSH2 0x587 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D9E JUMP JUMPDEST PUSH2 0x18D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5CA PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x5D2 PUSH2 0x1B08 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x65D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x378C0FF663D300FDA5B8AD9E2DEE32975AC78884277C539D47671A8D2B5D797B SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x74D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC948564B00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH2 0x80F SWAP1 DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B48 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE78CEA92 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8D6 SWAP2 SWAP1 PUSH2 0x1EFF JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x957 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F46524F4D5F4252494447450000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAB5D8943 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x99F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9D7 SWAP2 SWAP1 PUSH2 0x1EFF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x80648B02 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA30 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA54 SWAP2 SWAP1 PUSH2 0x1EFF JUMP JUMPDEST SWAP1 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAEB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0xAF3 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0xB20 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6423B60E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x6423B60E SWAP2 PUSH2 0xB79 SWAP2 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x1F87 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP5 POP SWAP2 AND SWAP2 POP PUSH32 0x900453A3FB13750C432500A3921B5E974ECF1362CF21947630D60528D6BDD59 SWAP1 PUSH2 0xBFD SWAP1 DUP9 SWAP1 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH2 0xC49 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xCD0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5E60D1B338C1EFE33CDC840BC15AE31E8C16EC95B6CE1E2A41D334FC28B69FBC SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ DUP1 PUSH2 0xD7C JUMPI POP PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ JUMPDEST PUSH2 0xDE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C792070726976696C656765642063616C6C657200000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0xDEA PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0xE17 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xE57 JUMPI PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE71 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xE88 SWAP3 SWAP2 SWAP1 PUSH2 0x1FBB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x187717CE00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 POP PUSH2 0xF0A DUP2 DUP4 PUSH2 0x1B48 JUMP JUMPDEST POP POP PUSH2 0xF50 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xFD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0xFDC PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1009 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH22 0x1000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP5 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x82420E5818C266BEC5AE52072A057F0B7DAE2F148DFA3CC4D2D94FCBA1E99CFB SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xF50 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1150 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xE5C5F8656458E7EB3288974C5D146E8B37414ECE1FCCDFC3D377F58C5EAD3A16 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1240 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1330 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0x1338 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1365 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xB1A697EB7CF7300BA21207EEDFA9B7AEBB022107FEBBC4FB28993D0F0ED291CB SWAP1 PUSH1 0x20 ADD PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1459 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2B3527E6183DCE7676CC1A77BA1C1A943740FF02CFCD0D8FF32AE5B42205CCC5 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1549 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0x1551 PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x157E PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x8 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x581B3A6BDE09DC2C2CFAA74C9011EBFE71CDA54431D7D96454AB00408651BA6C SWAP1 PUSH1 0x20 ADD PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1634 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH2 0x163C PUSH2 0x1A82 JUMP JUMPDEST PUSH2 0x1669 PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH32 0x9B163153DDCDB709353747EA107A1C8515A5123F3FA7EF84E537A675E6955459 SWAP1 PUSH1 0x20 ADD PUSH2 0x1083 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x171F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1A50AD3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH1 0x2 SLOAD SWAP1 SWAP2 POP PUSH2 0x80F SWAP1 DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B48 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1862 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x642412AA8027246B85920FE1C2364B4928DBA23EAD405E72D6C3EA90305D0A29 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1952 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x19F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B06 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP2 PUSH2 0x1B3B SWAP2 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH2 0x2022 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH2 0x5D2 SWAP2 SWAP1 PUSH2 0x205F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B52 PUSH2 0x1B08 JUMP JUMPDEST SWAP1 POP DUP1 SELFBALANCE LT ISZERO PUSH2 0x1BBE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E73756666696369656E74204554482062616C616E63650000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x654 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH1 0x6 SLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP5 PUSH2 0x1C19 SWAP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP5 SWAP2 AND SWAP3 DUP8 SWAP3 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND SWAP1 DUP11 PUSH2 0x1CB1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x6 SLOAD PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 MLOAD SWAP6 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP6 DUP10 DUP7 AND SWAP6 PUSH32 0xDEAF46CE401B41FFB05B383A170E15861664528EB335320AD3B5059AFCCD864E SWAP6 PUSH2 0x1CA3 SWAP6 DUP14 SWAP6 DUP13 SWAP6 PUSH22 0x1000000000000000000000000000000000000000000 SWAP1 SWAP4 DIV PUSH4 0xFFFFFFFF AND SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 AND SWAP1 DUP12 SWAP1 PUSH2 0x2077 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B871C8D DUP9 DUP12 PUSH1 0x0 DUP11 DUP14 DUP15 DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D1D SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x20D7 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D4A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D6F SWAP2 SWAP1 PUSH2 0x2140 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1DBB DUP2 PUSH2 0x1D7C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1E2F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x1E41 JUMPI PUSH2 0x1E41 PUSH2 0x1DC2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1E87 JUMPI PUSH2 0x1E87 PUSH2 0x1DC2 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1EA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ED2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1DBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1DBB DUP2 PUSH2 0x1D7C JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1F42 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x1F26 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1F54 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x1FA0 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1F1C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1DBB PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1F1C JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1FCE PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1F1C JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x205A JUMPI PUSH2 0x205A PUSH2 0x1FF3 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2072 JUMPI PUSH2 0x2072 PUSH2 0x1FF3 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP2 MSTORE PUSH1 0x0 PUSH2 0x208A PUSH1 0xE0 DUP4 ADD DUP11 PUSH2 0x1F1C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE POP PUSH4 0xFFFFFFFF SWAP6 SWAP1 SWAP6 AND PUSH1 0x40 DUP7 ADD MSTORE PUSH1 0x60 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x80 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP13 AND DUP5 MSTORE DUP11 PUSH1 0x20 DUP6 ADD MSTORE DUP10 PUSH1 0x40 DUP6 ADD MSTORE DUP1 DUP10 AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 DUP9 AND PUSH1 0x80 DUP6 ADD MSTORE POP DUP6 PUSH1 0xA0 DUP5 ADD MSTORE DUP5 PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x2131 DUP2 DUP5 ADD DUP6 PUSH2 0x1F1C JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEB SELFBALANCE EQ LT 0xEF SHL 0xFB 0x2D 0xC2 0xEC DELEGATECALL 0x21 CALLDATALOAD PUSH30 0xC42C23642497057228E70B7368978AE5CF2364736F6C6343000809003300 ",
                            "sourceMap": "497:10147:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8622:216;;;;;;;;;;;;;:::i;:::-;;;160:25:66;;;148:2;133:18;8622:216:19;;;;;;;;2376:152:20;;;;;;;;;;-1:-1:-1;2376:152:20;;;;;:::i;:::-;;:::i;6025:262:19:-;;;;;;;;;;-1:-1:-1;6025:262:19;;;;;:::i;:::-;;:::i;8020:331::-;;;;;;;;;;-1:-1:-1;8020:331:19;;;;;:::i;:::-;;:::i;2806:152:20:-;;;;;;;;;;-1:-1:-1;2806:152:20;;;;;:::i;:::-;;:::i;7068:382:19:-;;;;;;;;;;-1:-1:-1;7068:382:19;;;;;:::i;:::-;;:::i;3750:193::-;;;;;;;;;;-1:-1:-1;3750:193:19;;;;;:::i;:::-;;:::i;289:29:20:-;;;;;;;;;;-1:-1:-1;289:29:20;;;;;;;;;;;2238:42:66;2226:55;;;2208:74;;2196:2;2181:18;289:29:20;2062:226:66;1949:140:20;;;;;;;;;;-1:-1:-1;1949:140:20;;;;;:::i;:::-;;:::i;420:28::-;;;;;;;;;;-1:-1:-1;420:28:20;;;;;;;;1700:145:5;;;;;;;;;;;;;:::i;325:24:20:-;;;;;;;;;;-1:-1:-1;325:24:20;;;;;;;;3278:191:19;;;;;;;;;;-1:-1:-1;3278:191:19;;;;;:::i;:::-;;:::i;1498:170:20:-;;;;;;;;;;-1:-1:-1;1498:170:20;;;;;:::i;:::-;;:::i;4224:194:19:-;;;;;;;;;;-1:-1:-1;4224:194:19;;;;;:::i;:::-;;:::i;355:26:20:-;;;;;;;;;;-1:-1:-1;355:26:20;;;;;;;;1068:85:5;;;;;;;;;;-1:-1:-1;1114:7:5;1140:6;;;1068:85;;1623:41:19;;;;;;;;;;-1:-1:-1;1623:41:19;;;;;;;;;;;;;;2652:10:66;2640:23;;;2622:42;;2610:2;2595:18;1623:41:19;2478:192:66;388:26:20;;;;;;;;;;-1:-1:-1;388:26:20;;;;;;;;4728:248:19;;;;;;;;;;-1:-1:-1;4728:248:19;;;;;:::i;:::-;;:::i;5368:246::-;;;;;;;;;;-1:-1:-1;5368:246:19;;;;;:::i;:::-;;:::i;255:27:20:-;;;;;;;;;;;;;;;;2469:30:19;;;;;;;;;;-1:-1:-1;2469:30:19;;;;;;;;3242:164:20;;;;;;;;;;-1:-1:-1;3242:164:20;;;;;:::i;:::-;;:::i;2155:48:19:-;;;;;;;;;;;;;;;;2311:37;;;;;;;;;;;;;;;;1994:240:5;;;;;;;;;;-1:-1:-1;1994:240:5;;;;;:::i;:::-;;:::i;394:38:25:-;;;;;;;;;;;;;;;8622:216:19;8784:7;1603:19:18;:17;:19::i;:::-;8814:17:19::1;:15;:17::i;:::-;8807:24;;8622:216:::0;:::o;2376:152:20:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;;;;;;;;;2451:11:20::1;:28:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;2494:27:::1;::::0;::::1;::::0;-1:-1:-1;;2494:27:20::1;2376:152:::0;:::o;6025:262:19:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;6144:74:19::1;::::0;2238:42:66;2226:55;;6144:74:19::1;::::0;::::1;2208::66::0;6113:28:19::1;::::0;2181:18:66;;6144:74:19::1;::::0;;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;::::1;;;;::::0;;6265:14:::1;::::0;6144:74;;-1:-1:-1;6228:52:19::1;::::0;6144:74;;6265:14:::1;;6228:19;:52::i;:::-;6103:184;6025:262:::0;:::o;8020:331::-;8132:14;;;;;;;;;;;3553::25;3578:5;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3553:40;-1:-1:-1;3611:10:25;:29;;;;3603:57;;;;;;;3749:2:66;3603:57:25;;;3731:21:66;3788:2;3768:18;;;3761:30;3827:17;3807:18;;;3800:45;3862:18;;3603:57:25;3547:339:66;3603:57:25;3766:20;3806:6;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3789:52;;;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3766:77;;3877:13;3861:29;;:12;:29;;;3853:66;;;;;;;4093:2:66;3853:66:25;;;4075:21:66;4132:2;4112:18;;;4105:30;4171:26;4151:18;;;4144:54;4215:18;;3853:66:25;3891:348:66;3853:66:25;1317:19:18::1;:17;:19::i;:::-;1346:17;2445:11:::0;:19;;;;;;2335:136;1346:17:::1;8218:9:19::2;::::0;;8253:12;8185:87:::2;::::0;;;;8218:9:::2;::::0;;::::2;::::0;8185:67:::2;::::0;:87:::2;::::0;8267:4;;8185:87:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;8334:9:19::2;::::0;8318:14:::2;::::0;8287:57:::2;::::0;8334:9:::2;::::0;;::::2;::::0;-1:-1:-1;8318:14:19;::::2;::::0;-1:-1:-1;8287:57:19::2;::::0;::::2;::::0;8312:4;;8287:57:::2;:::i;:::-;;;;;;;;1384:20:18::1;2658:11:::0;:18;;;;;;;;2477:206;1384:20:::1;3459:478:25::0;;8020:331:19;;:::o;2806:152:20:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;2881:11:20::1;:28:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;2924:27:::1;::::0;::::1;::::0;-1:-1:-1;;2924:27:20::1;2806:152:::0;:::o;7068:382:19:-;796:9:20;;;;782:10;:23;;:52;;-1:-1:-1;823:11:20;;;;809:10;:25;782:52;774:87;;;;;;;5496:2:66;774:87:20;;;5478:21:66;5535:2;5515:18;;;5508:30;5574:24;5554:18;;;5547:52;5616:18;;774:87:20;5294:346:66;774:87:20;1317:19:18::1;:17;:19::i;:::-;1346:17;2445:11:::0;:19;;;;;;2335:136;1346:17:::1;7207:9:19::2;::::0;7176:14:::2;::::0;7207:9:::2;;7193:10;:23;:53;;7233:13;::::0;::::2;;7193:53;;;7219:11;::::0;::::2;;7193:53;7176:70;;7256:28;7376:4;7382:6;7299:90;;;;;;;;;:::i;:::-;;::::0;;;;;::::2;::::0;;;;;;::::2;::::0;::::2;::::0;;::::2;;;;::::0;;;-1:-1:-1;7399:44:19::2;7299:90:::0;7436:6;7399:19:::2;:44::i;:::-;7166:284;;1384:20:18::1;2658:11:::0;:18;;;;;;;;2477:206;1384:20:::1;7068:382:19::0;:::o;3750:193::-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;1317:19:18::1;:17;:19::i;:::-;1346:17;2445:11:::0;:19;;;;;;2335:136;1346:17:::1;3847:15:19::2;:36:::0;;;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;3898:38:::2;::::0;2622:42:66;;;3898:38:19::2;::::0;2610:2:66;2595:18;3898:38:19::2;;;;;;;;1384:20:18::1;2658:11:::0;:18;;;;;;;;2477:206;1949:140:20;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;2020:9:20::1;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;2059:23:::1;::::0;::::1;::::0;-1:-1:-1;;2059:23:20::1;1949:140:::0;:::o;1700:145:5:-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;1806:1:::1;1790:6:::0;;1769:40:::1;::::0;::::1;1790:6:::0;;::::1;::::0;1769:40:::1;::::0;1806:1;;1769:40:::1;1836:1;1819:19:::0;;;::::1;::::0;;1700:145::o;3278:191:19:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;1317:19:18::1;:17;:19::i;:::-;1346:17;2445:11:::0;:19;;;;;;2335:136;1346:17:::1;3376:15:19::2;:36:::0;;;::::2;;::::0;::::2;::::0;;::::2;::::0;;;3427:35:::2;::::0;2208:74:66;;;3427:35:19::2;::::0;2196:2:66;2181:18;3427:35:19::2;2062:226:66::0;1498:170:20;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;1579:14:20::1;:34:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1628:33:::1;::::0;::::1;::::0;-1:-1:-1;;1628:33:20::1;1498:170:::0;:::o;4224:194:19:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;1317:19:18::1;:17;:19::i;:::-;1346:17;2445:11:::0;:19;;;;;;2335:136;1346:17:::1;4322:15:19::2;:36:::0;;;4373:38:::2;::::0;160:25:66;;;4373:38:19::2;::::0;148:2:66;133:18;4373:38:19::2;14:177:66::0;4728:248:19;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;1317:19:18::1;:17;:19::i;:::-;1346:17;2445:11:::0;:19;;;;;;2335:136;1346:17:::1;4844:24:19::2;:54:::0;;;4913:56:::2;::::0;160:25:66;;;4913:56:19::2;::::0;148:2:66;133:18;4913:56:19::2;14:177:66::0;5368:246:19;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;5479:66:19::1;::::0;2238:42:66;2226:55;;5479:66:19::1;::::0;::::1;2208:74:66::0;5448:28:19::1;::::0;2181:18:66;;5479:66:19::1;::::0;;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;::::1;;;;::::0;;5592:14:::1;::::0;5479:66;;-1:-1:-1;5555:52:19::1;::::0;5479:66;;5592:14:::1;;5555:19;:52::i;3242:164:20:-:0;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;3321:13:20::1;:32:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;3368:31:::1;::::0;::::1;::::0;-1:-1:-1;;3368:31:20::1;3242:164:::0;:::o;1994:240:5:-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;3132:2:66;1272:68:5;;;3114:21:66;;;3151:18;;;3144:30;3210:34;3190:18;;;3183:62;3262:18;;1272:68:5;2930:356:66;1272:68:5;2082:22:::1;::::0;::::1;2074:73;;;::::0;::::1;::::0;;6189:2:66;2074:73:5::1;::::0;::::1;6171:21:66::0;6228:2;6208:18;;;6201:30;6267:34;6247:18;;;6240:62;6338:8;6318:18;;;6311:36;6364:19;;2074:73:5::1;5987:402:66::0;2074:73:5::1;2183:6;::::0;;2162:38:::1;::::0;::::1;::::0;;::::1;::::0;2183:6;::::1;::::0;2162:38:::1;::::0;::::1;2210:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1994:240::o;2143:186:18:-;2275:11;;;;;;;2267:55;;;;;;;6596:2:66;2267:55:18;;;6578:21:66;6635:2;6615:18;;;6608:30;6674:33;6654:18;;;6647:61;6725:18;;2267:55:18;6394:355:66;2267:55:18;2143:186::o;9403:294:19:-;9675:15;;9657;;9453:7;;9657:33;;9675:15;;;;;;;9657:33;:::i;:::-;9630:24;;:60;;;;:::i;9814:828::-;9897:27;9927:17;:15;:17::i;:::-;9897:47;;9987:19;9962:21;:44;;9954:81;;;;;;;7511:2:66;9954:81:19;;;7493:21:66;7550:2;7530:18;;;7523:30;7589:26;7569:18;;;7562:54;7633:18;;9954:81:19;7309:348:66;9954:81:19;10117:14;;10149:15;;10219:24;;10261:15;;10294;;10046:17;;10078:267;;10117:14;;;;;10149:15;;;10182:19;;10261:15;;;;;;;10327:4;10078:21;:267::i;:::-;10588:14;;10463:15;;10492;;10521:24;;10559:15;;10360:275;;10046:299;;-1:-1:-1;10588:14:19;;;;;10360:275;;;;;;;;10392:4;;10430:19;;10463:15;;;;;;;10492;;10521:24;;10559:15;;10046:299;;10360:275;:::i;:::-;;;;;;;;9887:755;;9814:828;;:::o;955:2276:25:-;1799:7;2851:14;2880:5;:47;;;2936:11;2967:6;2991:1;3051:17;3086:4;3108;3130:6;3154:11;3183:4;2880:321;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2851:350;955:2276;-1:-1:-1;;;;;;;;;955:2276:25:o;196:154:66:-;282:42;275:5;271:54;264:5;261:65;251:93;;340:1;337;330:12;355:247;414:6;467:2;455:9;446:7;442:23;438:32;435:52;;;483:1;480;473:12;435:52;522:9;509:23;541:31;566:5;541:31;:::i;:::-;591:5;355:247;-1:-1:-1;;;355:247:66:o;607:184::-;659:77;656:1;649:88;756:4;753:1;746:15;780:4;777:1;770:15;796:980;864:6;917:2;905:9;896:7;892:23;888:32;885:52;;;933:1;930;923:12;885:52;973:9;960:23;1002:18;1043:2;1035:6;1032:14;1029:34;;;1059:1;1056;1049:12;1029:34;1097:6;1086:9;1082:22;1072:32;;1142:7;1135:4;1131:2;1127:13;1123:27;1113:55;;1164:1;1161;1154:12;1113:55;1200:2;1187:16;1222:2;1218;1215:10;1212:36;;;1228:18;;:::i;:::-;1362:2;1356:9;1424:4;1416:13;;1267:66;1412:22;;;1436:2;1408:31;1404:40;1392:53;;;1460:18;;;1480:22;;;1457:46;1454:72;;;1506:18;;:::i;:::-;1546:10;1542:2;1535:22;1581:2;1573:6;1566:18;1621:7;1616:2;1611;1607;1603:11;1599:20;1596:33;1593:53;;;1642:1;1639;1632:12;1593:53;1698:2;1693;1689;1685:11;1680:2;1672:6;1668:15;1655:46;1743:1;1721:15;;;1738:2;1717:24;1710:35;;;;-1:-1:-1;1725:6:66;796:980;-1:-1:-1;;;;;796:980:66:o;1781:276::-;1839:6;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1997:10;1990:5;1986:22;1979:5;1976:33;1966:61;;2023:1;2020;2013:12;2293:180;2352:6;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;-1:-1:-1;2444:23:66;;2293:180;-1:-1:-1;2293:180:66:o;3291:251::-;3361:6;3414:2;3402:9;3393:7;3389:23;3385:32;3382:52;;;3430:1;3427;3420:12;3382:52;3462:9;3456:16;3481:31;3506:5;3481:31;:::i;4244:530::-;4285:3;4323:5;4317:12;4350:6;4345:3;4338:19;4375:1;4385:162;4399:6;4396:1;4393:13;4385:162;;;4461:4;4517:13;;;4513:22;;4507:29;4489:11;;;4485:20;;4478:59;4414:12;4385:162;;;4565:6;4562:1;4559:13;4556:87;;;4631:1;4624:4;4615:6;4610:3;4606:16;4602:27;4595:38;4556:87;-1:-1:-1;4688:2:66;4676:15;4693:66;4672:88;4663:98;;;;4763:4;4659:109;;4244:530;-1:-1:-1;;4244:530:66:o;4779:288::-;4954:6;4943:9;4936:25;4997:2;4992;4981:9;4977:18;4970:30;4917:4;5017:44;5057:2;5046:9;5042:18;5034:6;5017:44;:::i;:::-;5009:52;4779:288;-1:-1:-1;;;;4779:288:66:o;5072:217::-;5219:2;5208:9;5201:21;5182:4;5239:44;5279:2;5268:9;5264:18;5256:6;5239:44;:::i;5645:337::-;5820:2;5809:9;5802:21;5783:4;5840:44;5880:2;5869:9;5865:18;5857:6;5840:44;:::i;:::-;5832:52;;5932:42;5924:6;5920:55;5915:2;5904:9;5900:18;5893:83;5645:337;;;;;:::o;6754:184::-;6806:77;6803:1;6796:88;6903:4;6900:1;6893:15;6927:4;6924:1;6917:15;6943:228;6983:7;7109:1;7041:66;7037:74;7034:1;7031:81;7026:1;7019:9;7012:17;7008:105;7005:131;;;7116:18;;:::i;:::-;-1:-1:-1;7156:9:66;;6943:228::o;7176:128::-;7216:3;7247:1;7243:6;7240:1;7237:13;7234:39;;;7253:18;;:::i;:::-;-1:-1:-1;7289:9:66;;7176:128::o;7662:712::-;7975:3;7964:9;7957:22;7938:4;7996:45;8036:3;8025:9;8021:19;8013:6;7996:45;:::i;:::-;8072:2;8057:18;;8050:34;;;;-1:-1:-1;8132:10:66;8120:23;;;;8115:2;8100:18;;8093:51;8175:2;8160:18;;8153:34;;;;8218:3;8203:19;;8196:35;;;;8280:42;8268:55;8262:3;8247:19;;8240:84;8355:3;8340:19;;;8333:35;7988:53;7662:712;-1:-1:-1;7662:712:66:o;8379:836::-;8693:4;8722:3;8744:42;8825:2;8817:6;8813:15;8802:9;8795:34;8865:6;8860:2;8849:9;8845:18;8838:34;8908:6;8903:2;8892:9;8888:18;8881:34;8963:2;8955:6;8951:15;8946:2;8935:9;8931:18;8924:43;9016:2;9008:6;9004:15;8998:3;8987:9;8983:19;8976:44;;9057:6;9051:3;9040:9;9036:19;9029:35;9101:6;9095:3;9084:9;9080:19;9073:35;9145:2;9139:3;9128:9;9124:19;9117:31;9165:44;9205:2;9194:9;9190:18;9182:6;9165:44;:::i;:::-;9157:52;8379:836;-1:-1:-1;;;;;;;;;;;8379:836:66:o;9220:184::-;9290:6;9343:2;9331:9;9322:7;9318:23;9314:32;9311:52;;;9359:1;9356;9349:12;9311:52;-1:-1:-1;9382:16:66;;9220:184;-1:-1:-1;9220:184:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "1718200",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "": "187",
                                "childChainId()": "2329",
                                "childMessenger()": "2359",
                                "defaultGasLimit()": "2369",
                                "defaultGasPrice()": "2350",
                                "defaultMaxSubmissionCost()": "2328",
                                "getL1CallValue()": "infinite",
                                "governorHub()": "2381",
                                "governorSpoke()": "2403",
                                "inbox()": "infinite",
                                "oracleHub()": "2380",
                                "oracleSpoke()": "2380",
                                "owner()": "2397",
                                "processMessageFromCrossChainChild(bytes)": "infinite",
                                "refundL2Address()": "2380",
                                "renounceOwnership()": "30171",
                                "sendMessageToChild(bytes)": "infinite",
                                "setChildMessenger(address)": "27904",
                                "setChildOracleSpoke(address)": "infinite",
                                "setChildParentMessenger(address)": "infinite",
                                "setDefaultGasLimit(uint32)": "78426",
                                "setDefaultGasPrice(uint256)": "76193",
                                "setDefaultMaxSubmissionCost(uint256)": "76236",
                                "setGovernorHub(address)": "27862",
                                "setGovernorSpoke(address)": "27882",
                                "setOracleHub(address)": "27861",
                                "setOracleSpoke(address)": "27861",
                                "setRefundL2Address(address)": "infinite",
                                "transferOwnership(address)": "30407"
                            },
                            "internal": {
                                "_getL1CallValue()": "6522",
                                "_sendMessageToChild(bytes memory,address)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "childChainId()": "b14b0f56",
                            "childMessenger()": "5f234d53",
                            "defaultGasLimit()": "95368d2e",
                            "defaultGasPrice()": "e7b4294c",
                            "defaultMaxSubmissionCost()": "d78eb11f",
                            "getL1CallValue()": "08f1ed15",
                            "governorHub()": "8d09550e",
                            "governorSpoke()": "7092a2b2",
                            "inbox()": "fb0e722b",
                            "oracleHub()": "73d62b46",
                            "oracleSpoke()": "98e1e16f",
                            "owner()": "8da5cb5b",
                            "processMessageFromCrossChainChild(bytes)": "109ff9a9",
                            "refundL2Address()": "bcafec13",
                            "renounceOwnership()": "715018a6",
                            "sendMessageToChild(bytes)": "4c09e6e8",
                            "setChildMessenger(address)": "81e8ea46",
                            "setChildOracleSpoke(address)": "acab324c",
                            "setChildParentMessenger(address)": "0e28c764",
                            "setDefaultGasLimit(uint32)": "524b6f70",
                            "setDefaultGasPrice(uint256)": "8b42a40a",
                            "setDefaultMaxSubmissionCost(uint256)": "a0cadf0b",
                            "setGovernorHub(address)": "0a2b5e03",
                            "setGovernorSpoke(address)": "c75ba1f4",
                            "setOracleHub(address)": "62315c42",
                            "setOracleSpoke(address)": "1a50ad30",
                            "setRefundL2Address(address)": "816c2444",
                            "transferOwnership(address)": "f2fde38b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inbox\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_childChainId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"childMessenger\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetHub\",\"type\":\"address\"}],\"name\":\"MessageReceivedFromChild\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetSpoke\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1CallValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"gasLimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"refundL2Address\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"childMessenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sequenceNumber\",\"type\":\"uint256\"}],\"name\":\"MessageSentToChild\",\"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\":\"childMessenger\",\"type\":\"address\"}],\"name\":\"SetChildMessenger\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"newDefaultGasLimit\",\"type\":\"uint32\"}],\"name\":\"SetDefaultGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newDefaultGasPrice\",\"type\":\"uint256\"}],\"name\":\"SetDefaultGasPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaxSubmissionCost\",\"type\":\"uint256\"}],\"name\":\"SetDefaultMaxSubmissionCost\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governorHub\",\"type\":\"address\"}],\"name\":\"SetGovernorHub\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governorSpoke\",\"type\":\"address\"}],\"name\":\"SetGovernorSpoke\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracleHub\",\"type\":\"address\"}],\"name\":\"SetOracleHub\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracleSpoke\",\"type\":\"address\"}],\"name\":\"SetOracleSpoke\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRefundL2Address\",\"type\":\"address\"}],\"name\":\"SetRefundL2Address\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"childChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"childMessenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultGasLimit\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultGasPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultMaxSubmissionCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getL1CallValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governorHub\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governorSpoke\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inbox\",\"outputs\":[{\"internalType\":\"contract iArbitrum_Inbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracleHub\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracleSpoke\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"processMessageFromCrossChainChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundL2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendMessageToChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newChildMessenger\",\"type\":\"address\"}],\"name\":\"setChildMessenger\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOracleSpoke\",\"type\":\"address\"}],\"name\":\"setChildOracleSpoke\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newParentMessenger\",\"type\":\"address\"}],\"name\":\"setChildParentMessenger\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"newDefaultGasLimit\",\"type\":\"uint32\"}],\"name\":\"setDefaultGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDefaultGasPrice\",\"type\":\"uint256\"}],\"name\":\"setDefaultGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newDefaultMaxSubmissionCost\",\"type\":\"uint256\"}],\"name\":\"setDefaultMaxSubmissionCost\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGovernorHub\",\"type\":\"address\"}],\"name\":\"setGovernorHub\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGovernorSpoke\",\"type\":\"address\"}],\"name\":\"setGovernorSpoke\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOracleHub\",\"type\":\"address\"}],\"name\":\"setOracleHub\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOracleSpoke\",\"type\":\"address\"}],\"name\":\"setOracleSpoke\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newRefundl2Address\",\"type\":\"address\"}],\"name\":\"setRefundL2Address\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is ownable and should be owned by the DVM governor.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_childChainId\":\"The chain id of the Optimism L2 network this messenger should connect to.*\",\"_inbox\":\"Contract that sends generalized messages to the Arbitrum chain.\"}},\"getL1CallValue()\":{\"returns\":{\"_0\":\"Amount of msg.value to include to send cross-chain message.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"processMessageFromCrossChainChild(bytes)\":{\"details\":\"The caller must be the the child messenger, sent over the canonical message bridge.Note that only the OracleHub can receive messages from the child messenger. Therefore we can always forward these messages to this contract. The OracleHub must implement processMessageFromChild to handle this message.\",\"params\":{\"data\":\"data message sent from the child messenger. Should be an encoded function call or packed data.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"sendMessageToChild(bytes)\":{\"details\":\"The caller must be the either the OracleHub or the GovernorHub. This is to send either a price or initiate a governance action to the OracleSpoke or GovernorSpoke on the child network.The recipient of this message is the child messenger. The messenger must implement processMessageFromParent which then forwards the data to the target either the OracleSpoke or the governorSpoke depending on the caller.This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\",\"params\":{\"data\":\"data message sent to the child messenger. Should be an encoded function call or packed data.\"}},\"setChildMessenger(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newChildMessenger\":\"address of the new child messenger, deployed on L2.\"}},\"setChildOracleSpoke(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\",\"params\":{\"newOracleSpoke\":\"the new oracle spoke address set on L2.\"}},\"setChildParentMessenger(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\",\"params\":{\"newParentMessenger\":\"the new parent messenger contract to be set on L2.\"}},\"setDefaultGasLimit(uint32)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newDefaultGasLimit\":\"the new L2 gas limit to be set.\"}},\"setDefaultGasPrice(uint256)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newDefaultGasPrice\":\"the new L2 gas price to be set.\"}},\"setDefaultMaxSubmissionCost(uint256)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newDefaultMaxSubmissionCost\":\"the new L2 max submission cost to be set.\"}},\"setGovernorHub(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newGovernorHub\":\"address of the new governor hub, deployed on L1 Ethereum.\"}},\"setGovernorSpoke(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newGovernorSpoke\":\"address of the new governor spoke, deployed on L2.\"}},\"setOracleHub(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newOracleHub\":\"address of the new oracle hub, deployed on L1 Ethereum.\"}},\"setOracleSpoke(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newOracleSpoke\":\"address of the new oracle spoke, deployed on L2.\"}},\"setRefundL2Address(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newRefundl2Address\":\"the new refund address to set.\"}},\"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\":{\"constructor\":{\"notice\":\"Construct the Optimism_ParentMessenger contract.\"},\"getL1CallValue()\":{\"notice\":\"This function is expected to be queried by Hub contracts that need to determine how much ETH to include in msg.value when calling `sendMessageToChild`.\"},\"processMessageFromCrossChainChild(bytes)\":{\"notice\":\"Process a received message from the child messenger via the canonical message bridge.\"},\"sendMessageToChild(bytes)\":{\"notice\":\"Sends a message to the child messenger via the canonical message bridge.\"},\"setChildMessenger(address)\":{\"notice\":\"Changes the stored address of the child messenger, deployed on L2.\"},\"setChildOracleSpoke(address)\":{\"notice\":\"Changes the address of the oracle spoke on L2 via the child messenger.\"},\"setChildParentMessenger(address)\":{\"notice\":\"Changes the address of the parent messenger on L2 via the child messenger.\"},\"setDefaultGasLimit(uint32)\":{\"notice\":\"Changes the default gas limit that is sent along with transactions to Arbitrum.\"},\"setDefaultGasPrice(uint256)\":{\"notice\":\"Changes the default gas price that is sent along with transactions to Arbitrum.\"},\"setDefaultMaxSubmissionCost(uint256)\":{\"notice\":\"Changes the default max submission cost that is sent along with transactions to Arbitrum.\"},\"setGovernorHub(address)\":{\"notice\":\"Changes the stored address of the Governor hub, deployed on L1.\"},\"setGovernorSpoke(address)\":{\"notice\":\"Changes the stored address of the governor spoke, deployed on L2.\"},\"setOracleHub(address)\":{\"notice\":\"Changes the stored address of the Oracle hub, deployed on L1.\"},\"setOracleSpoke(address)\":{\"notice\":\"Changes the stored address of the oracle spoke, deployed on L2.\"},\"setRefundL2Address(address)\":{\"notice\":\"Changes the refund address on L2 that receives excess gas or the full msg.value if the retryable ticket reverts.\"}},\"notice\":\"Sends cross chain messages from Ethereum L1 to Arbitrum L2 network.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol\":\"Arbitrum_ParentMessenger\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"@uma/core/contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\\\";\\nimport \\\"../interfaces/ParentMessengerInterface.sol\\\";\\nimport \\\"../interfaces/ParentMessengerConsumerInterface.sol\\\";\\nimport \\\"./ParentMessengerBase.sol\\\";\\nimport \\\"../../common/implementation/Lockable.sol\\\";\\n\\n/**\\n * @notice Sends cross chain messages from Ethereum L1 to Arbitrum L2 network.\\n * @dev This contract is ownable and should be owned by the DVM governor.\\n */\\ncontract Arbitrum_ParentMessenger is\\n    Arbitrum_CrossDomainEnabled,\\n    ParentMessengerInterface,\\n    ParentMessengerBase,\\n    Lockable\\n{\\n    event SetDefaultGasLimit(uint32 newDefaultGasLimit);\\n    event SetDefaultMaxSubmissionCost(uint256 newMaxSubmissionCost);\\n    event SetDefaultGasPrice(uint256 newDefaultGasPrice);\\n    event SetRefundL2Address(address newRefundL2Address);\\n    event MessageSentToChild(\\n        bytes data,\\n        address indexed targetSpoke,\\n        uint256 l1CallValue,\\n        uint32 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        address refundL2Address,\\n        address indexed childMessenger,\\n        uint256 sequenceNumber\\n    );\\n    event MessageReceivedFromChild(bytes data, address indexed childMessenger, address indexed targetHub);\\n\\n    // TODO: Can these default values be determined dynamically via L1 Arbitrum system contracts?\\n\\n    // Gas limit for immediate L2 execution attempt (can be estimated via NodeInterface.estimateRetryableTicket).\\n    // NodeInterface precompile interface exists at L2 address 0x00000000000000000000000000000000000000C8\\n    uint32 public defaultGasLimit = 5_000_000;\\n\\n    // Amount of ETH allocated to pay for the base submission fee. The base submission fee is a parameter unique to\\n    // retryable transactions; the user is charged the base submission fee to cover the storage costs of keeping their\\n    // ticket\\u2019s calldata in the retry buffer. (current base submission fee is queryable via\\n    // ArbRetryableTx.getSubmissionPrice). ArbRetryableTicket precompile interface exists at L2 address\\n    // 0x000000000000000000000000000000000000006E.\\n    uint256 public defaultMaxSubmissionCost = 0.1e18;\\n\\n    // L2 Gas price bid for immediate L2 execution attempt (queryable via standard eth*gasPrice RPC)\\n    uint256 public defaultGasPrice = 10e9; // 10 gWei\\n\\n    // This address on L2 receives extra ETH that is left over after relaying a message via the inbox.\\n    address public refundL2Address;\\n\\n    /**\\n     * @notice Construct the Optimism_ParentMessenger contract.\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     * @param _childChainId The chain id of the Optimism L2 network this messenger should connect to.\\n     **/\\n    constructor(address _inbox, uint256 _childChainId)\\n        Arbitrum_CrossDomainEnabled(_inbox)\\n        ParentMessengerBase(_childChainId)\\n    {\\n        refundL2Address = owner();\\n    }\\n\\n    /**\\n     * @notice Changes the refund address on L2 that receives excess gas or the full msg.value if the retryable\\n     * ticket reverts.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newRefundl2Address the new refund address to set.\\n     */\\n    function setRefundL2Address(address newRefundl2Address) public onlyOwner nonReentrant() {\\n        refundL2Address = newRefundl2Address;\\n        emit SetRefundL2Address(refundL2Address);\\n    }\\n\\n    /**\\n     * @notice Changes the default gas limit that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultGasLimit the new L2 gas limit to be set.\\n     */\\n    function setDefaultGasLimit(uint32 newDefaultGasLimit) public onlyOwner nonReentrant() {\\n        defaultGasLimit = newDefaultGasLimit;\\n        emit SetDefaultGasLimit(newDefaultGasLimit);\\n    }\\n\\n    /**\\n     * @notice Changes the default gas price that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultGasPrice the new L2 gas price to be set.\\n     */\\n    function setDefaultGasPrice(uint256 newDefaultGasPrice) public onlyOwner nonReentrant() {\\n        defaultGasPrice = newDefaultGasPrice;\\n        emit SetDefaultGasPrice(newDefaultGasPrice);\\n    }\\n\\n    /**\\n     * @notice Changes the default max submission cost that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultMaxSubmissionCost the new L2 max submission cost to be set.\\n     */\\n    function setDefaultMaxSubmissionCost(uint256 newDefaultMaxSubmissionCost) public onlyOwner nonReentrant() {\\n        defaultMaxSubmissionCost = newDefaultMaxSubmissionCost;\\n        emit SetDefaultMaxSubmissionCost(newDefaultMaxSubmissionCost);\\n    }\\n\\n    /**\\n     * @notice Changes the address of the oracle spoke on L2 via the child messenger.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param newOracleSpoke the new oracle spoke address set on L2.\\n     */\\n    function setChildOracleSpoke(address newOracleSpoke) public onlyOwner {\\n        bytes memory dataSentToChild = abi.encodeWithSignature(\\\"setOracleSpoke(address)\\\", newOracleSpoke);\\n        _sendMessageToChild(dataSentToChild, childMessenger);\\n    }\\n\\n    /**\\n     * @notice Changes the address of the parent messenger on L2 via the child messenger.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param newParentMessenger the new parent messenger contract to be set on L2.\\n     */\\n    function setChildParentMessenger(address newParentMessenger) public onlyOwner {\\n        bytes memory dataSentToChild = abi.encodeWithSignature(\\\"setParentMessenger(address)\\\", newParentMessenger);\\n        _sendMessageToChild(dataSentToChild, childMessenger);\\n    }\\n\\n    /**\\n     * @notice Sends a message to the child messenger via the canonical message bridge.\\n     * @dev The caller must be the either the OracleHub or the GovernorHub. This is to send either a\\n     * price or initiate a governance action to the OracleSpoke or GovernorSpoke on the child network.\\n     * @dev The recipient of this message is the child messenger. The messenger must implement processMessageFromParent\\n     * which then forwards the data to the target either the OracleSpoke or the governorSpoke depending on the caller.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param data data message sent to the child messenger. Should be an encoded function call or packed data.\\n     */\\n    function sendMessageToChild(bytes memory data) external override onlyHubContract() nonReentrant() {\\n        address target = msg.sender == oracleHub ? oracleSpoke : governorSpoke;\\n        bytes memory dataSentToChild =\\n            abi.encodeWithSignature(\\\"processMessageFromCrossChainParent(bytes,address)\\\", data, target);\\n        _sendMessageToChild(dataSentToChild, target);\\n    }\\n\\n    /**\\n     * @notice Process a received message from the child messenger via the canonical message bridge.\\n     * @dev The caller must be the the child messenger, sent over the canonical message bridge.\\n     * @dev Note that only the OracleHub can receive messages from the child messenger. Therefore we can always forward\\n     * these messages to this contract. The OracleHub must implement processMessageFromChild to handle this message.\\n     * @param data data message sent from the child messenger. Should be an encoded function call or packed data.\\n     */\\n    function processMessageFromCrossChainChild(bytes memory data)\\n        public\\n        onlyFromCrossDomainAccount(childMessenger)\\n        nonReentrant()\\n    {\\n        ParentMessengerConsumerInterface(oracleHub).processMessageFromChild(childChainId, data);\\n        emit MessageReceivedFromChild(data, childMessenger, oracleHub);\\n    }\\n\\n    /**\\n     * @notice This function is expected to be queried by Hub contracts that need to determine how much ETH\\n     * to include in msg.value when calling `sendMessageToChild`.\\n     * @return Amount of msg.value to include to send cross-chain message.\\n     */\\n    function getL1CallValue()\\n        public\\n        view\\n        override(ParentMessengerBase, ParentMessengerInterface)\\n        nonReentrantView()\\n        returns (uint256)\\n    {\\n        return _getL1CallValue();\\n    }\\n\\n    // We need to allow this contract to receive ETH, so that it can include some msg.value amount on external calls\\n    // to the `sendMessageToChild` function. We shouldn't expect the owner of this contract to send\\n    // ETH because the owner is intended to be a contract (e.g. the Governor) and we don't want to change the\\n    // Governor interface.\\n    fallback() external payable {}\\n\\n    // Used to determine how much ETH to include in msg.value when calling admin functions like\\n    // `setChildParentMessenger` and sending messages across the bridge.\\n    function _getL1CallValue() internal view returns (uint256) {\\n        // This could overflow if these values are set too high, but since they are configurable by trusted owner\\n        // we won't catch this case.\\n        return defaultMaxSubmissionCost + defaultGasPrice * defaultGasLimit;\\n    }\\n\\n    // This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n    function _sendMessageToChild(bytes memory data, address target) internal {\\n        uint256 requiredL1CallValue = _getL1CallValue();\\n        require(address(this).balance >= requiredL1CallValue, \\\"Insufficient ETH balance\\\");\\n\\n        uint256 seqNumber =\\n            sendTxToL2NoAliassing(\\n                childMessenger,\\n                refundL2Address,\\n                requiredL1CallValue,\\n                defaultMaxSubmissionCost,\\n                defaultGasLimit,\\n                defaultGasPrice,\\n                data\\n            );\\n        emit MessageSentToChild(\\n            data,\\n            target,\\n            requiredL1CallValue,\\n            defaultGasLimit,\\n            defaultGasPrice,\\n            defaultMaxSubmissionCost,\\n            refundL2Address,\\n            childMessenger,\\n            seqNumber\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x944c1d9fca50e1a41ea645b1b481a57a01d8dad3befb157d861e8364c2b4d844\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../interfaces/ParentMessengerInterface.sol\\\";\\n\\nabstract contract ParentMessengerBase is Ownable, ParentMessengerInterface {\\n    uint256 public childChainId;\\n\\n    address public childMessenger;\\n\\n    address public oracleHub;\\n    address public governorHub;\\n\\n    address public oracleSpoke;\\n    address public governorSpoke;\\n\\n    event SetChildMessenger(address indexed childMessenger);\\n    event SetOracleHub(address indexed oracleHub);\\n    event SetGovernorHub(address indexed governorHub);\\n    event SetOracleSpoke(address indexed oracleSpoke);\\n    event SetGovernorSpoke(address indexed governorSpoke);\\n\\n    modifier onlyHubContract() {\\n        require(msg.sender == oracleHub || msg.sender == governorHub, \\\"Only privileged caller\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the ParentMessengerBase contract.\\n     * @param _childChainId The chain id of the L2 network this messenger should connect to.\\n     **/\\n    constructor(uint256 _childChainId) {\\n        childChainId = _childChainId;\\n    }\\n\\n    /*******************\\n     *  OWNER METHODS  *\\n     *******************/\\n\\n    /**\\n     * @notice Changes the stored address of the child messenger, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newChildMessenger address of the new child messenger, deployed on L2.\\n     */\\n    function setChildMessenger(address newChildMessenger) public onlyOwner {\\n        childMessenger = newChildMessenger;\\n        emit SetChildMessenger(childMessenger);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Oracle hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleHub address of the new oracle hub, deployed on L1 Ethereum.\\n     */\\n    function setOracleHub(address newOracleHub) public onlyOwner {\\n        oracleHub = newOracleHub;\\n        emit SetOracleHub(oracleHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Governor hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorHub address of the new governor hub, deployed on L1 Ethereum.\\n     */\\n    function setGovernorHub(address newGovernorHub) public onlyOwner {\\n        governorHub = newGovernorHub;\\n        emit SetGovernorHub(governorHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the oracle spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleSpoke address of the new oracle spoke, deployed on L2.\\n     */\\n    function setOracleSpoke(address newOracleSpoke) public onlyOwner {\\n        oracleSpoke = newOracleSpoke;\\n        emit SetOracleSpoke(oracleSpoke);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the governor spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorSpoke address of the new governor spoke, deployed on L2.\\n     */\\n    function setGovernorSpoke(address newGovernorSpoke) public onlyOwner {\\n        governorSpoke = newGovernorSpoke;\\n        emit SetGovernorSpoke(governorSpoke);\\n    }\\n\\n    /**\\n     * @notice Returns the amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     * @return The amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     */\\n    function getL1CallValue() external view virtual override returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x6d23fec9f17279108b1e51871f4c751e3fb25923d2099053281ac249897ea81b\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerConsumerInterface {\\n    // Function called on Oracle hub to pass in data send from L2, with chain ID.\\n    function processMessageFromChild(uint256 chainId, bytes memory data) external;\\n}\\n\",\"keccak256\":\"0xcb13640f61cb5f5c880f23ca1c82514e46943c94837582bc699c69665fbc5cbb\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerInterface {\\n    // Should send cross-chain message to Child messenger contract or revert.\\n    function sendMessageToChild(bytes memory data) external;\\n\\n    // Informs Hub how much msg.value they need to include to call `sendMessageToChild`.\\n    function getL1CallValue() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x404de68facc63619239a94f5ff8457f47f0c4d098d36b320ef6a0dbf1d6ba568\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":{\"content\":\"// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\\n// with changes only to the solidity version.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n\\n/*\\n * Copyright 2021, Offchain Labs, Inc.\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *    http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\npragma solidity ^0.8.0;\\n\\ninterface iArbitrum_Outbox {\\n    function l2ToL1Sender() external view returns (address);\\n}\\n\",\"keccak256\":\"0x346d5d3a1bcdb29ef40bebbf0ca78fe3063e14176c20c96ea7854cbb4762cbd8\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol\\n// with a change to the solidity version.\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"../../external/avm/interfaces/iArbitrum_Outbox.sol\\\";\\n\\nabstract contract Arbitrum_CrossDomainEnabled {\\n    iArbitrum_Inbox public immutable inbox;\\n\\n    /**\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     */\\n    constructor(address _inbox) {\\n        inbox = iArbitrum_Inbox(_inbox);\\n    }\\n\\n    // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\\n    // This function will not apply aliassing to the `user` address on L2.\\n    // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the\\n    // inbox.\\n    function sendTxToL2NoAliassing(\\n        address target, // Address where transaction will initiate on L2.\\n        address user, // Address where excess gas is credited on L2.\\n        uint256 l1CallValue, // msg.value deposited to `user` on L2.\\n        uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this\\n        // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should\\n        // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`.\\n        uint256 maxGas, // Gas limit for immediate L2 execution attempt.\\n        uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt.\\n        bytes memory data // ABI encoded data to send to target.\\n    ) internal returns (uint256) {\\n        // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external\\n        // - address destAddr: destination L2 contract address\\n        // - uint256 l2CallValue: call value for retryable L2 message\\n        // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee\\n        // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2\\n        // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled\\n        // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution\\n        // - uint256 gasPriceBid: price bid for L2 execution\\n        // - bytes data: ABI encoded data of L2 message\\n        uint256 seqNum =\\n            inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }(\\n                target,\\n                0, // we always assume that l2CallValue = 0\\n                maxSubmissionCost,\\n                user,\\n                user,\\n                maxGas,\\n                gasPriceBid,\\n                data\\n            );\\n        return seqNum;\\n    }\\n\\n    // Copied mostly from: https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol#L31\\n    modifier onlyFromCrossDomainAccount(address l2Counterpart) {\\n        // a message coming from the counterpart gateway was executed by the bridge\\n        IBridge bridge = IBridge(inbox.bridge());\\n        require(msg.sender == address(bridge), \\\"NOT_FROM_BRIDGE\\\");\\n\\n        // and the outbox reports that the L2 address of the sender is the counterpart gateway\\n        address l2ToL1Sender = iArbitrum_Outbox(bridge.activeOutbox()).l2ToL1Sender();\\n        require(l2ToL1Sender == l2Counterpart, \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x8bfa42e9d6c7a927da893c0968213e2263c958414e727562b7e3a02397a962ce\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 627,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "_owner",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 3013,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "childChainId",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 3015,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "childMessenger",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_address"
                            },
                            {
                                "astId": 3017,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "oracleHub",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_address"
                            },
                            {
                                "astId": 3019,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "governorHub",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_address"
                            },
                            {
                                "astId": 3021,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "oracleSpoke",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_address"
                            },
                            {
                                "astId": 3023,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "governorSpoke",
                                "offset": 0,
                                "slot": "6",
                                "type": "t_address"
                            },
                            {
                                "astId": 2594,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "_notEntered",
                                "offset": 20,
                                "slot": "6",
                                "type": "t_bool"
                            },
                            {
                                "astId": 2713,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "defaultGasLimit",
                                "offset": 21,
                                "slot": "6",
                                "type": "t_uint32"
                            },
                            {
                                "astId": 2716,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "defaultMaxSubmissionCost",
                                "offset": 0,
                                "slot": "7",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 2719,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "defaultGasPrice",
                                "offset": 0,
                                "slot": "8",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 2721,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:Arbitrum_ParentMessenger",
                                "label": "refundL2Address",
                                "offset": 0,
                                "slot": "9",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            },
                            "t_uint32": {
                                "encoding": "inplace",
                                "label": "uint32",
                                "numberOfBytes": "4"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "constructor": {
                                "notice": "Construct the Optimism_ParentMessenger contract."
                            },
                            "getL1CallValue()": {
                                "notice": "This function is expected to be queried by Hub contracts that need to determine how much ETH to include in msg.value when calling `sendMessageToChild`."
                            },
                            "processMessageFromCrossChainChild(bytes)": {
                                "notice": "Process a received message from the child messenger via the canonical message bridge."
                            },
                            "sendMessageToChild(bytes)": {
                                "notice": "Sends a message to the child messenger via the canonical message bridge."
                            },
                            "setChildMessenger(address)": {
                                "notice": "Changes the stored address of the child messenger, deployed on L2."
                            },
                            "setChildOracleSpoke(address)": {
                                "notice": "Changes the address of the oracle spoke on L2 via the child messenger."
                            },
                            "setChildParentMessenger(address)": {
                                "notice": "Changes the address of the parent messenger on L2 via the child messenger."
                            },
                            "setDefaultGasLimit(uint32)": {
                                "notice": "Changes the default gas limit that is sent along with transactions to Arbitrum."
                            },
                            "setDefaultGasPrice(uint256)": {
                                "notice": "Changes the default gas price that is sent along with transactions to Arbitrum."
                            },
                            "setDefaultMaxSubmissionCost(uint256)": {
                                "notice": "Changes the default max submission cost that is sent along with transactions to Arbitrum."
                            },
                            "setGovernorHub(address)": {
                                "notice": "Changes the stored address of the Governor hub, deployed on L1."
                            },
                            "setGovernorSpoke(address)": {
                                "notice": "Changes the stored address of the governor spoke, deployed on L2."
                            },
                            "setOracleHub(address)": {
                                "notice": "Changes the stored address of the Oracle hub, deployed on L1."
                            },
                            "setOracleSpoke(address)": {
                                "notice": "Changes the stored address of the oracle spoke, deployed on L2."
                            },
                            "setRefundL2Address(address)": {
                                "notice": "Changes the refund address on L2 that receives excess gas or the full msg.value if the retryable ticket reverts."
                            }
                        },
                        "notice": "Sends cross chain messages from Ethereum L1 to Arbitrum L2 network.",
                        "version": 1
                    }
                }
            },
            "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol": {
                "ParentMessengerBase": {
                    "abi": [
                        {
                            "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": "childMessenger",
                                    "type": "address"
                                }
                            ],
                            "name": "SetChildMessenger",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "governorHub",
                                    "type": "address"
                                }
                            ],
                            "name": "SetGovernorHub",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "governorSpoke",
                                    "type": "address"
                                }
                            ],
                            "name": "SetGovernorSpoke",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "oracleHub",
                                    "type": "address"
                                }
                            ],
                            "name": "SetOracleHub",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "oracleSpoke",
                                    "type": "address"
                                }
                            ],
                            "name": "SetOracleSpoke",
                            "type": "event"
                        },
                        {
                            "inputs": [],
                            "name": "childChainId",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "childMessenger",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getL1CallValue",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "governorHub",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "governorSpoke",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "oracleHub",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "oracleSpoke",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "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": [
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "sendMessageToChild",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newChildMessenger",
                                    "type": "address"
                                }
                            ],
                            "name": "setChildMessenger",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newGovernorHub",
                                    "type": "address"
                                }
                            ],
                            "name": "setGovernorHub",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newGovernorSpoke",
                                    "type": "address"
                                }
                            ],
                            "name": "setGovernorSpoke",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newOracleHub",
                                    "type": "address"
                                }
                            ],
                            "name": "setOracleHub",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newOracleSpoke",
                                    "type": "address"
                                }
                            ],
                            "name": "setOracleSpoke",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newOwner",
                                    "type": "address"
                                }
                            ],
                            "name": "transferOwnership",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "params": {
                                    "_childChainId": "The chain id of the L2 network this messenger should connect to.*"
                                }
                            },
                            "getL1CallValue()": {
                                "returns": {
                                    "_0": "The amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`."
                                }
                            },
                            "owner()": {
                                "details": "Returns the address of the current owner."
                            },
                            "renounceOwnership()": {
                                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
                            },
                            "setChildMessenger(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newChildMessenger": "address of the new child messenger, deployed on L2."
                                }
                            },
                            "setGovernorHub(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newGovernorHub": "address of the new governor hub, deployed on L1 Ethereum."
                                }
                            },
                            "setGovernorSpoke(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newGovernorSpoke": "address of the new governor spoke, deployed on L2."
                                }
                            },
                            "setOracleHub(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newOracleHub": "address of the new oracle hub, deployed on L1 Ethereum."
                                }
                            },
                            "setOracleSpoke(address)": {
                                "details": "The caller of this function must be the owner. This should be set to the DVM governor.",
                                "params": {
                                    "newOracleSpoke": "address of the new oracle spoke, deployed on L2."
                                }
                            },
                            "transferOwnership(address)": {
                                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "childChainId()": "b14b0f56",
                            "childMessenger()": "5f234d53",
                            "getL1CallValue()": "08f1ed15",
                            "governorHub()": "8d09550e",
                            "governorSpoke()": "7092a2b2",
                            "oracleHub()": "73d62b46",
                            "oracleSpoke()": "98e1e16f",
                            "owner()": "8da5cb5b",
                            "renounceOwnership()": "715018a6",
                            "sendMessageToChild(bytes)": "4c09e6e8",
                            "setChildMessenger(address)": "81e8ea46",
                            "setGovernorHub(address)": "0a2b5e03",
                            "setGovernorSpoke(address)": "c75ba1f4",
                            "setOracleHub(address)": "62315c42",
                            "setOracleSpoke(address)": "1a50ad30",
                            "transferOwnership(address)": "f2fde38b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"childMessenger\",\"type\":\"address\"}],\"name\":\"SetChildMessenger\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governorHub\",\"type\":\"address\"}],\"name\":\"SetGovernorHub\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"governorSpoke\",\"type\":\"address\"}],\"name\":\"SetGovernorSpoke\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracleHub\",\"type\":\"address\"}],\"name\":\"SetOracleHub\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oracleSpoke\",\"type\":\"address\"}],\"name\":\"SetOracleSpoke\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"childChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"childMessenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getL1CallValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governorHub\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governorSpoke\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracleHub\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracleSpoke\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendMessageToChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newChildMessenger\",\"type\":\"address\"}],\"name\":\"setChildMessenger\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGovernorHub\",\"type\":\"address\"}],\"name\":\"setGovernorHub\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGovernorSpoke\",\"type\":\"address\"}],\"name\":\"setGovernorSpoke\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOracleHub\",\"type\":\"address\"}],\"name\":\"setOracleHub\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOracleSpoke\",\"type\":\"address\"}],\"name\":\"setOracleSpoke\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_childChainId\":\"The chain id of the L2 network this messenger should connect to.*\"}},\"getL1CallValue()\":{\"returns\":{\"_0\":\"The amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setChildMessenger(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newChildMessenger\":\"address of the new child messenger, deployed on L2.\"}},\"setGovernorHub(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newGovernorHub\":\"address of the new governor hub, deployed on L1 Ethereum.\"}},\"setGovernorSpoke(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newGovernorSpoke\":\"address of the new governor spoke, deployed on L2.\"}},\"setOracleHub(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newOracleHub\":\"address of the new oracle hub, deployed on L1 Ethereum.\"}},\"setOracleSpoke(address)\":{\"details\":\"The caller of this function must be the owner. This should be set to the DVM governor.\",\"params\":{\"newOracleSpoke\":\"address of the new oracle spoke, deployed on L2.\"}},\"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\":{\"constructor\":{\"notice\":\"Construct the ParentMessengerBase contract.\"},\"getL1CallValue()\":{\"notice\":\"Returns the amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\"},\"setChildMessenger(address)\":{\"notice\":\"Changes the stored address of the child messenger, deployed on L2.\"},\"setGovernorHub(address)\":{\"notice\":\"Changes the stored address of the Governor hub, deployed on L1.\"},\"setGovernorSpoke(address)\":{\"notice\":\"Changes the stored address of the governor spoke, deployed on L2.\"},\"setOracleHub(address)\":{\"notice\":\"Changes the stored address of the Oracle hub, deployed on L1.\"},\"setOracleSpoke(address)\":{\"notice\":\"Changes the stored address of the oracle spoke, deployed on L2.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol\":\"ParentMessengerBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../interfaces/ParentMessengerInterface.sol\\\";\\n\\nabstract contract ParentMessengerBase is Ownable, ParentMessengerInterface {\\n    uint256 public childChainId;\\n\\n    address public childMessenger;\\n\\n    address public oracleHub;\\n    address public governorHub;\\n\\n    address public oracleSpoke;\\n    address public governorSpoke;\\n\\n    event SetChildMessenger(address indexed childMessenger);\\n    event SetOracleHub(address indexed oracleHub);\\n    event SetGovernorHub(address indexed governorHub);\\n    event SetOracleSpoke(address indexed oracleSpoke);\\n    event SetGovernorSpoke(address indexed governorSpoke);\\n\\n    modifier onlyHubContract() {\\n        require(msg.sender == oracleHub || msg.sender == governorHub, \\\"Only privileged caller\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the ParentMessengerBase contract.\\n     * @param _childChainId The chain id of the L2 network this messenger should connect to.\\n     **/\\n    constructor(uint256 _childChainId) {\\n        childChainId = _childChainId;\\n    }\\n\\n    /*******************\\n     *  OWNER METHODS  *\\n     *******************/\\n\\n    /**\\n     * @notice Changes the stored address of the child messenger, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newChildMessenger address of the new child messenger, deployed on L2.\\n     */\\n    function setChildMessenger(address newChildMessenger) public onlyOwner {\\n        childMessenger = newChildMessenger;\\n        emit SetChildMessenger(childMessenger);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Oracle hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleHub address of the new oracle hub, deployed on L1 Ethereum.\\n     */\\n    function setOracleHub(address newOracleHub) public onlyOwner {\\n        oracleHub = newOracleHub;\\n        emit SetOracleHub(oracleHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Governor hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorHub address of the new governor hub, deployed on L1 Ethereum.\\n     */\\n    function setGovernorHub(address newGovernorHub) public onlyOwner {\\n        governorHub = newGovernorHub;\\n        emit SetGovernorHub(governorHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the oracle spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleSpoke address of the new oracle spoke, deployed on L2.\\n     */\\n    function setOracleSpoke(address newOracleSpoke) public onlyOwner {\\n        oracleSpoke = newOracleSpoke;\\n        emit SetOracleSpoke(oracleSpoke);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the governor spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorSpoke address of the new governor spoke, deployed on L2.\\n     */\\n    function setGovernorSpoke(address newGovernorSpoke) public onlyOwner {\\n        governorSpoke = newGovernorSpoke;\\n        emit SetGovernorSpoke(governorSpoke);\\n    }\\n\\n    /**\\n     * @notice Returns the amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     * @return The amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     */\\n    function getL1CallValue() external view virtual override returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x6d23fec9f17279108b1e51871f4c751e3fb25923d2099053281ac249897ea81b\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerInterface {\\n    // Should send cross-chain message to Child messenger contract or revert.\\n    function sendMessageToChild(bytes memory data) external;\\n\\n    // Informs Hub how much msg.value they need to include to call `sendMessageToChild`.\\n    function getL1CallValue() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x404de68facc63619239a94f5ff8457f47f0c4d098d36b320ef6a0dbf1d6ba568\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 627,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol:ParentMessengerBase",
                                "label": "_owner",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 3013,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol:ParentMessengerBase",
                                "label": "childChainId",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 3015,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol:ParentMessengerBase",
                                "label": "childMessenger",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_address"
                            },
                            {
                                "astId": 3017,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol:ParentMessengerBase",
                                "label": "oracleHub",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_address"
                            },
                            {
                                "astId": 3019,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol:ParentMessengerBase",
                                "label": "governorHub",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_address"
                            },
                            {
                                "astId": 3021,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol:ParentMessengerBase",
                                "label": "oracleSpoke",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_address"
                            },
                            {
                                "astId": 3023,
                                "contract": "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol:ParentMessengerBase",
                                "label": "governorSpoke",
                                "offset": 0,
                                "slot": "6",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "constructor": {
                                "notice": "Construct the ParentMessengerBase contract."
                            },
                            "getL1CallValue()": {
                                "notice": "Returns the amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`."
                            },
                            "setChildMessenger(address)": {
                                "notice": "Changes the stored address of the child messenger, deployed on L2."
                            },
                            "setGovernorHub(address)": {
                                "notice": "Changes the stored address of the Governor hub, deployed on L1."
                            },
                            "setGovernorSpoke(address)": {
                                "notice": "Changes the stored address of the governor spoke, deployed on L2."
                            },
                            "setOracleHub(address)": {
                                "notice": "Changes the stored address of the Oracle hub, deployed on L1."
                            },
                            "setOracleSpoke(address)": {
                                "notice": "Changes the stored address of the oracle spoke, deployed on L2."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol": {
                "ParentMessengerConsumerInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "processMessageFromChild",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "processMessageFromChild(uint256,bytes)": "6423b60e"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"processMessageFromChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol\":\"ParentMessengerConsumerInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerConsumerInterface {\\n    // Function called on Oracle hub to pass in data send from L2, with chain ID.\\n    function processMessageFromChild(uint256 chainId, bytes memory data) external;\\n}\\n\",\"keccak256\":\"0xcb13640f61cb5f5c880f23ca1c82514e46943c94837582bc699c69665fbc5cbb\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol": {
                "ParentMessengerInterface": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "getL1CallValue",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "sendMessageToChild",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "getL1CallValue()": "08f1ed15",
                            "sendMessageToChild(bytes)": "4c09e6e8"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getL1CallValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"sendMessageToChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol\":\"ParentMessengerInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerInterface {\\n    // Should send cross-chain message to Child messenger contract or revert.\\n    function sendMessageToChild(bytes memory data) external;\\n\\n    // Informs Hub how much msg.value they need to include to call `sendMessageToChild`.\\n    function getL1CallValue() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x404de68facc63619239a94f5ff8457f47f0c4d098d36b320ef6a0dbf1d6ba568\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol": {
                "IBridge": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "activeOutbox",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "activeOutbox()": "ab5d8943"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"activeOutbox\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":\"IBridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                },
                "iArbitrum_Inbox": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "bridge",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "destAddr",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "excessFeeRefundAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "callValueRefundAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxGas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasPriceBid",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "createRetryableTicketNoRefundAliasRewrite",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "bridge()": "e78cea92",
                            "createRetryableTicketNoRefundAliasRewrite(address,uint256,uint256,address,address,uint256,uint256,bytes)": "1b871c8d"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"l2CallValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"excessFeeRefundAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callValueRefundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPriceBid\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"createRetryableTicketNoRefundAliasRewrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":\"iArbitrum_Inbox\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol": {
                "iArbitrum_Outbox": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "l2ToL1Sender",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "l2ToL1Sender()": "80648b02"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"l2ToL1Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":\"iArbitrum_Outbox\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":{\"content\":\"// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\\n// with changes only to the solidity version.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n\\n/*\\n * Copyright 2021, Offchain Labs, Inc.\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *    http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\npragma solidity ^0.8.0;\\n\\ninterface iArbitrum_Outbox {\\n    function l2ToL1Sender() external view returns (address);\\n}\\n\",\"keccak256\":\"0x346d5d3a1bcdb29ef40bebbf0ca78fe3063e14176c20c96ea7854cbb4762cbd8\",\"license\":\"Apache-2.0\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol": {
                "Arbitrum_CrossDomainEnabled": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "inbox",
                            "outputs": [
                                {
                                    "internalType": "contract iArbitrum_Inbox",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "params": {
                                    "_inbox": "Contract that sends generalized messages to the Arbitrum chain."
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "inbox()": "fb0e722b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"inbox\",\"outputs\":[{\"internalType\":\"contract iArbitrum_Inbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_inbox\":\"Contract that sends generalized messages to the Arbitrum chain.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\":\"Arbitrum_CrossDomainEnabled\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":{\"content\":\"// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\\n// with changes only to the solidity version.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n\\n/*\\n * Copyright 2021, Offchain Labs, Inc.\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *    http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\npragma solidity ^0.8.0;\\n\\ninterface iArbitrum_Outbox {\\n    function l2ToL1Sender() external view returns (address);\\n}\\n\",\"keccak256\":\"0x346d5d3a1bcdb29ef40bebbf0ca78fe3063e14176c20c96ea7854cbb4762cbd8\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol\\n// with a change to the solidity version.\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"../../external/avm/interfaces/iArbitrum_Outbox.sol\\\";\\n\\nabstract contract Arbitrum_CrossDomainEnabled {\\n    iArbitrum_Inbox public immutable inbox;\\n\\n    /**\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     */\\n    constructor(address _inbox) {\\n        inbox = iArbitrum_Inbox(_inbox);\\n    }\\n\\n    // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\\n    // This function will not apply aliassing to the `user` address on L2.\\n    // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the\\n    // inbox.\\n    function sendTxToL2NoAliassing(\\n        address target, // Address where transaction will initiate on L2.\\n        address user, // Address where excess gas is credited on L2.\\n        uint256 l1CallValue, // msg.value deposited to `user` on L2.\\n        uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this\\n        // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should\\n        // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`.\\n        uint256 maxGas, // Gas limit for immediate L2 execution attempt.\\n        uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt.\\n        bytes memory data // ABI encoded data to send to target.\\n    ) internal returns (uint256) {\\n        // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external\\n        // - address destAddr: destination L2 contract address\\n        // - uint256 l2CallValue: call value for retryable L2 message\\n        // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee\\n        // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2\\n        // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled\\n        // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution\\n        // - uint256 gasPriceBid: price bid for L2 execution\\n        // - bytes data: ABI encoded data of L2 message\\n        uint256 seqNum =\\n            inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }(\\n                target,\\n                0, // we always assume that l2CallValue = 0\\n                maxSubmissionCost,\\n                user,\\n                user,\\n                maxGas,\\n                gasPriceBid,\\n                data\\n            );\\n        return seqNum;\\n    }\\n\\n    // Copied mostly from: https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol#L31\\n    modifier onlyFromCrossDomainAccount(address l2Counterpart) {\\n        // a message coming from the counterpart gateway was executed by the bridge\\n        IBridge bridge = IBridge(inbox.bridge());\\n        require(msg.sender == address(bridge), \\\"NOT_FROM_BRIDGE\\\");\\n\\n        // and the outbox reports that the L2 address of the sender is the counterpart gateway\\n        address l2ToL1Sender = iArbitrum_Outbox(bridge.activeOutbox()).l2ToL1Sender();\\n        require(l2ToL1Sender == l2Counterpart, \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x8bfa42e9d6c7a927da893c0968213e2263c958414e727562b7e3a02397a962ce\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/common/implementation/AncillaryData.sol": {
                "AncillaryData": {
                    "abi": [],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "title": "Library for encoding and decoding ancillary data for DVM price requests.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a73d741b9eb4023d0db5c1df48eb59b436e7e3a1534133ede56fad67ba147e164736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 PUSH20 0xD741B9EB4023D0DB5C1DF48EB59B436E7E3A1534 SGT RETURNDATACOPY 0xDE JUMP STATICCALL 0xD6 PUSH28 0xA147E164736F6C634300080900330000000000000000000000000000 ",
                            "sourceMap": "663:6562:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;663:6562:26;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a73d741b9eb4023d0db5c1df48eb59b436e7e3a1534133ede56fad67ba147e164736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 PUSH20 0xD741B9EB4023D0DB5C1DF48EB59B436E7E3A1534 SGT RETURNDATACOPY 0xDE JUMP STATICCALL 0xD6 PUSH28 0xA147E164736F6C634300080900330000000000000000000000000000 ",
                            "sourceMap": "663:6562:26:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "appendKeyValueAddress(bytes memory,bytes memory,address)": "infinite",
                                "appendKeyValueBytes32(bytes memory,bytes memory,bytes32)": "infinite",
                                "appendKeyValueUint(bytes memory,bytes memory,uint256)": "infinite",
                                "constructPrefix(bytes memory,bytes memory)": "infinite",
                                "toUtf8Bytes(bytes32)": "infinite",
                                "toUtf8Bytes32Bottom(bytes32)": "infinite",
                                "toUtf8BytesAddress(address)": "infinite",
                                "toUtf8BytesUint(uint256)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for encoding and decoding ancillary data for DVM price requests.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity smart contracts. More details on UMA's ancillary data guidelines below: https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/AncillaryData.sol\":\"AncillaryData\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/AncillaryData.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Library for encoding and decoding ancillary data for DVM price requests.\\n * @notice  We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via\\n * web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value\\n * dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity\\n * smart contracts. More details on UMA's ancillary data guidelines below:\\n * https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit\\n */\\nlibrary AncillaryData {\\n    // This converts the bottom half of a bytes32 input to hex in a highly gas-optimized way.\\n    // Source: the brilliant implementation at https://gitter.im/ethereum/solidity?at=5840d23416207f7b0ed08c9b.\\n    function toUtf8Bytes32Bottom(bytes32 bytesIn) private pure returns (bytes32) {\\n        unchecked {\\n            uint256 x = uint256(bytesIn);\\n\\n            // Nibble interleave\\n            x = x & 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff;\\n            x = (x | (x * 2**64)) & 0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff;\\n            x = (x | (x * 2**32)) & 0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff;\\n            x = (x | (x * 2**16)) & 0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff;\\n            x = (x | (x * 2**8)) & 0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff;\\n            x = (x | (x * 2**4)) & 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f;\\n\\n            // Hex encode\\n            uint256 h = (x & 0x0808080808080808080808080808080808080808080808080808080808080808) / 8;\\n            uint256 i = (x & 0x0404040404040404040404040404040404040404040404040404040404040404) / 4;\\n            uint256 j = (x & 0x0202020202020202020202020202020202020202020202020202020202020202) / 2;\\n            x = x + (h & (i | j)) * 0x27 + 0x3030303030303030303030303030303030303030303030303030303030303030;\\n\\n            // Return the result.\\n            return bytes32(x);\\n        }\\n    }\\n\\n    /**\\n     * @notice Returns utf8-encoded bytes32 string that can be read via web3.utils.hexToUtf8.\\n     * @dev Will return bytes32 in all lower case hex characters and without the leading 0x.\\n     * This has minor changes from the toUtf8BytesAddress to control for the size of the input.\\n     * @param bytesIn bytes32 to encode.\\n     * @return utf8 encoded bytes32.\\n     */\\n    function toUtf8Bytes(bytes32 bytesIn) internal pure returns (bytes memory) {\\n        return abi.encodePacked(toUtf8Bytes32Bottom(bytesIn >> 128), toUtf8Bytes32Bottom(bytesIn));\\n    }\\n\\n    /**\\n     * @notice Returns utf8-encoded address that can be read via web3.utils.hexToUtf8.\\n     * Source: https://ethereum.stackexchange.com/questions/8346/convert-address-to-string/8447#8447\\n     * @dev Will return address in all lower case characters and without the leading 0x.\\n     * @param x address to encode.\\n     * @return utf8 encoded address bytes.\\n     */\\n    function toUtf8BytesAddress(address x) internal pure returns (bytes memory) {\\n        return\\n            abi.encodePacked(toUtf8Bytes32Bottom(bytes32(bytes20(x)) >> 128), bytes8(toUtf8Bytes32Bottom(bytes20(x))));\\n    }\\n\\n    /**\\n     * @notice Converts a uint into a base-10, UTF-8 representation stored in a `string` type.\\n     * @dev This method is based off of this code: https://stackoverflow.com/a/65707309.\\n     */\\n    function toUtf8BytesUint(uint256 x) internal pure returns (bytes memory) {\\n        if (x == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 j = x;\\n        uint256 len;\\n        while (j != 0) {\\n            len++;\\n            j /= 10;\\n        }\\n        bytes memory bstr = new bytes(len);\\n        uint256 k = len;\\n        while (x != 0) {\\n            k = k - 1;\\n            uint8 temp = (48 + uint8(x - (x / 10) * 10));\\n            bytes1 b1 = bytes1(temp);\\n            bstr[k] = b1;\\n            x /= 10;\\n        }\\n        return bstr;\\n    }\\n\\n    function appendKeyValueBytes32(\\n        bytes memory currentAncillaryData,\\n        bytes memory key,\\n        bytes32 value\\n    ) internal pure returns (bytes memory) {\\n        bytes memory prefix = constructPrefix(currentAncillaryData, key);\\n        return abi.encodePacked(currentAncillaryData, prefix, toUtf8Bytes(value));\\n    }\\n\\n    /**\\n     * @notice Adds \\\"key:value\\\" to `currentAncillaryData` where `value` is an address that first needs to be converted\\n     * to utf8 bytes. For example, if `utf8(currentAncillaryData)=\\\"k1:v1\\\"`, then this function will return\\n     * `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\\n     * @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\\n     * @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\\n     * @param value An address to set as the value in the key:value pair to append to `currentAncillaryData`.\\n     * @return Newly appended ancillary data.\\n     */\\n    function appendKeyValueAddress(\\n        bytes memory currentAncillaryData,\\n        bytes memory key,\\n        address value\\n    ) internal pure returns (bytes memory) {\\n        bytes memory prefix = constructPrefix(currentAncillaryData, key);\\n        return abi.encodePacked(currentAncillaryData, prefix, toUtf8BytesAddress(value));\\n    }\\n\\n    /**\\n     * @notice Adds \\\"key:value\\\" to `currentAncillaryData` where `value` is a uint that first needs to be converted\\n     * to utf8 bytes. For example, if `utf8(currentAncillaryData)=\\\"k1:v1\\\"`, then this function will return\\n     * `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\\n     * @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\\n     * @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\\n     * @param value A uint to set as the value in the key:value pair to append to `currentAncillaryData`.\\n     * @return Newly appended ancillary data.\\n     */\\n    function appendKeyValueUint(\\n        bytes memory currentAncillaryData,\\n        bytes memory key,\\n        uint256 value\\n    ) internal pure returns (bytes memory) {\\n        bytes memory prefix = constructPrefix(currentAncillaryData, key);\\n        return abi.encodePacked(currentAncillaryData, prefix, toUtf8BytesUint(value));\\n    }\\n\\n    /**\\n     * @notice Helper method that returns the left hand side of a \\\"key:value\\\" pair plus the colon \\\":\\\" and a leading\\n     * comma \\\",\\\" if the `currentAncillaryData` is not empty. The return value is intended to be prepended as a prefix to\\n     * some utf8 value that is ultimately added to a comma-delimited, key-value dictionary.\\n     */\\n    function constructPrefix(bytes memory currentAncillaryData, bytes memory key) internal pure returns (bytes memory) {\\n        if (currentAncillaryData.length > 0) {\\n            return abi.encodePacked(\\\",\\\", key, \\\":\\\");\\n        } else {\\n            return abi.encodePacked(key, \\\":\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x8ff33ac32d3e6de25de9e0ac2c0ff9a621f187fa97e9ee84092b327471baa3ce\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "notice": "We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity smart contracts. More details on UMA's ancillary data guidelines below: https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit",
                        "version": 1
                    }
                }
            },
            "contracts/common/implementation/FixedPoint.sol": {
                "FixedPoint": {
                    "abi": [],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "title": "Library for fixed point arithmetic on uints",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208a367ba8b059aadc545447c58fcf4980071f001969a4eb08e8932f432516f5de64736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 CALLDATASIZE PUSH28 0xA8B059AADC545447C58FCF4980071F001969A4EB08E8932F432516F5 0xDE PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "252:28526:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;252:28526:27;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208a367ba8b059aadc545447c58fcf4980071f001969a4eb08e8932f432516f5de64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 CALLDATASIZE PUSH28 0xA8B059AADC545447C58FCF4980071F001969A4EB08E8932F432516F5 0xDE PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "252:28526:27:-:0;;;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "17200",
                                "executionCost": "103",
                                "totalCost": "17303"
                            },
                            "internal": {
                                "add(struct FixedPoint.Signed memory,int256)": "infinite",
                                "add(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "add(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "add(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "div(int256,struct FixedPoint.Signed memory)": "infinite",
                                "div(struct FixedPoint.Signed memory,int256)": "infinite",
                                "div(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "div(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "div(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "div(uint256,struct FixedPoint.Unsigned memory)": "infinite",
                                "divAwayFromZero(struct FixedPoint.Signed memory,int256)": "infinite",
                                "divAwayFromZero(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "divCeil(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "divCeil(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "fromSigned(struct FixedPoint.Signed memory)": "infinite",
                                "fromUnscaledInt(int256)": "infinite",
                                "fromUnscaledUint(uint256)": "infinite",
                                "fromUnsigned(struct FixedPoint.Unsigned memory)": "infinite",
                                "isEqual(struct FixedPoint.Signed memory,int256)": "infinite",
                                "isEqual(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "isEqual(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "isEqual(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "isGreaterThan(int256,struct FixedPoint.Signed memory)": "infinite",
                                "isGreaterThan(struct FixedPoint.Signed memory,int256)": "infinite",
                                "isGreaterThan(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "isGreaterThan(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "isGreaterThan(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "isGreaterThan(uint256,struct FixedPoint.Unsigned memory)": "infinite",
                                "isGreaterThanOrEqual(int256,struct FixedPoint.Signed memory)": "infinite",
                                "isGreaterThanOrEqual(struct FixedPoint.Signed memory,int256)": "infinite",
                                "isGreaterThanOrEqual(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "isGreaterThanOrEqual(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "isGreaterThanOrEqual(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "isGreaterThanOrEqual(uint256,struct FixedPoint.Unsigned memory)": "infinite",
                                "isLessThan(int256,struct FixedPoint.Signed memory)": "infinite",
                                "isLessThan(struct FixedPoint.Signed memory,int256)": "infinite",
                                "isLessThan(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "isLessThan(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "isLessThan(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "isLessThan(uint256,struct FixedPoint.Unsigned memory)": "infinite",
                                "isLessThanOrEqual(int256,struct FixedPoint.Signed memory)": "infinite",
                                "isLessThanOrEqual(struct FixedPoint.Signed memory,int256)": "infinite",
                                "isLessThanOrEqual(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "isLessThanOrEqual(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "isLessThanOrEqual(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "isLessThanOrEqual(uint256,struct FixedPoint.Unsigned memory)": "infinite",
                                "max(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "max(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "min(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "min(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "mul(struct FixedPoint.Signed memory,int256)": "infinite",
                                "mul(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "mul(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "mul(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "mulAwayFromZero(struct FixedPoint.Signed memory,int256)": "infinite",
                                "mulAwayFromZero(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "mulCeil(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "mulCeil(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "pow(struct FixedPoint.Signed memory,uint256)": "infinite",
                                "pow(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "sub(int256,struct FixedPoint.Signed memory)": "infinite",
                                "sub(struct FixedPoint.Signed memory,int256)": "infinite",
                                "sub(struct FixedPoint.Signed memory,struct FixedPoint.Signed memory)": "infinite",
                                "sub(struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory)": "infinite",
                                "sub(struct FixedPoint.Unsigned memory,uint256)": "infinite",
                                "sub(uint256,struct FixedPoint.Unsigned memory)": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for fixed point arithmetic on uints\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            uint256 c = a + b;\\n            if (c < a) return (false, 0);\\n            return (true, c);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b > a) return (false, 0);\\n            return (true, a - b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n            // benefit is lost if 'b' is also tested.\\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n            if (a == 0) return (true, 0);\\n            uint256 c = a * b;\\n            if (c / a != b) return (false, 0);\\n            return (true, c);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b == 0) return (false, 0);\\n            return (true, a / b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b == 0) return (false, 0);\\n            return (true, a % b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a + b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting on\\n     * overflow (when the result is negative).\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a - b;\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a * b;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a / b;\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting when dividing by zero.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a % b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n     * overflow (when the result is negative).\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {trySub}.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b <= a, errorMessage);\\n            return a - b;\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b > 0, errorMessage);\\n            return a / b;\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting with custom message when dividing by zero.\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {tryMod}.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b > 0, errorMessage);\\n            return a % b;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\\n * now has built in overflow checking.\\n */\\nlibrary SignedSafeMath {\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        return a * b;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        return a / b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        return a - b;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        return a + b;\\n    }\\n}\\n\",\"keccak256\":\"0xd1ddc24b24f12a347093844dd645c3a96bcdce05d1f51b8650946ad404cb3c40\",\"license\":\"MIT\"},\"contracts/common/implementation/FixedPoint.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\\\";\\n\\n/**\\n * @title Library for fixed point arithmetic on uints\\n */\\nlibrary FixedPoint {\\n    using SafeMath for uint256;\\n    using SignedSafeMath for int256;\\n\\n    // Supports 18 decimals. E.g., 1e18 represents \\\"1\\\", 5e17 represents \\\"0.5\\\".\\n    // For unsigned values:\\n    //   This can represent a value up to (2^256 - 1)/10^18 = ~10^59. 10^59 will be stored internally as uint256 10^77.\\n    uint256 private constant FP_SCALING_FACTOR = 10**18;\\n\\n    // --------------------------------------- UNSIGNED -----------------------------------------------------------------------------\\n    struct Unsigned {\\n        uint256 rawValue;\\n    }\\n\\n    /**\\n     * @notice Constructs an `Unsigned` from an unscaled uint, e.g., `b=5` gets stored internally as `5*(10**18)`.\\n     * @param a uint to convert into a FixedPoint.\\n     * @return the converted FixedPoint.\\n     */\\n    function fromUnscaledUint(uint256 a) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.mul(FP_SCALING_FACTOR));\\n    }\\n\\n    /**\\n     * @notice Whether `a` is equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if equal, or False.\\n     */\\n    function isEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue == fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if equal, or False.\\n     */\\n    function isEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue == b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue > b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue > fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(uint256 a, Unsigned memory b) internal pure returns (bool) {\\n        return fromUnscaledUint(a).rawValue > b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue >= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue >= fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(uint256 a, Unsigned memory b) internal pure returns (bool) {\\n        return fromUnscaledUint(a).rawValue >= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue < b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue < fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(uint256 a, Unsigned memory b) internal pure returns (bool) {\\n        return fromUnscaledUint(a).rawValue < b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue <= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue <= fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(uint256 a, Unsigned memory b) internal pure returns (bool) {\\n        return fromUnscaledUint(a).rawValue <= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice The minimum of `a` and `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the minimum of `a` and `b`.\\n     */\\n    function min(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return a.rawValue < b.rawValue ? a : b;\\n    }\\n\\n    /**\\n     * @notice The maximum of `a` and `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the maximum of `a` and `b`.\\n     */\\n    function max(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return a.rawValue > b.rawValue ? a : b;\\n    }\\n\\n    /**\\n     * @notice Adds two `Unsigned`s, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the sum of `a` and `b`.\\n     */\\n    function add(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.rawValue.add(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Adds an `Unsigned` to an unscaled uint, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return the sum of `a` and `b`.\\n     */\\n    function add(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        return add(a, fromUnscaledUint(b));\\n    }\\n\\n    /**\\n     * @notice Subtracts two `Unsigned`s, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.rawValue.sub(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Subtracts an unscaled uint256 from an `Unsigned`, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        return sub(a, fromUnscaledUint(b));\\n    }\\n\\n    /**\\n     * @notice Subtracts an `Unsigned` from an unscaled uint256, reverting on overflow.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(uint256 a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return sub(fromUnscaledUint(a), b);\\n    }\\n\\n    /**\\n     * @notice Multiplies two `Unsigned`s, reverting on overflow.\\n     * @dev This will \\\"floor\\\" the product.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mul(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        // There are two caveats with this computation:\\n        // 1. Max output for the represented number is ~10^41, otherwise an intermediate value overflows. 10^41 is\\n        // stored internally as a uint256 ~10^59.\\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 1.4 * 2e-18 = 2.8e-18, which\\n        // would round to 3, but this computation produces the result 2.\\n        // No need to use SafeMath because FP_SCALING_FACTOR != 0.\\n        return Unsigned(a.rawValue.mul(b.rawValue) / FP_SCALING_FACTOR);\\n    }\\n\\n    /**\\n     * @notice Multiplies an `Unsigned` and an unscaled uint256, reverting on overflow.\\n     * @dev This will \\\"floor\\\" the product.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mul(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.rawValue.mul(b));\\n    }\\n\\n    /**\\n     * @notice Multiplies two `Unsigned`s and \\\"ceil's\\\" the product, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mulCeil(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        uint256 mulRaw = a.rawValue.mul(b.rawValue);\\n        uint256 mulFloor = mulRaw / FP_SCALING_FACTOR;\\n        uint256 mod = mulRaw.mod(FP_SCALING_FACTOR);\\n        if (mod != 0) {\\n            return Unsigned(mulFloor.add(1));\\n        } else {\\n            return Unsigned(mulFloor);\\n        }\\n    }\\n\\n    /**\\n     * @notice Multiplies an `Unsigned` and an unscaled uint256 and \\\"ceil's\\\" the product, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mulCeil(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        // Since b is an uint, there is no risk of truncation and we can just mul it normally\\n        return Unsigned(a.rawValue.mul(b));\\n    }\\n\\n    /**\\n     * @notice Divides one `Unsigned` by an `Unsigned`, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a FixedPoint numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        // There are two caveats with this computation:\\n        // 1. Max value for the number dividend `a` represents is ~10^41, otherwise an intermediate value overflows.\\n        // 10^41 is stored internally as a uint256 10^59.\\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 2 / 3 = 0.6 repeating, which\\n        // would round to 0.666666666666666667, but this computation produces the result 0.666666666666666666.\\n        return Unsigned(a.rawValue.mul(FP_SCALING_FACTOR).div(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Divides one `Unsigned` by an unscaled uint256, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a FixedPoint numerator.\\n     * @param b a uint256 denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.rawValue.div(b));\\n    }\\n\\n    /**\\n     * @notice Divides one unscaled uint256 by an `Unsigned`, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a uint256 numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(uint256 a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return div(fromUnscaledUint(a), b);\\n    }\\n\\n    /**\\n     * @notice Divides one `Unsigned` by an `Unsigned` and \\\"ceil's\\\" the quotient, reverting on overflow or division by 0.\\n     * @param a a FixedPoint numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function divCeil(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        uint256 aScaled = a.rawValue.mul(FP_SCALING_FACTOR);\\n        uint256 divFloor = aScaled.div(b.rawValue);\\n        uint256 mod = aScaled.mod(b.rawValue);\\n        if (mod != 0) {\\n            return Unsigned(divFloor.add(1));\\n        } else {\\n            return Unsigned(divFloor);\\n        }\\n    }\\n\\n    /**\\n     * @notice Divides one `Unsigned` by an unscaled uint256 and \\\"ceil's\\\" the quotient, reverting on overflow or division by 0.\\n     * @param a a FixedPoint numerator.\\n     * @param b a uint256 denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function divCeil(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        // Because it is possible that a quotient gets truncated, we can't just call \\\"Unsigned(a.rawValue.div(b))\\\"\\n        // similarly to mulCeil with a uint256 as the second parameter. Therefore we need to convert b into an Unsigned.\\n        // This creates the possibility of overflow if b is very large.\\n        return divCeil(a, fromUnscaledUint(b));\\n    }\\n\\n    /**\\n     * @notice Raises an `Unsigned` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\\n     * @dev This will \\\"floor\\\" the result.\\n     * @param a a FixedPoint numerator.\\n     * @param b a uint256 denominator.\\n     * @return output is `a` to the power of `b`.\\n     */\\n    function pow(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory output) {\\n        output = fromUnscaledUint(1);\\n        for (uint256 i = 0; i < b; i = i.add(1)) {\\n            output = mul(output, a);\\n        }\\n    }\\n\\n    // ------------------------------------------------- SIGNED -------------------------------------------------------------\\n    // Supports 18 decimals. E.g., 1e18 represents \\\"1\\\", 5e17 represents \\\"0.5\\\".\\n    // For signed values:\\n    //   This can represent a value up (or down) to +-(2^255 - 1)/10^18 = ~10^58. 10^58 will be stored internally as int256 10^76.\\n    int256 private constant SFP_SCALING_FACTOR = 10**18;\\n\\n    struct Signed {\\n        int256 rawValue;\\n    }\\n\\n    function fromSigned(Signed memory a) internal pure returns (Unsigned memory) {\\n        require(a.rawValue >= 0, \\\"Negative value provided\\\");\\n        return Unsigned(uint256(a.rawValue));\\n    }\\n\\n    function fromUnsigned(Unsigned memory a) internal pure returns (Signed memory) {\\n        require(a.rawValue <= uint256(type(int256).max), \\\"Unsigned too large\\\");\\n        return Signed(int256(a.rawValue));\\n    }\\n\\n    /**\\n     * @notice Constructs a `Signed` from an unscaled int, e.g., `b=5` gets stored internally as `5*(10**18)`.\\n     * @param a int to convert into a FixedPoint.Signed.\\n     * @return the converted FixedPoint.Signed.\\n     */\\n    function fromUnscaledInt(int256 a) internal pure returns (Signed memory) {\\n        return Signed(a.mul(SFP_SCALING_FACTOR));\\n    }\\n\\n    /**\\n     * @notice Whether `a` is equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a int256.\\n     * @return True if equal, or False.\\n     */\\n    function isEqual(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue == fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if equal, or False.\\n     */\\n    function isEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue == b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue > b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue > fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(int256 a, Signed memory b) internal pure returns (bool) {\\n        return fromUnscaledInt(a).rawValue > b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue >= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue >= fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(int256 a, Signed memory b) internal pure returns (bool) {\\n        return fromUnscaledInt(a).rawValue >= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue < b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue < fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(int256 a, Signed memory b) internal pure returns (bool) {\\n        return fromUnscaledInt(a).rawValue < b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue <= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue <= fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(int256 a, Signed memory b) internal pure returns (bool) {\\n        return fromUnscaledInt(a).rawValue <= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice The minimum of `a` and `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the minimum of `a` and `b`.\\n     */\\n    function min(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        return a.rawValue < b.rawValue ? a : b;\\n    }\\n\\n    /**\\n     * @notice The maximum of `a` and `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the maximum of `a` and `b`.\\n     */\\n    function max(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        return a.rawValue > b.rawValue ? a : b;\\n    }\\n\\n    /**\\n     * @notice Adds two `Signed`s, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the sum of `a` and `b`.\\n     */\\n    function add(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        return Signed(a.rawValue.add(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Adds an `Signed` to an unscaled int, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return the sum of `a` and `b`.\\n     */\\n    function add(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        return add(a, fromUnscaledInt(b));\\n    }\\n\\n    /**\\n     * @notice Subtracts two `Signed`s, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        return Signed(a.rawValue.sub(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Subtracts an unscaled int256 from an `Signed`, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        return sub(a, fromUnscaledInt(b));\\n    }\\n\\n    /**\\n     * @notice Subtracts an `Signed` from an unscaled int256, reverting on overflow.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(int256 a, Signed memory b) internal pure returns (Signed memory) {\\n        return sub(fromUnscaledInt(a), b);\\n    }\\n\\n    /**\\n     * @notice Multiplies two `Signed`s, reverting on overflow.\\n     * @dev This will \\\"floor\\\" the product.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mul(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        // There are two caveats with this computation:\\n        // 1. Max output for the represented number is ~10^41, otherwise an intermediate value overflows. 10^41 is\\n        // stored internally as an int256 ~10^59.\\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 1.4 * 2e-18 = 2.8e-18, which\\n        // would round to 3, but this computation produces the result 2.\\n        // No need to use SafeMath because SFP_SCALING_FACTOR != 0.\\n        return Signed(a.rawValue.mul(b.rawValue) / SFP_SCALING_FACTOR);\\n    }\\n\\n    /**\\n     * @notice Multiplies an `Signed` and an unscaled int256, reverting on overflow.\\n     * @dev This will \\\"floor\\\" the product.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mul(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        return Signed(a.rawValue.mul(b));\\n    }\\n\\n    /**\\n     * @notice Multiplies two `Signed`s and \\\"ceil's\\\" the product, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mulAwayFromZero(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        int256 mulRaw = a.rawValue.mul(b.rawValue);\\n        int256 mulTowardsZero = mulRaw / SFP_SCALING_FACTOR;\\n        // Manual mod because SignedSafeMath doesn't support it.\\n        int256 mod = mulRaw % SFP_SCALING_FACTOR;\\n        if (mod != 0) {\\n            bool isResultPositive = isLessThan(a, 0) == isLessThan(b, 0);\\n            int256 valueToAdd = isResultPositive ? int256(1) : int256(-1);\\n            return Signed(mulTowardsZero.add(valueToAdd));\\n        } else {\\n            return Signed(mulTowardsZero);\\n        }\\n    }\\n\\n    /**\\n     * @notice Multiplies an `Signed` and an unscaled int256 and \\\"ceil's\\\" the product, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mulAwayFromZero(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        // Since b is an int, there is no risk of truncation and we can just mul it normally\\n        return Signed(a.rawValue.mul(b));\\n    }\\n\\n    /**\\n     * @notice Divides one `Signed` by an `Signed`, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a FixedPoint numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        // There are two caveats with this computation:\\n        // 1. Max value for the number dividend `a` represents is ~10^41, otherwise an intermediate value overflows.\\n        // 10^41 is stored internally as an int256 10^59.\\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 2 / 3 = 0.6 repeating, which\\n        // would round to 0.666666666666666667, but this computation produces the result 0.666666666666666666.\\n        return Signed(a.rawValue.mul(SFP_SCALING_FACTOR).div(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Divides one `Signed` by an unscaled int256, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a FixedPoint numerator.\\n     * @param b an int256 denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        return Signed(a.rawValue.div(b));\\n    }\\n\\n    /**\\n     * @notice Divides one unscaled int256 by an `Signed`, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a an int256 numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(int256 a, Signed memory b) internal pure returns (Signed memory) {\\n        return div(fromUnscaledInt(a), b);\\n    }\\n\\n    /**\\n     * @notice Divides one `Signed` by an `Signed` and \\\"ceil's\\\" the quotient, reverting on overflow or division by 0.\\n     * @param a a FixedPoint numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function divAwayFromZero(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        int256 aScaled = a.rawValue.mul(SFP_SCALING_FACTOR);\\n        int256 divTowardsZero = aScaled.div(b.rawValue);\\n        // Manual mod because SignedSafeMath doesn't support it.\\n        int256 mod = aScaled % b.rawValue;\\n        if (mod != 0) {\\n            bool isResultPositive = isLessThan(a, 0) == isLessThan(b, 0);\\n            int256 valueToAdd = isResultPositive ? int256(1) : int256(-1);\\n            return Signed(divTowardsZero.add(valueToAdd));\\n        } else {\\n            return Signed(divTowardsZero);\\n        }\\n    }\\n\\n    /**\\n     * @notice Divides one `Signed` by an unscaled int256 and \\\"ceil's\\\" the quotient, reverting on overflow or division by 0.\\n     * @param a a FixedPoint numerator.\\n     * @param b an int256 denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function divAwayFromZero(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        // Because it is possible that a quotient gets truncated, we can't just call \\\"Signed(a.rawValue.div(b))\\\"\\n        // similarly to mulCeil with an int256 as the second parameter. Therefore we need to convert b into an Signed.\\n        // This creates the possibility of overflow if b is very large.\\n        return divAwayFromZero(a, fromUnscaledInt(b));\\n    }\\n\\n    /**\\n     * @notice Raises an `Signed` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\\n     * @dev This will \\\"floor\\\" the result.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a uint256 (negative exponents are not allowed).\\n     * @return output is `a` to the power of `b`.\\n     */\\n    function pow(Signed memory a, uint256 b) internal pure returns (Signed memory output) {\\n        output = fromUnscaledInt(1);\\n        for (uint256 i = 0; i < b; i = i.add(1)) {\\n            output = mul(output, a);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x996b97cc4fa5da4064e3aee500edc6972485d59a9334ceec81155e2c2f484dae\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/common/implementation/Lockable.sol": {
                "Lockable": {
                    "abi": [
                        {
                            "inputs": [],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "title": "A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_5389": {
                                    "entryPoint": null,
                                    "id": 5389,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "6080604052348015600f57600080fd5b506000805460ff19166001179055603f80602a6000396000f3fe6080604052600080fdfea26469706673582212209d0bbd8fbc4f79f9a639cfae4bfc97ca4a149a6e2ad51491d623bdf784e2e66364736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3F DUP1 PUSH1 0x2A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 SIGNEXTEND 0xBD DUP16 0xBC 0x4F PUSH26 0xF9A639CFAE4BFC97CA4A149A6E2AD51491D623BDF784E2E66364 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "405:2280:28:-:0;;;460:439;;;;;;;;;-1:-1:-1;874:11:28;:18;;-1:-1:-1;;874:18:28;888:4;874:18;;;405:2280;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600080fdfea26469706673582212209d0bbd8fbc4f79f9a639cfae4bfc97ca4a149a6e2ad51491d623bdf784e2e66364736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 SIGNEXTEND 0xBD DUP16 0xBC 0x4F PUSH26 0xF9A639CFAE4BFC97CA4A149A6E2AD51491D623BDF784E2E66364 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "405:2280:28:-:0;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "12600",
                                "executionCost": "24290",
                                "totalCost": "36890"
                            },
                            "internal": {
                                "_postEntranceReset()": "infinite",
                                "_preEntranceCheck()": "infinite",
                                "_preEntranceSet()": "infinite"
                            }
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/Lockable.sol\":\"Lockable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 5381,
                                "contract": "contracts/common/implementation/Lockable.sol:Lockable",
                                "label": "_notEntered",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_bool"
                            }
                        ],
                        "types": {
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/common/implementation/MultiCaller.sol": {
                "MultiCaller": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "data",
                                    "type": "bytes[]"
                                }
                            ],
                            "name": "multicall",
                            "outputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "results",
                                    "type": "bytes[]"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "title": "MultiCaller",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b506105ef806100206000396000f3fe60806040526004361061001e5760003560e01c8063ac9650d814610023575b600080fd5b61003661003136600461022b565b61004c565b604051610043919061031a565b60405180910390f35b606034156100bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c7565000000000060448201526064015b60405180910390fd5b8167ffffffffffffffff8111156100d4576100d461039a565b60405190808252806020026020018201604052801561010757816020015b60608152602001906001900390816100f25790505b50905060005b82811015610224576000803086868581811061012b5761012b6103c9565b905060200281019061013d91906103f8565b60405161014b929190610464565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b5091509150816101f1576044815110156101a457600080fd5b600481019050808060200190518101906101be9190610474565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b2919061053f565b80848481518110610204576102046103c9565b60200260200101819052505050808061021c90610559565b91505061010d565b5092915050565b6000806020838503121561023e57600080fd5b823567ffffffffffffffff8082111561025657600080fd5b818501915085601f83011261026a57600080fd5b81358181111561027957600080fd5b8660208260051b850101111561028e57600080fd5b60209290920196919550909350505050565b60005b838110156102bb5781810151838201526020016102a3565b838111156102ca576000848401525b50505050565b600081518084526102e88160208601602086016102a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561038d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261037b8583516102d0565b94509285019290850190600101610341565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261042d57600080fd5b83018035915067ffffffffffffffff82111561044857600080fd5b60200191503681900382131561045d57600080fd5b9250929050565b8183823760009101908152919050565b60006020828403121561048657600080fd5b815167ffffffffffffffff8082111561049e57600080fd5b818401915084601f8301126104b257600080fd5b8151818111156104c4576104c461039a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561050a5761050a61039a565b8160405282815287602084870101111561052357600080fd5b6105348360208301602088016102a0565b979650505050505050565b60208152600061055260208301846102d0565b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156105b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212204119cc58936aedd2b2b845ecdf6b682810e81c0ae8ad9011a7352b4184abdfeb64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5EF DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x22B JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43 SWAP2 SWAP1 PUSH2 0x31A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0xBB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD4 JUMPI PUSH2 0xD4 PUSH2 0x39A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x107 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xF2 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x12B JUMPI PUSH2 0x12B PUSH2 0x3C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x13D SWAP2 SWAP1 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14B SWAP3 SWAP2 SWAP1 PUSH2 0x464 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1F1 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB2 SWAP2 SWAP1 PUSH2 0x53F JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x204 JUMPI PUSH2 0x204 PUSH2 0x3C9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x21C SWAP1 PUSH2 0x559 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10D JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2E8 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2A0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x38D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x37B DUP6 DUP4 MLOAD PUSH2 0x2D0 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x341 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH2 0x4C4 PUSH2 0x39A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x50A JUMPI PUSH2 0x50A PUSH2 0x39A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x534 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2A0 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x552 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x5B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE NOT 0xCC PC SWAP4 PUSH11 0xEDD2B2B845ECDF6B682810 0xE8 SHR EXP 0xE8 0xAD SWAP1 GT 0xA7 CALLDATALOAD 0x2B COINBASE DUP5 0xAB 0xDF 0xEB PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "501:739:29:-:0;;;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@multicall_5523": {
                                    "entryPoint": 76,
                                    "id": 5523,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                                    "entryPoint": 555,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                                    "entryPoint": 1140,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_bytes": {
                                    "entryPoint": 720,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 1124,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 794,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 1343,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "access_calldata_tail_t_bytes_calldata_ptr": {
                                    "entryPoint": 1016,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 672,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "increment_t_uint256": {
                                    "entryPoint": 1369,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x32": {
                                    "entryPoint": 969,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 922,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:5211:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "130:510:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "176:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "185:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "188:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "178:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "178:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "178:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "151:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "160:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "147:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "147:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "172:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "143:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "143:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "140:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "201:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "228:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "215:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "215:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "205:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "247:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "257:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "251:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "302:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "311:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "314:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "304:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "304:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "304:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "290:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "298:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "287:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "287:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "284:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "327:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "341:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "352:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "337:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "337:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "331:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "407:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "416:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "419:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "409:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "409:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "409:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "386:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "390:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "382:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "382:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "397:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "378:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "378:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "371:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "371:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "368:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "432:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "459:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "446:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "446:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "436:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "489:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "498:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "501:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "491:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "491:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "491:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "477:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "485:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "474:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "474:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "471:34:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "563:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "572:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "575:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "565:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "565:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "565:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "528:2:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "536:1:66",
                                                                                                "type": "",
                                                                                                "value": "5"
                                                                                            },
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "539:6:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "532:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "532:14:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "524:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "524:23:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "549:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "520:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "520:32:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "554:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "517:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "517:45:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "514:65:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "588:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "602:2:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "606:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "598:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "598:11:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "588:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "618:16:66",
                                                            "value": {
                                                                "name": "length",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "628:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "618:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "88:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "99:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "111:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "119:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:626:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "698:205:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "708:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "717:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "712:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "777:63:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "802:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "807:1:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "798:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "798:11:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "821:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "826:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "817:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "817:11:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "811:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "811:18:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "791:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "791:39:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "791:39:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "738:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "741:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "735:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "735:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "749:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "751:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "760:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "763:2:66",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "756:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "756:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "751:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "731:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "727:113:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "866:31:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "879:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "884:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "875:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "875:16:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "893:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "868:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "868:27:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "868:27:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "855:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "858:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "852:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "852:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "849:48:66"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "676:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "681:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "686:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "645:258:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "957:267:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "967:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "987:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "981:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "981:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "971:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1009:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1014:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1002:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1002:19:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1002:19:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1056:5:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1063:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1052:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1052:16:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1074:3:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1079:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1070:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1070:14:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1086:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1030:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1030:63:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1030:63:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1102:116:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1117:3:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1130:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1138:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1126:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1126:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1143:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1122:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1122:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1113:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1113:98:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1213:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1109:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1109:109:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1102:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_bytes",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "934:5:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "941:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "949:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "908:316:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1398:690:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1408:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1418:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1412:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1429:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1447:9:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1458:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1443:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1443:18:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1433:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1477:9:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1488:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1470:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1470:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1470:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1500:17:66",
                                                            "value": {
                                                                "name": "tail_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1511:6:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1504:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1526:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1546:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1540:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1540:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1530:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "tail_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1569:6:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1577:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1562:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1562:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1562:22:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1593:25:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1604:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1615:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1600:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1600:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1593:3:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1627:53:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1649:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1664:1:66",
                                                                                        "type": "",
                                                                                        "value": "5"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1667:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1660:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1660:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1645:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1645:30:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1677:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1641:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1641:39:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1631:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1689:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1707:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1715:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1703:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1703:15:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1693:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1727:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1736:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1731:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1795:264:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1816:3:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "tail_2",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1829:6:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1837:9:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "sub",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1825:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "1825:22:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "1849:66:66",
                                                                                            "type": "",
                                                                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1821:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1821:95:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1809:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1809:108:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1809:108:66"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1930:49:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "srcPtr",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1963:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1957:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1957:13:66"
                                                                                },
                                                                                {
                                                                                    "name": "tail_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1972:6:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "abi_encode_bytes",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1940:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1940:39:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "tail_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1930:6:66"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1992:25:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "srcPtr",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2006:6:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2014:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2002:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2002:15:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "srcPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1992:6:66"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2030:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2041:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2046:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2037:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2037:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2030:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1757:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1760:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1754:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1754:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1768:18:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1770:14:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1779:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1782:1:66",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1775:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1775:9:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1770:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1750:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "1746:313:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2068:14:66",
                                                            "value": {
                                                                "name": "tail_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2076:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2068:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1367:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1378:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1389:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1229:859:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2267:177:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2284:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2295:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2277:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2277:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2277:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2318:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2329:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2314:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2314:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2334:2:66",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2307:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2307:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2307:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2357:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2368:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2353:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2353:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f6e6c79206d756c746963616c6c207769746820302076616c7565",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2373:29:66",
                                                                        "type": "",
                                                                        "value": "Only multicall with 0 value"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2346:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2346:57:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2346:57:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2412:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2424:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2435:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2420:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2420:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2412:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2244:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2258:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2093:351:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2481:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2498:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2501:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2491:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2491:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2491:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2595:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2598:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2588:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2588:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2588:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2619:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2622:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2612:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2612:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2612:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "2449:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2670:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2687:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2690:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2680:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2680:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2680:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2784:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2787:4:66",
                                                                        "type": "",
                                                                        "value": "0x32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2777:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2777:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2777:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2808:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2811:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2801:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2801:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2801:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x32",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "2638:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2921:486:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2931:51:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "ptr_to_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2970:11:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2957:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2957:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "rel_offset_of_tail",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2935:18:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3130:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3139:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3142:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3132:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3132:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3132:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "rel_offset_of_tail",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3005:18:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [],
                                                                                                "functionName": {
                                                                                                    "name": "calldatasize",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3033:12:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "3033:14:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "base_ref",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3049:8:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3029:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3029:29:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3060:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3025:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3025:102:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3001:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3001:127:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2994:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2994:135:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2991:155:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3155:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "base_ref",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3173:8:66"
                                                                    },
                                                                    {
                                                                        "name": "rel_offset_of_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3183:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3169:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3169:33:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "addr_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3159:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3211:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3234:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3221:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3221:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3211:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3284:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3293:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3296:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3286:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3286:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3286:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3256:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3264:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3253:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3253:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3250:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3309:25:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3321:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3329:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3317:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3317:17:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "addr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3309:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3385:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3394:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3397:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3387:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3387:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3387:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3350:4:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [],
                                                                                "functionName": {
                                                                                    "name": "calldatasize",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3360:12:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3360:14:66"
                                                                            },
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3376:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3356:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3356:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sgt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3346:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3346:38:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3343:58:66"
                                                        }
                                                    ]
                                                },
                                                "name": "access_calldata_tail_t_bytes_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "base_ref",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2878:8:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "ptr_to_tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2888:11:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "addr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2904:4:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2910:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2827:580:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3559:124:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3582:3:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3587:6:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3595:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3569:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3569:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3569:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3611:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3625:3:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3630:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3621:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3621:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3615:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3653:2:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3657:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3646:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3646:13:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3646:13:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3668:9:66",
                                                            "value": {
                                                                "name": "_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3675:2:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3668:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3527:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3532:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3540:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3551:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3412:271:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3779:852:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3825:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3834:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3837:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3827:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3827:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3827:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3800:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3809:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3796:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3796:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3821:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3792:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3792:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3789:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3850:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3870:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3864:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3864:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3854:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3889:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3899:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3893:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3944:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3953:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3956:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3946:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3946:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3946:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3932:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3940:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3929:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3929:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3926:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3969:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3983:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3994:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3979:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3979:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3973:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4049:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4058:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4061:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4051:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4051:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4051:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4028:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4032:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4024:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4024:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4039:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4020:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4020:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4013:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4013:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4010:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4074:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4090:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4084:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4084:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4078:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4116:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4118:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4118:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4118:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4108:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4112:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4105:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4105:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4102:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4147:76:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4157:66:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4151:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4232:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4252:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4246:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4246:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4236:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4264:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4286:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "4310:2:66"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "4314:4:66",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "4306:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "4306:13:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4321:2:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4302:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4302:22:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4326:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4298:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4298:31:66"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4331:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4294:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4294:40:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4282:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4282:53:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4268:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4394:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4396:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4396:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4396:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4353:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4365:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4350:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4350:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4373:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4385:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4370:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4370:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4347:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4347:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4344:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4432:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4436:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4425:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4425:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4425:22:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4463:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4471:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4456:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4456:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4456:18:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4520:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4529:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4532:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4522:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4522:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4522:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4497:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4501:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4493:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4493:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4506:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4489:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4489:20:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4511:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4486:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4486:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4483:53:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4571:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4575:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4567:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4567:11:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4584:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4592:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4580:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4580:15:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4597:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4545:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4545:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4545:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4609:16:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4619:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4609:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3745:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3756:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3768:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3688:943:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4757:98:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4774:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4785:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4767:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4767:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4767:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4797:52:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4822:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4834:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4845:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4830:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4830:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4805:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4805:44:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4797:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4726:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4737:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4748:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4636:219:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4907:302:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5006:168:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5027:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5030:77:66",
                                                                                    "type": "",
                                                                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5020:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5020:88:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5020:88:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5128:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5131:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x11"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5121:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5121:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5121:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5156:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5159:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5149:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5149:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5149:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4923:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4930:66:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4920:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4920:77:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4917:257:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5183:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5194:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5201:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5190:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5190:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5183:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4889:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4899:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4860:349:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Only multicall with 0 value\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "60806040526004361061001e5760003560e01c8063ac9650d814610023575b600080fd5b61003661003136600461022b565b61004c565b604051610043919061031a565b60405180910390f35b606034156100bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c7565000000000060448201526064015b60405180910390fd5b8167ffffffffffffffff8111156100d4576100d461039a565b60405190808252806020026020018201604052801561010757816020015b60608152602001906001900390816100f25790505b50905060005b82811015610224576000803086868581811061012b5761012b6103c9565b905060200281019061013d91906103f8565b60405161014b929190610464565b600060405180830381855af49150503d8060008114610186576040519150601f19603f3d011682016040523d82523d6000602084013e61018b565b606091505b5091509150816101f1576044815110156101a457600080fd5b600481019050808060200190518101906101be9190610474565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100b2919061053f565b80848481518110610204576102046103c9565b60200260200101819052505050808061021c90610559565b91505061010d565b5092915050565b6000806020838503121561023e57600080fd5b823567ffffffffffffffff8082111561025657600080fd5b818501915085601f83011261026a57600080fd5b81358181111561027957600080fd5b8660208260051b850101111561028e57600080fd5b60209290920196919550909350505050565b60005b838110156102bb5781810151838201526020016102a3565b838111156102ca576000848401525b50505050565b600081518084526102e88160208601602086016102a0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561038d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261037b8583516102d0565b94509285019290850190600101610341565b5092979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261042d57600080fd5b83018035915067ffffffffffffffff82111561044857600080fd5b60200191503681900382131561045d57600080fd5b9250929050565b8183823760009101908152919050565b60006020828403121561048657600080fd5b815167ffffffffffffffff8082111561049e57600080fd5b818401915084601f8301126104b257600080fd5b8151818111156104c4576104c461039a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561050a5761050a61039a565b8160405282815287602084870101111561052357600080fd5b6105348360208301602088016102a0565b979650505050505050565b60208152600061055260208301846102d0565b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156105b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212204119cc58936aedd2b2b845ecdf6b682810e81c0ae8ad9011a7352b4184abdfeb64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x22B JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43 SWAP2 SWAP1 PUSH2 0x31A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0xBB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD4 JUMPI PUSH2 0xD4 PUSH2 0x39A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x107 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xF2 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x224 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x12B JUMPI PUSH2 0x12B PUSH2 0x3C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x13D SWAP2 SWAP1 PUSH2 0x3F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14B SWAP3 SWAP2 SWAP1 PUSH2 0x464 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x18B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1F1 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BE SWAP2 SWAP1 PUSH2 0x474 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB2 SWAP2 SWAP1 PUSH2 0x53F JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x204 JUMPI PUSH2 0x204 PUSH2 0x3C9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x21C SWAP1 PUSH2 0x559 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x10D JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x256 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x26A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2BB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2A3 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2E8 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2A0 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x38D JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x37B DUP6 DUP4 MLOAD PUSH2 0x2D0 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x341 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x49E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH2 0x4C4 PUSH2 0x39A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x50A JUMPI PUSH2 0x50A PUSH2 0x39A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x534 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2A0 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x552 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x5B2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE NOT 0xCC PC SWAP4 PUSH11 0xEDD2B2B845ECDF6B682810 0xE8 SHR EXP 0xE8 0xAD SWAP1 GT 0xA7 CALLDATALOAD 0x2B COINBASE DUP5 0xAB 0xDF 0xEB PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "501:739:29:-:0;;;;;;;;;;;;;;;;;;;;;528:710;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;596:22;638:9;:14;630:54;;;;;;;2295:2:66;630:54:29;;;2277:21:66;2334:2;2314:18;;;2307:30;2373:29;2353:18;;;2346:57;2420:18;;630:54:29;;;;;;;;;716:4;704:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:34;;743:9;738:494;758:15;;;738:494;;;795:12;;840:4;859;;864:1;859:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;832:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;794:73;;;;887:7;882:306;;1014:2;998:6;:13;:18;994:32;;;1018:8;;;994:32;1097:4;1089:6;1085:17;1075:27;;1155:6;1144:28;;;;;;;;;;;;:::i;:::-;1137:36;;;;;;;;;;;:::i;882:306::-;1215:6;1202:7;1210:1;1202:10;;;;;;;;:::i;:::-;;;;;;:19;;;;780:452;;775:3;;;;;:::i;:::-;;;;738:494;;;;528:710;;;;:::o;14:626:66:-;111:6;119;172:2;160:9;151:7;147:23;143:32;140:52;;;188:1;185;178:12;140:52;228:9;215:23;257:18;298:2;290:6;287:14;284:34;;;314:1;311;304:12;284:34;352:6;341:9;337:22;327:32;;397:7;390:4;386:2;382:13;378:27;368:55;;419:1;416;409:12;368:55;459:2;446:16;485:2;477:6;474:14;471:34;;;501:1;498;491:12;471:34;554:7;549:2;539:6;536:1;532:14;528:2;524:23;520:32;517:45;514:65;;;575:1;572;565:12;514:65;606:2;598:11;;;;;628:6;;-1:-1:-1;14:626:66;;-1:-1:-1;;;;14:626:66:o;645:258::-;717:1;727:113;741:6;738:1;735:13;727:113;;;817:11;;;811:18;798:11;;;791:39;763:2;756:10;727:113;;;858:6;855:1;852:13;849:48;;;893:1;884:6;879:3;875:16;868:27;849:48;;645:258;;;:::o;908:316::-;949:3;987:5;981:12;1014:6;1009:3;1002:19;1030:63;1086:6;1079:4;1074:3;1070:14;1063:4;1056:5;1052:16;1030:63;:::i;:::-;1138:2;1126:15;1143:66;1122:88;1113:98;;;;1213:4;1109:109;;908:316;-1:-1:-1;;908:316:66:o;1229:859::-;1389:4;1418:2;1458;1447:9;1443:18;1488:2;1477:9;1470:21;1511:6;1546;1540:13;1577:6;1569;1562:22;1615:2;1604:9;1600:18;1593:25;;1677:2;1667:6;1664:1;1660:14;1649:9;1645:30;1641:39;1627:53;;1715:2;1707:6;1703:15;1736:1;1746:313;1760:6;1757:1;1754:13;1746:313;;;1849:66;1837:9;1829:6;1825:22;1821:95;1816:3;1809:108;1940:39;1972:6;1963;1957:13;1940:39;:::i;:::-;1930:49;-1:-1:-1;2037:12:66;;;;2002:15;;;;1782:1;1775:9;1746:313;;;-1:-1:-1;2076:6:66;;1229:859;-1:-1:-1;;;;;;;1229:859:66:o;2449:184::-;2501:77;2498:1;2491:88;2598:4;2595:1;2588:15;2622:4;2619:1;2612:15;2638:184;2690:77;2687:1;2680:88;2787:4;2784:1;2777:15;2811:4;2808:1;2801:15;2827:580;2904:4;2910:6;2970:11;2957:25;3060:66;3049:8;3033:14;3029:29;3025:102;3005:18;3001:127;2991:155;;3142:1;3139;3132:12;2991:155;3169:33;;3221:20;;;-1:-1:-1;3264:18:66;3253:30;;3250:50;;;3296:1;3293;3286:12;3250:50;3329:4;3317:17;;-1:-1:-1;3360:14:66;3356:27;;;3346:38;;3343:58;;;3397:1;3394;3387:12;3343:58;2827:580;;;;;:::o;3412:271::-;3595:6;3587;3582:3;3569:33;3551:3;3621:16;;3646:13;;;3621:16;3412:271;-1:-1:-1;3412:271:66:o;3688:943::-;3768:6;3821:2;3809:9;3800:7;3796:23;3792:32;3789:52;;;3837:1;3834;3827:12;3789:52;3870:9;3864:16;3899:18;3940:2;3932:6;3929:14;3926:34;;;3956:1;3953;3946:12;3926:34;3994:6;3983:9;3979:22;3969:32;;4039:7;4032:4;4028:2;4024:13;4020:27;4010:55;;4061:1;4058;4051:12;4010:55;4090:2;4084:9;4112:2;4108;4105:10;4102:36;;;4118:18;;:::i;:::-;4252:2;4246:9;4314:4;4306:13;;4157:66;4302:22;;;4326:2;4298:31;4294:40;4282:53;;;4350:18;;;4370:22;;;4347:46;4344:72;;;4396:18;;:::i;:::-;4436:10;4432:2;4425:22;4471:2;4463:6;4456:18;4511:7;4506:2;4501;4497;4493:11;4489:20;4486:33;4483:53;;;4532:1;4529;4522:12;4483:53;4545:55;4597:2;4592;4584:6;4580:15;4575:2;4571;4567:11;4545:55;:::i;:::-;4619:6;3688:943;-1:-1:-1;;;;;;;3688:943:66:o;4636:219::-;4785:2;4774:9;4767:21;4748:4;4805:44;4845:2;4834:9;4830:18;4822:6;4805:44;:::i;:::-;4797:52;4636:219;-1:-1:-1;;;4636:219:66:o;4860:349::-;4899:3;4930:66;4923:5;4920:77;4917:257;;;5030:77;5027:1;5020:88;5131:4;5128:1;5121:15;5159:4;5156:1;5149:15;4917:257;-1:-1:-1;5201:1:66;5190:13;;4860:349::o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "303800",
                                "executionCost": "343",
                                "totalCost": "304143"
                            },
                            "external": {
                                "multicall(bytes[])": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "multicall(bytes[])": "ac9650d8"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"MultiCaller\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Enables calling multiple methods in a single call to the contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/MultiCaller.sol\":\"MultiCaller\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/MultiCaller.sol\":{\"content\":\"// This contract is taken from Uniswaps's multi call implementation (https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol)\\n// and was modified to be solidity 0.8 compatible. Additionally, the method was restricted to only work with msg.value\\n// set to 0 to avoid any nasty attack vectors on function calls that use value sent with deposits.\\npragma solidity ^0.8.0;\\n\\n/// @title MultiCaller\\n/// @notice Enables calling multiple methods in a single call to the contract\\ncontract MultiCaller {\\n    function multicall(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        require(msg.value == 0, \\\"Only multicall with 0 value\\\");\\n        results = new bytes[](data.length);\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x31f18055b14fd9eeb459c6d6a88d1a60921bf3755031f6db4b709c3e01d078f7\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "notice": "Enables calling multiple methods in a single call to the contract",
                        "version": 1
                    }
                }
            },
            "contracts/common/implementation/Testable.sol": {
                "Testable": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "timerAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "params": {
                                    "_timerAddress": "Contract that stores the current time in a testing environment. Must be set to 0x0 for production environments that use live time."
                                }
                            },
                            "getCurrentTime()": {
                                "returns": {
                                    "_0": "uint for the current Testable timestamp."
                                }
                            },
                            "setCurrentTime(uint256)": {
                                "details": "Will revert if not running in test mode.",
                                "params": {
                                    "time": "timestamp to set current Testable time to."
                                }
                            }
                        },
                        "title": "Base class that provides time overrides, but only if being run in test mode.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "getCurrentTime()": "29cb924d",
                            "setCurrentTime(uint256)": "22f8e566",
                            "timerAddress()": "1c39c38d"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_timerAddress\":\"Contract that stores the current time in a testing environment. Must be set to 0x0 for production environments that use live time.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current Testable timestamp.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set current Testable time to.\"}}},\"title\":\"Base class that provides time overrides, but only if being run in test mode.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the Testable contract. Called by child contracts.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/Testable.sol\":\"Testable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/Testable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Timer.sol\\\";\\n\\n/**\\n * @title Base class that provides time overrides, but only if being run in test mode.\\n */\\nabstract contract Testable {\\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\\n    // Note: this variable should be set on construction and never modified.\\n    address public timerAddress;\\n\\n    /**\\n     * @notice Constructs the Testable contract. Called by child contracts.\\n     * @param _timerAddress Contract that stores the current time in a testing environment.\\n     * Must be set to 0x0 for production environments that use live time.\\n     */\\n    constructor(address _timerAddress) {\\n        timerAddress = _timerAddress;\\n    }\\n\\n    /**\\n     * @notice Reverts if not running in test mode.\\n     */\\n    modifier onlyIfTest {\\n        require(timerAddress != address(0x0));\\n        _;\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set current Testable time to.\\n     */\\n    function setCurrentTime(uint256 time) external onlyIfTest {\\n        Timer(timerAddress).setCurrentTime(time);\\n    }\\n\\n    /**\\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\\n     * Otherwise, it will return the block timestamp.\\n     * @return uint for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view virtual returns (uint256) {\\n        if (timerAddress != address(0x0)) {\\n            return Timer(timerAddress).getCurrentTime();\\n        } else {\\n            return block.timestamp; // solhint-disable-line not-rely-on-time\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 5530,
                                "contract": "contracts/common/implementation/Testable.sol:Testable",
                                "label": "timerAddress",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "constructor": {
                                "notice": "Constructs the Testable contract. Called by child contracts."
                            },
                            "getCurrentTime()": {
                                "notice": "Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp."
                            },
                            "setCurrentTime(uint256)": {
                                "notice": "Sets the current time."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/common/implementation/Timer.sol": {
                "Timer": {
                    "abi": [
                        {
                            "inputs": [],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "getCurrentTime()": {
                                "returns": {
                                    "_0": "uint256 for the current Testable timestamp."
                                }
                            },
                            "setCurrentTime(uint256)": {
                                "details": "Will revert if not running in test mode.",
                                "params": {
                                    "time": "timestamp to set `currentTime` to."
                                }
                            }
                        },
                        "title": "Universal store of current contract time for testing environments.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_5611": {
                                    "entryPoint": null,
                                    "id": 5611,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b504260005560ac806100236000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806322f8e56614603757806329cb924d146049575b600080fd5b60476042366004605e565b600055565b005b60005460405190815260200160405180910390f35b600060208284031215606f57600080fd5b503591905056fea26469706673582212201f7ddaa0ea9d09dce5889c718fa13fc84ea07ab698f47d19f1f0f872dfbd21c364736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP TIMESTAMP PUSH1 0x0 SSTORE PUSH1 0xAC DUP1 PUSH2 0x23 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x22F8E566 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH1 0x49 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x5E JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F PUSH30 0xDAA0EA9D09DCE5889C718FA13FC84EA07AB698F47D19F1F0F872DFBD21C3 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "152:642:31:-:0;;;207:101;;;;;;;;;-1:-1:-1;245:15:31;231:11;:29;152:642;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@getCurrentTime_5631": {
                                    "entryPoint": null,
                                    "id": 5631,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@setCurrentTime_5622": {
                                    "entryPoint": null,
                                    "id": 5622,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 94,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:378:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "84:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "130:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "139:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "142:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "132:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "132:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "132:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "105:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "114:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "101:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "101:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "126:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "97:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "97:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "94:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "155:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "178:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "165:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "165:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "155:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "50:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "61:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "73:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "300:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "310:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "322:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "333:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "318:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "318:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "310:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "352:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "363:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "345:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "345:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "345:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "269:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "280:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "291:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "199:177:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052348015600f57600080fd5b506004361060325760003560e01c806322f8e56614603757806329cb924d146049575b600080fd5b60476042366004605e565b600055565b005b60005460405190815260200160405180910390f35b600060208284031215606f57600080fd5b503591905056fea26469706673582212201f7ddaa0ea9d09dce5889c718fa13fc84ea07ab698f47d19f1f0f872dfbd21c364736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x22F8E566 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH1 0x49 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x5E JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F PUSH30 0xDAA0EA9D09DCE5889C718FA13FC84EA07AB698F47D19F1F0F872DFBD21C3 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "152:642:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:82;;;;;;:::i;:::-;532:11;:18;475:82;;;701:91;748:7;774:11;701:91;;345:25:66;;;333:2;318:18;701:91:31;;;;;;;14:180:66;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:66;;14:180;-1:-1:-1;14:180:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "34400",
                                "executionCost": "22192",
                                "totalCost": "56592"
                            },
                            "external": {
                                "getCurrentTime()": "2268",
                                "setCurrentTime(uint256)": "22290"
                            }
                        },
                        "methodIdentifiers": {
                            "getCurrentTime()": "29cb924d",
                            "setCurrentTime(uint256)": "22f8e566"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint256 for the current Testable timestamp.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set `currentTime` to.\"}}},\"title\":\"Universal store of current contract time for testing environments.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCurrentTime()\":{\"notice\":\"Gets the currentTime variable set in the Timer.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/Timer.sol\":\"Timer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 5602,
                                "contract": "contracts/common/implementation/Timer.sol:Timer",
                                "label": "currentTime",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_uint256"
                            }
                        ],
                        "types": {
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "getCurrentTime()": {
                                "notice": "Gets the currentTime variable set in the Timer."
                            },
                            "setCurrentTime(uint256)": {
                                "notice": "Sets the current time."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/common/interfaces/AddressWhitelistInterface.sol": {
                "AddressWhitelistInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newElement",
                                    "type": "address"
                                }
                            ],
                            "name": "addToWhitelist",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getWhitelist",
                            "outputs": [
                                {
                                    "internalType": "address[]",
                                    "name": "",
                                    "type": "address[]"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newElement",
                                    "type": "address"
                                }
                            ],
                            "name": "isOnWhitelist",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newElement",
                                    "type": "address"
                                }
                            ],
                            "name": "removeFromWhitelist",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "addToWhitelist(address)": "e43252d7",
                            "getWhitelist()": "d01f63f5",
                            "isOnWhitelist(address)": "3a3ab672",
                            "removeFromWhitelist(address)": "8ab1d681"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newElement\",\"type\":\"address\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWhitelist\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newElement\",\"type\":\"address\"}],\"name\":\"isOnWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newElement\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/interfaces/AddressWhitelistInterface.sol\":\"AddressWhitelistInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/common/interfaces/AddressWhitelistInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface AddressWhitelistInterface {\\n    function addToWhitelist(address newElement) external;\\n\\n    function removeFromWhitelist(address newElement) external;\\n\\n    function isOnWhitelist(address newElement) external view returns (bool);\\n\\n    function getWhitelist() external view returns (address[] memory);\\n}\\n\",\"keccak256\":\"0x22fb8588dff1d5cff76a28111d6c9b190765d99facd93c8ff3b54771f245c0d8\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/external/avm/AVM_CrossDomainEnabled.sol": {
                "AVM_CrossDomainEnabled": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "from",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "to",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "id",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "SentCrossDomainMessage",
                            "type": "event"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"SentCrossDomainMessage\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/avm/AVM_CrossDomainEnabled.sol\":\"AVM_CrossDomainEnabled\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/avm/AVM_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l2/L2CrossDomainEnabled.sol\\n// with a change to the solidity version.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./interfaces/ArbSys.sol\\\";\\n\\nabstract contract AVM_CrossDomainEnabled {\\n    event SentCrossDomainMessage(address indexed from, address indexed to, uint256 indexed id, bytes data);\\n\\n    modifier onlyFromCrossDomainAccount(address l1Counterpart) {\\n        require(msg.sender == applyL1ToL2Alias(l1Counterpart), \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n\\n    uint160 constant offset = uint160(0x1111000000000000000000000000000000001111);\\n\\n    // l1 addresses are transformed during l1->l2 calls. See https://developer.offchainlabs.com/docs/l1_l2_messages#address-aliasing for more information.\\n    function applyL1ToL2Alias(address l1Address) internal pure returns (address l2Address) {\\n        l2Address = address(uint160(l1Address) + offset);\\n    }\\n\\n    // Sends a message to L1 via the ArbSys contract. See https://developer.offchainlabs.com/docs/arbsys.\\n    // After the Arbitrum chain advances some set amount of time, ArbOS gathers all outgoing messages, Merklizes them,\\n    // and publishes the root as an OutboxEntry in the chain's outbox. Note that this happens \\\"automatically\\\";\\n    // i.e., it requires no additional action from the user. After the Outbox entry is published on the L1 chain,\\n    // the user (or anybody) can compute the Merkle proof of inclusion of their outgoing message. Anytime after the\\n    // dispute window passes (~7 days), any user can execute the L1 message by calling Outbox.executeTransaction;\\n    // if it reverts, it can be re-executed any number of times and with no upper time-bound.\\n    // To read more about the L2 --> L1 lifecycle, see: https://developer.offchainlabs.com/docs/l1_l2_messages#explanation.\\n    function sendCrossDomainMessage(\\n        address user,\\n        address to,\\n        bytes memory data\\n    ) internal returns (uint256) {\\n        // note: this method doesn't support sending ether to L1 together with a call\\n        uint256 id = ArbSys(address(100)).sendTxToL1(to, data);\\n\\n        emit SentCrossDomainMessage(user, to, id, data);\\n\\n        return id;\\n    }\\n}\\n\",\"keccak256\":\"0xd33f85bfbe0d9c941e9cba14a8952e4a5d97a199330501f1c95549e08b822b88\"},\"contracts/external/avm/interfaces/ArbSys.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/54a2109a97c5b1504824c6317d358e2d2733b5a3/contracts/arbitrum/ArbSys.sol\\n// with changes only to the solidity version and comments.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Precompiled contract that exists in every Arbitrum chain at address(100),\\n * 0x0000000000000000000000000000000000000064. Exposes a variety of system-level functionality. ArbSys provides\\n * systems functionality useful to some Arbitrum contracts. Any contract running on an Arbitrum Chain can call the\\n * chain's ArbSys.\\n */\\ninterface ArbSys {\\n    /**\\n     * @notice Get internal version number identifying an ArbOS build\\n     * @return version number as int\\n     */\\n    function arbOSVersion() external pure returns (uint256);\\n\\n    function arbChainID() external view returns (uint256);\\n\\n    /**\\n     * @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)\\n     * @return block number as int\\n     */\\n    function arbBlockNumber() external view returns (uint256);\\n\\n    /**\\n     * @notice Send given amount of Eth to dest from sender.\\n     * This is a convenience function, which is equivalent to calling sendTxToL1 with empty calldataForL1.\\n     * @param destination recipient address on L1\\n     * @return unique identifier for this L2-to-L1 transaction.\\n     */\\n    function withdrawEth(address destination) external payable returns (uint256);\\n\\n    /**\\n     * @notice Send a transaction to L1\\n     * @param destination recipient address on L1\\n     * @param calldataForL1 (optional) calldata for L1 contract call\\n     * @return a unique identifier for this L2-to-L1 transaction.\\n     */\\n    function sendTxToL1(address destination, bytes calldata calldataForL1) external payable returns (uint256);\\n\\n    /**\\n     * @notice get the number of transactions issued by the given external account or the account sequence number of the given contract\\n     * @param account target account\\n     * @return the number of transactions issued by the given external account or the account sequence number of the given contract\\n     */\\n    function getTransactionCount(address account) external view returns (uint256);\\n\\n    /**\\n     * @notice get the value of target L2 storage slot\\n     * This function is only callable from address 0 to prevent contracts from being able to call it\\n     * @param account target account\\n     * @param index target index of storage slot\\n     * @return stotage value for the given account at the given index\\n     */\\n    function getStorageAt(address account, uint256 index) external view returns (uint256);\\n\\n    /**\\n     * @notice check if current call is coming from l1\\n     * @return true if the caller of this was called directly from L1\\n     */\\n    function isTopLevelCall() external view returns (bool);\\n\\n    event EthWithdrawal(address indexed destAddr, uint256 amount);\\n\\n    event L2ToL1Transaction(\\n        address caller,\\n        address indexed destination,\\n        uint256 indexed uniqueId,\\n        uint256 indexed batchNumber,\\n        uint256 indexInBatch,\\n        uint256 arbBlockNum,\\n        uint256 ethBlockNum,\\n        uint256 timestamp,\\n        uint256 callvalue,\\n        bytes data\\n    );\\n}\\n\",\"keccak256\":\"0xb416d85bd67893bf55713735f4481a1eb9ebe6317f9fa089ae1cbede73258670\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/external/avm/interfaces/ArbSys.sol": {
                "ArbSys": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "destAddr",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "EthWithdrawal",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "caller",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "destination",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "uniqueId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "batchNumber",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "indexInBatch",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "arbBlockNum",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "ethBlockNum",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "callvalue",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "L2ToL1Transaction",
                            "type": "event"
                        },
                        {
                            "inputs": [],
                            "name": "arbBlockNumber",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "arbChainID",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "arbOSVersion",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "pure",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "index",
                                    "type": "uint256"
                                }
                            ],
                            "name": "getStorageAt",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "getTransactionCount",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "isTopLevelCall",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "destination",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "calldataForL1",
                                    "type": "bytes"
                                }
                            ],
                            "name": "sendTxToL1",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "destination",
                                    "type": "address"
                                }
                            ],
                            "name": "withdrawEth",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "arbBlockNumber()": {
                                "returns": {
                                    "_0": "block number as int"
                                }
                            },
                            "arbOSVersion()": {
                                "returns": {
                                    "_0": "version number as int"
                                }
                            },
                            "getStorageAt(address,uint256)": {
                                "params": {
                                    "account": "target account",
                                    "index": "target index of storage slot"
                                },
                                "returns": {
                                    "_0": "stotage value for the given account at the given index"
                                }
                            },
                            "getTransactionCount(address)": {
                                "params": {
                                    "account": "target account"
                                },
                                "returns": {
                                    "_0": "the number of transactions issued by the given external account or the account sequence number of the given contract"
                                }
                            },
                            "isTopLevelCall()": {
                                "returns": {
                                    "_0": "true if the caller of this was called directly from L1"
                                }
                            },
                            "sendTxToL1(address,bytes)": {
                                "params": {
                                    "calldataForL1": "(optional) calldata for L1 contract call",
                                    "destination": "recipient address on L1"
                                },
                                "returns": {
                                    "_0": "a unique identifier for this L2-to-L1 transaction."
                                }
                            },
                            "withdrawEth(address)": {
                                "params": {
                                    "destination": "recipient address on L1"
                                },
                                "returns": {
                                    "_0": "unique identifier for this L2-to-L1 transaction."
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "arbBlockNumber()": "a3b1b31d",
                            "arbChainID()": "d127f54a",
                            "arbOSVersion()": "051038f2",
                            "getStorageAt(address,uint256)": "a169625f",
                            "getTransactionCount(address)": "23ca0cd2",
                            "isTopLevelCall()": "08bd624c",
                            "sendTxToL1(address,bytes)": "928c169a",
                            "withdrawEth(address)": "25e16063"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destAddr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EthWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"uniqueId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"indexInBatch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"arbBlockNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ethBlockNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"callvalue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"L2ToL1Transaction\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"arbBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"arbChainID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"arbOSVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getStorageAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getTransactionCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isTopLevelCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"calldataForL1\",\"type\":\"bytes\"}],\"name\":\"sendTxToL1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"}],\"name\":\"withdrawEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"arbBlockNumber()\":{\"returns\":{\"_0\":\"block number as int\"}},\"arbOSVersion()\":{\"returns\":{\"_0\":\"version number as int\"}},\"getStorageAt(address,uint256)\":{\"params\":{\"account\":\"target account\",\"index\":\"target index of storage slot\"},\"returns\":{\"_0\":\"stotage value for the given account at the given index\"}},\"getTransactionCount(address)\":{\"params\":{\"account\":\"target account\"},\"returns\":{\"_0\":\"the number of transactions issued by the given external account or the account sequence number of the given contract\"}},\"isTopLevelCall()\":{\"returns\":{\"_0\":\"true if the caller of this was called directly from L1\"}},\"sendTxToL1(address,bytes)\":{\"params\":{\"calldataForL1\":\"(optional) calldata for L1 contract call\",\"destination\":\"recipient address on L1\"},\"returns\":{\"_0\":\"a unique identifier for this L2-to-L1 transaction.\"}},\"withdrawEth(address)\":{\"params\":{\"destination\":\"recipient address on L1\"},\"returns\":{\"_0\":\"unique identifier for this L2-to-L1 transaction.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"arbBlockNumber()\":{\"notice\":\"Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)\"},\"arbOSVersion()\":{\"notice\":\"Get internal version number identifying an ArbOS build\"},\"getStorageAt(address,uint256)\":{\"notice\":\"get the value of target L2 storage slot This function is only callable from address 0 to prevent contracts from being able to call it\"},\"getTransactionCount(address)\":{\"notice\":\"get the number of transactions issued by the given external account or the account sequence number of the given contract\"},\"isTopLevelCall()\":{\"notice\":\"check if current call is coming from l1\"},\"sendTxToL1(address,bytes)\":{\"notice\":\"Send a transaction to L1\"},\"withdrawEth(address)\":{\"notice\":\"Send given amount of Eth to dest from sender. This is a convenience function, which is equivalent to calling sendTxToL1 with empty calldataForL1.\"}},\"notice\":\"Precompiled contract that exists in every Arbitrum chain at address(100), 0x0000000000000000000000000000000000000064. Exposes a variety of system-level functionality. ArbSys provides systems functionality useful to some Arbitrum contracts. Any contract running on an Arbitrum Chain can call the chain's ArbSys.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/avm/interfaces/ArbSys.sol\":\"ArbSys\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/avm/interfaces/ArbSys.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/54a2109a97c5b1504824c6317d358e2d2733b5a3/contracts/arbitrum/ArbSys.sol\\n// with changes only to the solidity version and comments.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Precompiled contract that exists in every Arbitrum chain at address(100),\\n * 0x0000000000000000000000000000000000000064. Exposes a variety of system-level functionality. ArbSys provides\\n * systems functionality useful to some Arbitrum contracts. Any contract running on an Arbitrum Chain can call the\\n * chain's ArbSys.\\n */\\ninterface ArbSys {\\n    /**\\n     * @notice Get internal version number identifying an ArbOS build\\n     * @return version number as int\\n     */\\n    function arbOSVersion() external pure returns (uint256);\\n\\n    function arbChainID() external view returns (uint256);\\n\\n    /**\\n     * @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)\\n     * @return block number as int\\n     */\\n    function arbBlockNumber() external view returns (uint256);\\n\\n    /**\\n     * @notice Send given amount of Eth to dest from sender.\\n     * This is a convenience function, which is equivalent to calling sendTxToL1 with empty calldataForL1.\\n     * @param destination recipient address on L1\\n     * @return unique identifier for this L2-to-L1 transaction.\\n     */\\n    function withdrawEth(address destination) external payable returns (uint256);\\n\\n    /**\\n     * @notice Send a transaction to L1\\n     * @param destination recipient address on L1\\n     * @param calldataForL1 (optional) calldata for L1 contract call\\n     * @return a unique identifier for this L2-to-L1 transaction.\\n     */\\n    function sendTxToL1(address destination, bytes calldata calldataForL1) external payable returns (uint256);\\n\\n    /**\\n     * @notice get the number of transactions issued by the given external account or the account sequence number of the given contract\\n     * @param account target account\\n     * @return the number of transactions issued by the given external account or the account sequence number of the given contract\\n     */\\n    function getTransactionCount(address account) external view returns (uint256);\\n\\n    /**\\n     * @notice get the value of target L2 storage slot\\n     * This function is only callable from address 0 to prevent contracts from being able to call it\\n     * @param account target account\\n     * @param index target index of storage slot\\n     * @return stotage value for the given account at the given index\\n     */\\n    function getStorageAt(address account, uint256 index) external view returns (uint256);\\n\\n    /**\\n     * @notice check if current call is coming from l1\\n     * @return true if the caller of this was called directly from L1\\n     */\\n    function isTopLevelCall() external view returns (bool);\\n\\n    event EthWithdrawal(address indexed destAddr, uint256 amount);\\n\\n    event L2ToL1Transaction(\\n        address caller,\\n        address indexed destination,\\n        uint256 indexed uniqueId,\\n        uint256 indexed batchNumber,\\n        uint256 indexInBatch,\\n        uint256 arbBlockNum,\\n        uint256 ethBlockNum,\\n        uint256 timestamp,\\n        uint256 callvalue,\\n        bytes data\\n    );\\n}\\n\",\"keccak256\":\"0xb416d85bd67893bf55713735f4481a1eb9ebe6317f9fa089ae1cbede73258670\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "arbBlockNumber()": {
                                "notice": "Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)"
                            },
                            "arbOSVersion()": {
                                "notice": "Get internal version number identifying an ArbOS build"
                            },
                            "getStorageAt(address,uint256)": {
                                "notice": "get the value of target L2 storage slot This function is only callable from address 0 to prevent contracts from being able to call it"
                            },
                            "getTransactionCount(address)": {
                                "notice": "get the number of transactions issued by the given external account or the account sequence number of the given contract"
                            },
                            "isTopLevelCall()": {
                                "notice": "check if current call is coming from l1"
                            },
                            "sendTxToL1(address,bytes)": {
                                "notice": "Send a transaction to L1"
                            },
                            "withdrawEth(address)": {
                                "notice": "Send given amount of Eth to dest from sender. This is a convenience function, which is equivalent to calling sendTxToL1 with empty calldataForL1."
                            }
                        },
                        "notice": "Precompiled contract that exists in every Arbitrum chain at address(100), 0x0000000000000000000000000000000000000064. Exposes a variety of system-level functionality. ArbSys provides systems functionality useful to some Arbitrum contracts. Any contract running on an Arbitrum Chain can call the chain's ArbSys.",
                        "version": 1
                    }
                }
            },
            "contracts/external/avm/interfaces/iArbitrum_Inbox.sol": {
                "IBridge": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "activeOutbox",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "activeOutbox()": "ab5d8943"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"activeOutbox\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":\"IBridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                },
                "iArbitrum_Inbox": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "bridge",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "destAddr",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "excessFeeRefundAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "callValueRefundAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxGas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasPriceBid",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "createRetryableTicketNoRefundAliasRewrite",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "bridge()": "e78cea92",
                            "createRetryableTicketNoRefundAliasRewrite(address,uint256,uint256,address,address,uint256,uint256,bytes)": "1b871c8d"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"l2CallValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"excessFeeRefundAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callValueRefundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPriceBid\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"createRetryableTicketNoRefundAliasRewrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":\"iArbitrum_Inbox\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/external/avm/interfaces/iArbitrum_Outbox.sol": {
                "iArbitrum_Outbox": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "l2ToL1Sender",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "l2ToL1Sender()": "80648b02"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"l2ToL1Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":\"iArbitrum_Outbox\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":{\"content\":\"// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\\n// with changes only to the solidity version.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n\\n/*\\n * Copyright 2021, Offchain Labs, Inc.\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *    http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\npragma solidity ^0.8.0;\\n\\ninterface iArbitrum_Outbox {\\n    function l2ToL1Sender() external view returns (address);\\n}\\n\",\"keccak256\":\"0x346d5d3a1bcdb29ef40bebbf0ca78fe3063e14176c20c96ea7854cbb4762cbd8\",\"license\":\"Apache-2.0\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/external/chainbridge/Bridge.sol": {
                "Bridge": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "chainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "address[]",
                                    "name": "initialRelayers",
                                    "type": "address[]"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "initialRelayerThreshold",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "fee",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "expiry",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint8",
                                    "name": "destinationChainID",
                                    "type": "uint8"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                }
                            ],
                            "name": "Deposit",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "Paused",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint8",
                                    "name": "originChainID",
                                    "type": "uint8"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "enum Bridge.ProposalStatus",
                                    "name": "status",
                                    "type": "uint8"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes32",
                                    "name": "dataHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "ProposalEvent",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint8",
                                    "name": "originChainID",
                                    "type": "uint8"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "enum Bridge.ProposalStatus",
                                    "name": "status",
                                    "type": "uint8"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "ProposalVote",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "relayer",
                                    "type": "address"
                                }
                            ],
                            "name": "RelayerAdded",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "relayer",
                                    "type": "address"
                                }
                            ],
                            "name": "RelayerRemoved",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "newThreshold",
                                    "type": "uint256"
                                }
                            ],
                            "name": "RelayerThresholdChanged",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "previousAdminRole",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "newAdminRole",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "RoleAdminChanged",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "sender",
                                    "type": "address"
                                }
                            ],
                            "name": "RoleGranted",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "sender",
                                    "type": "address"
                                }
                            ],
                            "name": "RoleRevoked",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "Unpaused",
                            "type": "event"
                        },
                        {
                            "inputs": [],
                            "name": "DEFAULT_ADMIN_ROLE",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "RELAYER_ROLE",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "_chainID",
                            "outputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "name": "_depositCounts",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint8",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "name": "_depositRecords",
                            "outputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "_expiry",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "_fee",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint72",
                                    "name": "",
                                    "type": "uint72"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "_hasVotedOnProposal",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint72",
                                    "name": "",
                                    "type": "uint72"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "_proposals",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "_resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "_dataHash",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "enum Bridge.ProposalStatus",
                                    "name": "_status",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "_proposedBlock",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "_relayerThreshold",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "_resourceIDToHandlerAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "_totalProposals",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "_totalRelayers",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "relayerAddress",
                                    "type": "address"
                                }
                            ],
                            "name": "adminAddRelayer",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "newFee",
                                    "type": "uint256"
                                }
                            ],
                            "name": "adminChangeFee",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "newThreshold",
                                    "type": "uint256"
                                }
                            ],
                            "name": "adminChangeRelayerThreshold",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "adminPauseTransfers",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "relayerAddress",
                                    "type": "address"
                                }
                            ],
                            "name": "adminRemoveRelayer",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "handlerAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "tokenAddress",
                                    "type": "address"
                                }
                            ],
                            "name": "adminSetBurnable",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "handlerAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "contractAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes4",
                                    "name": "depositFunctionSig",
                                    "type": "bytes4"
                                },
                                {
                                    "internalType": "bytes4",
                                    "name": "executeFunctionSig",
                                    "type": "bytes4"
                                }
                            ],
                            "name": "adminSetGenericResource",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "handlerAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "tokenAddress",
                                    "type": "address"
                                }
                            ],
                            "name": "adminSetResource",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "adminUnpauseTransfers",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "handlerAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "tokenAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amountOrTokenID",
                                    "type": "uint256"
                                }
                            ],
                            "name": "adminWithdraw",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "chainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "dataHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "cancelProposal",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "destinationChainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "chainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "executeProposal",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "originChainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "dataHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "getProposal",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "bytes32",
                                            "name": "_resourceID",
                                            "type": "bytes32"
                                        },
                                        {
                                            "internalType": "bytes32",
                                            "name": "_dataHash",
                                            "type": "bytes32"
                                        },
                                        {
                                            "internalType": "address[]",
                                            "name": "_yesVotes",
                                            "type": "address[]"
                                        },
                                        {
                                            "internalType": "address[]",
                                            "name": "_noVotes",
                                            "type": "address[]"
                                        },
                                        {
                                            "internalType": "enum Bridge.ProposalStatus",
                                            "name": "_status",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "_proposedBlock",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct Bridge.Proposal",
                                    "name": "",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "getRoleAdmin",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "grantRole",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "hasRole",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "relayer",
                                    "type": "address"
                                }
                            ],
                            "name": "isRelayer",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "paused",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "renounceAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "renounceRole",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "role",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "revokeRole",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes4",
                                    "name": "interfaceId",
                                    "type": "bytes4"
                                }
                            ],
                            "name": "supportsInterface",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address payable[]",
                                    "name": "addrs",
                                    "type": "address[]"
                                },
                                {
                                    "internalType": "uint256[]",
                                    "name": "amounts",
                                    "type": "uint256[]"
                                }
                            ],
                            "name": "transferFunds",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "chainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "dataHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "voteProposal",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "author": "ChainSafe Systems.",
                        "kind": "dev",
                        "methods": {
                            "adminAddRelayer(address)": {
                                "params": {
                                    "relayerAddress": "Address of relayer to be added."
                                }
                            },
                            "adminChangeFee(uint256)": {
                                "params": {
                                    "newFee": "Value {_fee} will be updated to."
                                }
                            },
                            "adminChangeRelayerThreshold(uint256)": {
                                "params": {
                                    "newThreshold": "Value {_relayerThreshold} will be changed to."
                                }
                            },
                            "adminRemoveRelayer(address)": {
                                "params": {
                                    "relayerAddress": "Address of relayer to be removed."
                                }
                            },
                            "adminSetBurnable(address,address)": {
                                "params": {
                                    "handlerAddress": "Address of handler resource will be set for.",
                                    "tokenAddress": "Address of contract to be called when a deposit is made and a deposited is executed."
                                }
                            },
                            "adminSetGenericResource(address,bytes32,address,bytes4,bytes4)": {
                                "params": {
                                    "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.",
                                    "handlerAddress": "Address of handler resource will be set for.",
                                    "resourceID": "ResourceID to be used when making deposits."
                                }
                            },
                            "adminSetResource(address,bytes32,address)": {
                                "params": {
                                    "handlerAddress": "Address of handler resource will be set for.",
                                    "resourceID": "ResourceID to be used when making deposits.",
                                    "tokenAddress": "Address of contract to be called when a deposit is made and a deposited is executed."
                                }
                            },
                            "adminWithdraw(address,address,address,uint256)": {
                                "params": {
                                    "amountOrTokenID": "Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.",
                                    "handlerAddress": "Address of handler to withdraw from.",
                                    "recipient": "Address to withdraw tokens to.",
                                    "tokenAddress": "Address of token to withdraw."
                                }
                            },
                            "cancelProposal(uint8,uint64,bytes32)": {
                                "params": {
                                    "chainID": "ID of chain deposit originated from.",
                                    "dataHash": "Hash of data originally provided when deposit was made.",
                                    "depositNonce": "ID of deposited generated by origin Bridge contract."
                                }
                            },
                            "constructor": {
                                "params": {
                                    "chainID": "ID of chain the Bridge contract exists on.",
                                    "initialRelayerThreshold": "Number of votes needed for a deposit proposal to be considered passed.",
                                    "initialRelayers": "Addresses that should be initially granted the relayer role."
                                }
                            },
                            "deposit(uint8,bytes32,bytes)": {
                                "params": {
                                    "data": "Additional data to be passed to specified handler.",
                                    "destinationChainID": "ID of chain deposit will be bridged to.",
                                    "resourceID": "ResourceID used to find address of handler to be used for deposit."
                                }
                            },
                            "executeProposal(uint8,uint64,bytes,bytes32)": {
                                "params": {
                                    "chainID": "ID of chain deposit originated from.",
                                    "data": "Data originally provided when deposit was made.",
                                    "depositNonce": "ID of deposited generated by origin Bridge contract.",
                                    "resourceID": "ResourceID to be used when making deposits."
                                }
                            },
                            "getProposal(uint8,uint64,bytes32)": {
                                "params": {
                                    "dataHash": "Hash of data to be provided when deposit proposal is executed.",
                                    "depositNonce": "ID of proposal generated by proposal's origin Bridge contract.",
                                    "originChainID": "Chain ID deposit originated from."
                                },
                                "returns": {
                                    "_0": "Proposal which consists of: - _dataHash Hash of data to be provided when deposit proposal is executed. - _yesVotes Number of votes in favor of proposal. - _noVotes Number of votes against proposal. - _status Current status of proposal."
                                }
                            },
                            "getRoleAdmin(bytes32)": {
                                "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
                            },
                            "grantRole(bytes32,address)": {
                                "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."
                            },
                            "hasRole(bytes32,address)": {
                                "details": "Returns `true` if `account` has been granted `role`."
                            },
                            "isRelayer(address)": {
                                "params": {
                                    "relayer": "Address to check."
                                }
                            },
                            "paused()": {
                                "details": "Returns true if the contract is paused, and false otherwise."
                            },
                            "renounceAdmin(address)": {
                                "params": {
                                    "newAdmin": "Address that admin role will be granted to."
                                }
                            },
                            "renounceRole(bytes32,address)": {
                                "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."
                            },
                            "revokeRole(bytes32,address)": {
                                "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."
                            },
                            "supportsInterface(bytes4)": {
                                "details": "See {IERC165-supportsInterface}."
                            },
                            "transferFunds(address[],uint256[])": {
                                "params": {
                                    "addrs": "Array of addresses to transfer {amounts} to.",
                                    "amounts": "Array of amonuts to transfer to {addrs}."
                                }
                            },
                            "voteProposal(uint8,uint64,bytes32,bytes32)": {
                                "params": {
                                    "chainID": "ID of chain deposit originated from.",
                                    "dataHash": "Hash of data provided when deposit was made.",
                                    "depositNonce": "ID of deposited generated by origin Bridge contract."
                                }
                            }
                        },
                        "title": "Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_6145": {
                                    "entryPoint": null,
                                    "id": 6145,
                                    "parameterSlots": 5,
                                    "returnSlots": 0
                                },
                                "@_756": {
                                    "entryPoint": null,
                                    "id": 756,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_checkRole_441": {
                                    "entryPoint": 551,
                                    "id": 441,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_grantRole_588": {
                                    "entryPoint": 415,
                                    "id": 588,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_setRoleAdmin_557": {
                                    "entryPoint": 280,
                                    "id": 557,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_setupRole_533": {
                                    "entryPoint": 264,
                                    "id": 533,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@getRoleAdmin_456": {
                                    "entryPoint": null,
                                    "id": 456,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@grantRole_476": {
                                    "entryPoint": 367,
                                    "id": 476,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@hasRole_398": {
                                    "entryPoint": null,
                                    "id": 398,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@toHexString_2176": {
                                    "entryPoint": 717,
                                    "id": 2176,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_address_fromMemory": {
                                    "entryPoint": 1187,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint8t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256_fromMemory": {
                                    "entryPoint": 1216,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 5
                                },
                                "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 1606,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 1727,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 1814,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_mul_t_uint256": {
                                    "entryPoint": 1780,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 1555,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "decrement_t_uint256": {
                                    "entryPoint": 1841,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "increment_t_uint256": {
                                    "entryPoint": 1525,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 1503,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x32": {
                                    "entryPoint": 1481,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 1165,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:4448:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "46:95:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "63:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "70:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "75:10:66",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "66:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "66:20:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "56:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "56:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "56:31:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "103:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "106:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "96:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "96:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "96:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "127:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "130:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "120:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "120:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "120:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "14:127:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "206:117:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "216:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "231:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "225:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "225:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "216:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "301:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "310:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "313:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "303:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "303:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "303:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "260:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "271:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "286:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "291:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "282:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "282:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "295:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "278:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "278:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "267:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "267:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "257:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "257:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "250:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "250:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "247:70:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "185:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "196:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "146:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "500:1292:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "547:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "556:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "559:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "549:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "549:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "549:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "521:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "530:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "517:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "517:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "542:3:66",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "513:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "513:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "510:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "572:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "591:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "585:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "585:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "576:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "649:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "658:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "661:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "651:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "651:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "651:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "623:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "634:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "641:4:66",
                                                                                        "type": "",
                                                                                        "value": "0xff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "630:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "630:16:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "620:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "620:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "613:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "613:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "610:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "674:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "684:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "674:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "698:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "708:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "702:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "719:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "743:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "754:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "739:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "739:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "733:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "733:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "723:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "767:28:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "785:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "789:1:66",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "781:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "781:10:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "793:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "777:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "777:18:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "771:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "822:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "831:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "834:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "824:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "824:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "824:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "810:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "818:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "807:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "807:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "804:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "847:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "861:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "872:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "857:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "857:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "851:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "927:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "936:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "939:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "929:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "929:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "929:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "906:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "910:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "902:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "902:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "917:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "898:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "898:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "891:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "891:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "888:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "952:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "968:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "962:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "962:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "956:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "994:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "996:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "996:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "996:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "986:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "990:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "983:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "983:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "980:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1025:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1039:1:66",
                                                                        "type": "",
                                                                        "value": "5"
                                                                    },
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1042:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1035:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1035:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_5",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1029:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1054:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1074:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1068:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1068:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1058:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1086:56:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1108:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_5",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1124:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1128:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1120:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1120:11:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1137:2:66",
                                                                                        "type": "",
                                                                                        "value": "31"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "not",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1133:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1133:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1116:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1116:25:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1104:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1104:38:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1090:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1201:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1203:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1203:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1203:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1160:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1172:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1157:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1157:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1180:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1192:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1177:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1177:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1154:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1154:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1151:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1239:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1243:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1232:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1232:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1232:22:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1263:17:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1274:6:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1267:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1296:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1304:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1289:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1289:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1289:18:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1316:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1327:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1335:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1323:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1323:15:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1316:3:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1347:34:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1369:2:66"
                                                                            },
                                                                            {
                                                                                "name": "_5",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1373:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1365:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1365:11:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1378:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1361:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1361:20:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcEnd",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1351:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1413:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1422:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1425:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1415:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1415:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1415:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1396:6:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1404:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1393:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1393:19:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1390:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1438:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1453:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1457:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1449:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1449:11:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "src",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1442:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1525:103:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1546:3:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "src",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1581:3:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "abi_decode_address_fromMemory",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1551:29:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1551:34:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1539:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1539:47:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1539:47:66"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1599:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1610:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1615:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1606:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1606:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "dst",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1599:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "src",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1480:3:66"
                                                                    },
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1485:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1477:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1477:15:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1493:23:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1495:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "src",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1506:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1511:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1502:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1502:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "src",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1495:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1473:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "1469:159:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1637:16:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1647:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1637:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1662:35:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1682:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1693:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1678:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1678:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1672:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1672:25:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1662:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1706:35:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1726:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1737:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1722:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1722:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1716:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1716:25:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1706:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1750:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1770:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1781:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1766:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1766:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1760:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1760:26:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1750:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint8t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "434:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "445:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "457:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "465:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "473:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "481:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "489:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "328:1464:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1829:95:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1846:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1853:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1858:10:66",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1849:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1849:20:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1839:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1839:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1839:31:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1886:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1889:4:66",
                                                                        "type": "",
                                                                        "value": "0x32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1879:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1879:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1879:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1910:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1913:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1903:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1903:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1903:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x32",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "1797:127:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1961:95:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1978:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1985:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1990:10:66",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1981:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1981:20:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1971:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1971:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1971:31:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2018:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2021:4:66",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2011:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2011:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2011:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2042:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2045:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2035:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2035:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2035:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "1929:127:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2108:88:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2139:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2141:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2141:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2141:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2124:5:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2135:1:66",
                                                                                "type": "",
                                                                                "value": "0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2131:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2131:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2121:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2121:17:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2118:43:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2170:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2181:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2188:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2177:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2177:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2170:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2090:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2100:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2061:135:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2254:205:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2264:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2273:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2268:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2333:63:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2358:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2363:1:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2354:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2354:11:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2377:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2382:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2373:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2373:11:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2367:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2367:18:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2347:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2347:39:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2347:39:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2294:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2297:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2291:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2291:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2305:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2307:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2316:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2319:2:66",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2312:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2312:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2307:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2287:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "2283:113:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2422:31:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2435:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2440:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2431:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2431:16:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2449:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2424:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2424:27:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2424:27:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2411:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2414:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2408:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2408:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2405:48:66"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2232:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2237:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2242:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2201:258:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2853:397:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2870:3:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416363657373436f6e74726f6c3a206163636f756e7420",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2875:25:66",
                                                                        "type": "",
                                                                        "value": "AccessControl: account "
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2863:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2863:38:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2863:38:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2910:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2930:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2924:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2924:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2914:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2972:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2980:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2968:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2968:17:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2991:3:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2996:2:66",
                                                                                "type": "",
                                                                                "value": "23"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2987:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2987:12:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3001:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2946:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2946:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2946:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3017:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3031:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3036:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3027:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3027:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3021:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3063:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3067:2:66",
                                                                                "type": "",
                                                                                "value": "23"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3059:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3059:11:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "206973206d697373696e6720726f6c6520",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3072:19:66",
                                                                        "type": "",
                                                                        "value": " is missing role "
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3052:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3052:40:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3052:40:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3101:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3123:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3117:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3117:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3105:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3165:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3173:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3161:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3161:17:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3184:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3188:2:66",
                                                                                "type": "",
                                                                                "value": "40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3180:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3180:11:66"
                                                                    },
                                                                    {
                                                                        "name": "length_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3193:8:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3139:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3139:63:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3139:63:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3211:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3226:2:66"
                                                                            },
                                                                            {
                                                                                "name": "length_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3230:8:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3222:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3222:17:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3241:2:66",
                                                                        "type": "",
                                                                        "value": "40"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3218:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3218:26:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3211:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2821:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2826:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2834:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2845:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2464:786:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3376:262:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3393:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3404:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3386:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3386:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3386:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3416:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3436:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3430:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3430:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3420:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3463:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3474:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3459:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3459:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3479:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3452:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3452:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3452:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3521:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3529:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3517:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3517:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3538:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3549:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3534:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3534:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3554:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3495:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3495:66:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3495:66:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3570:62:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3586:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3605:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3613:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3601:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3601:15:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3622:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3618:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3618:7:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3597:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3597:29:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3582:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3582:45:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3629:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3578:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3578:54:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3570:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3345:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3356:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3367:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3255:383:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3695:116:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3754:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3756:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3756:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3756:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3726:1:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3719:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3719:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3712:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3712:17:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3734:1:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3745:1:66",
                                                                                                "type": "",
                                                                                                "value": "0"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3741:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3741:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3749:1:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "div",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3737:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3737:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3731:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3731:21:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3708:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3708:45:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3705:71:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3785:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3800:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3803:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3796:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3796:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "product",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3785:7:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_mul_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3674:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3677:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "product",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3683:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3643:168:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3864:80:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3891:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3893:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3893:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3893:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3880:1:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3887:1:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3883:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3883:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3877:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3877:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3874:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3922:16:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3933:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3936:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3929:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3929:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3922:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3847:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3850:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3856:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3816:128:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3996:89:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4023:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4025:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4025:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4025:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4016:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4009:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4009:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4006:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4054:25:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4065:5:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4076:1:66",
                                                                                "type": "",
                                                                                "value": "0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4072:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4072:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4061:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4061:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4054:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "decrement_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3978:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3988:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3949:136:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4264:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4281:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4292:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4274:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4274:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4274:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4315:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4326:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4311:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4311:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4331:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4304:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4304:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4304:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4354:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4365:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4350:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4350:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4370:34:66",
                                                                        "type": "",
                                                                        "value": "Strings: hex length insufficient"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4343:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4343:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4343:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4414:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4426:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4437:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4422:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4422:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4414:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4241:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4255:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4090:356:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8t_array$_t_address_$dyn_memory_ptrt_uint256t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n        value0 := value\n        let _1 := 32\n        let offset := mload(add(headStart, _1))\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := shl(5, _4)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(_5, 63), not(31)))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let dst := memPtr\n        mstore(memPtr, _4)\n        dst := add(memPtr, _1)\n        let srcEnd := add(add(_3, _5), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            mstore(dst, abi_decode_address_fromMemory(src))\n            dst := add(dst, _1)\n        }\n        value1 := memPtr\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n        value4 := mload(add(headStart, 128))\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, \"AccessControl: account \")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 23), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 23), \" is missing role \")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 40), length_1)\n        end := add(add(_1, length_1), 40)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, not(0))\n    }\n    function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Strings: hex length insufficient\")\n        tail := add(headStart, 96)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60806040523480156200001157600080fd5b5060405162003e3e38038062003e3e8339810160408190526200003491620004c0565b6000805460ff1990811682556002805490911660ff881617905560038490556006839055600782905562000069903362000108565b6200008560008051602062003e1e833981519152600062000118565b60005b8451811015620000fc57620000cf60008051602062003e1e833981519152868381518110620000bb57620000bb620005c9565b60200260200101516200016f60201b60201c565b60048054906000620000e183620005f5565b91905055508080620000f390620005f5565b91505062000088565b5050505050506200074b565b6200011482826200019f565b5050565b60008281526001602081905260409091200154819060405184907fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff90600090a4600091825260016020819052604090922090910155565b600082815260016020819052604090912001546200018e813362000227565b6200019a83836200019f565b505050565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff16620001145760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff16620001145762000273816001600160a01b03166014620002cd60201b620022a11760201c565b62000289836020620022a1620002cd821b17811c565b6040516020016200029c92919062000646565b60408051601f198184030181529082905262461bcd60e51b8252620002c491600401620006bf565b60405180910390fd5b60606000620002de836002620006f4565b620002eb90600262000716565b6001600160401b038111156200030557620003056200048d565b6040519080825280601f01601f19166020018201604052801562000330576020820181803683370190505b509050600360fc1b816000815181106200034e576200034e620005c9565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110620003805762000380620005c9565b60200101906001600160f81b031916908160001a9053506000620003a6846002620006f4565b620003b390600162000716565b90505b600181111562000435576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620003eb57620003eb620005c9565b1a60f81b828281518110620004045762000404620005c9565b60200101906001600160f81b031916908160001a90535060049490941c936200042d8162000731565b9050620003b6565b508315620004865760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620002c4565b9392505050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b0381168114620004bb57600080fd5b919050565b600080600080600060a08688031215620004d957600080fd5b855160ff81168114620004eb57600080fd5b602087810151919650906001600160401b03808211156200050b57600080fd5b818901915089601f8301126200052057600080fd5b8151818111156200053557620005356200048d565b8060051b604051601f19603f830116810181811085821117156200055d576200055d6200048d565b60405291825284820192508381018501918c8311156200057c57600080fd5b938501935b82851015620005a5576200059585620004a3565b8452938501939285019262000581565b60408c015160608d01516080909d01519b9e919d509b9a9950975050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156200060c576200060c620005df565b5060010190565b60005b838110156200063057818101518382015260200162000616565b8381111562000640576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516200068081601785016020880162000613565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351620006b381602884016020880162000613565b01602801949350505050565b6020815260008251806020840152620006e081604085016020870162000613565b601f01601f19169190910160400192915050565b6000816000190483118215151615620007115762000711620005df565b500290565b600082198211156200072c576200072c620005df565b500190565b600081620007435762000743620005df565b506000190190565b6136c3806200075b6000396000f3fe6080604052600436106102855760003560e01c806380ae1c2811610153578063a9cf69fa116100cb578063cdb0f73a1161007f578063d7a9cd7911610064578063d7a9cd7914610816578063e8437ee71461082c578063ffaac0eb1461084c57600080fd5b8063cdb0f73a146107d6578063d547741f146107f657600080fd5b8063c5b37c22116100b0578063c5b37c221461078a578063c5ec8970146107a0578063cb10f215146107b657600080fd5b8063a9cf69fa14610731578063beab71311461075e57600080fd5b806391d14854116101225780639d5773e0116101075780639d5773e0146106e65780639d82dd63146106fc578063a217fddf1461071c57600080fd5b806391d148541461065f578063926d7d7f146106b257600080fd5b806380ae1c28146105a257806384db809f146105b75780638c0c26311461061f57806391c404ac1461063f57600080fd5b80634603ae38116102015780635c975abb116101b5578063780cf0041161019a578063780cf0041461052b5780637febe63f1461054b578063802aabe81461058c57600080fd5b80635c975abb146104f35780635e1fab0f1461050b57600080fd5b80634e056005116101e65780634e056005146104505780635059871914610470578063541d5548146104d357600080fd5b80634603ae38146103e05780634b0b919d1461040057600080fd5b8063248a9ca31161025857806336568abe1161023d57806336568abe146103735780633ee7094a146103935780634454b20d146103c057600080fd5b8063248a9ca3146103145780632f2ff15d1461035357600080fd5b806301ffc9a71461028a57806305e2ca17146102bf57806317f03ce5146102d45780631ff013f1146102f4575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612c4f565b610861565b60405190151581526020015b60405180910390f35b6102d26102cd366004612cc4565b6108fa565b005b3480156102e057600080fd5b506102d26102ef366004612d36565b610bae565b34801561030057600080fd5b506102d261030f366004612d72565b610d66565b34801561032057600080fd5b5061034561032f366004612db4565b6000908152600160208190526040909120015490565b6040519081526020016102b6565b34801561035f57600080fd5b506102d261036e366004612def565b611423565b34801561037f57600080fd5b506102d261038e366004612def565b61144f565b34801561039f57600080fd5b506103b36103ae366004612e1f565b611502565b6040516102b69190612ecc565b3480156103cc57600080fd5b506102d26103db366004612edf565b6115a7565b3480156103ec57600080fd5b506102d26103fb366004612f8d565b611981565b34801561040c57600080fd5b5061043761041b366004612fed565b60086020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102b6565b34801561045c57600080fd5b506102d261046b366004612db4565b611a32565b34801561047c57600080fd5b506104c361048b366004613021565b600b60209081526000928352604080842090915290825290208054600182015460048301546005909301549192909160ff9091169084565b6040516102b694939291906130b5565b3480156104df57600080fd5b506102aa6104ee3660046130df565b611a6d565b3480156104ff57600080fd5b5060005460ff166102aa565b34801561051757600080fd5b506102d26105263660046130df565b611aba565b34801561053757600080fd5b506102d26105463660046130fc565b611adb565b34801561055757600080fd5b506102aa61056636600461314d565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b34801561059857600080fd5b5061034560045481565b3480156105ae57600080fd5b506102d2611b7d565b3480156105c357600080fd5b506105fa6105d2366004612db4565b60096020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b34801561062b57600080fd5b506102d261063a36600461318d565b611b8f565b34801561064b57600080fd5b506102d261065a366004612db4565b611c20565b34801561066b57600080fd5b506102aa61067a366004612def565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156106be57600080fd5b506103457fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc481565b3480156106f257600080fd5b5061034560055481565b34801561070857600080fd5b506102d26107173660046130df565b611c99565b34801561072857600080fd5b50610345600081565b34801561073d57600080fd5b5061075161074c366004612d36565b611dd2565b6040516102b6919061320c565b34801561076a57600080fd5b506002546107789060ff1681565b60405160ff90911681526020016102b6565b34801561079657600080fd5b5061034560065481565b3480156107ac57600080fd5b5061034560075481565b3480156107c257600080fd5b506102d26107d13660046132a1565b611f62565b3480156107e257600080fd5b506102d26107f13660046130df565b612034565b34801561080257600080fd5b506102d2610811366004612def565b612166565b34801561082257600080fd5b5061034560035481565b34801561083857600080fd5b506102d26108473660046132c1565b61218d565b34801561085857600080fd5b506102d2612291565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806108f457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60005460ff161561096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b60065434146109d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e636f72726563742066656520737570706c696564000000000000000000006044820152606401610963565b60008381526009602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f7265736f757263654944206e6f74206d617070656420746f2068616e646c65726044820152606401610963565b60ff8516600090815260086020526040812080548290610a8c9067ffffffffffffffff16613352565b825467ffffffffffffffff8083166101009490940a848102910219909116179092556000908152600a6020908152604080832060ff8b1684529091529020909150610ad8908585612ae9565b506040517f38995da9000000000000000000000000000000000000000000000000000000008152829073ffffffffffffffffffffffffffffffffffffffff8216906338995da990610b379089908b90879033908c908c906004016133c3565b600060405180830381600087803b158015610b5157600080fd5b505af1158015610b65573d6000803e3d6000fd5b505050508167ffffffffffffffff16868860ff167fdbb69440df8433824a026ef190652f29929eb64b4d1d5d2a69be8afe3e6eaed860405160405180910390a450505050505050565b610bb66124eb565b68ffffffffffffffff00600883901b1660ff8416176000818152600b6020908152604080832085845290915290206004808083015460ff1690811115610bfe57610bfe61304b565b1415610c66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f706f73616c20616c72656164792063616e63656c6c65640000000000006044820152606401610963565b6007546005820154610c799043906125bc565b11610ce0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f50726f706f73616c206e6f7420617420657870697279207468726573686f6c646044820152606401610963565b600481810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790558154600183015460408051928352602083019190915267ffffffffffffffff87169160ff8916917f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417910160405180910390a45050505050565b610d6e6125c8565b60005460ff1615610ddb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610963565b68ffffffffffffffff00600884901b1660ff8516176000818152600b60209081526040808320858452825280832086845260099092529091205473ffffffffffffffffffffffffffffffffffffffff16610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6e6f2068616e646c657220666f72207265736f757263654944000000000000006044820152606401610963565b60048082015460019160ff90911690811115610eaf57610eaf61304b565b1115610f3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f70726f706f73616c20616c7265616479207061737365642f657865637574656460448201527f2f63616e63656c6c6564000000000000000000000000000000000000000000006064820152608401610963565b68ffffffffffffffffff82166000908152600c60209081526040808320868452825280832033845290915290205460ff1615610fd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f72656c6179657220616c726561647920766f74656400000000000000000000006044820152606401610963565b60048082015460ff1690811115610fee57610fee61304b565b6111b6576005600081546110019061341e565b909155506040805160c0810182528581526020810185905281516001808252818401845291928301918160200160208202803683375050508152604080516000808252602080830184528085019290925260018385018190524360609095019490945268ffffffffffffffffff87168152600b825282812088825282528290208451815584820151938101939093559083015180516110a69260028501920190612b8b565b50606082015180516110c2916003840191602090910190612b8b565b5060808201518160040160006101000a81548160ff021916908360048111156110ed576110ed61304b565b021790555060a08201518160050155905050338160020160008154811061111657611116613486565b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560015b604080518681526020810186905267ffffffffffffffff88169160ff8a16917f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417910160405180910390a46112ae565b60075460058201546111c99043906125bc565b111561120157600481810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682179055611167565b8060010154831461126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6461746168617368206d69736d617463680000000000000000000000000000006044820152606401610963565b600281018054600181018255600091825260209091200180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555b60048181015460ff16818111156112c7576112c761304b565b1461141b5768ffffffffffffffffff82166000908152600c602090815260408083208684528252808320338452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560048082015460ff169081111561133b5761133b61304b565b8567ffffffffffffffff168760ff167f25f8daaa4635a7729927ba3f5b3d59cc3320aca7c32c9db4e7ca7b95743436408760405161137b91815260200190565b60405180910390a4600160035411158061139b5750600354600282015410155b1561141b576004810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002908117909155604080518681526020810186905267ffffffffffffffff88169160ff8a16917f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417910160405180910390a45b505050505050565b600082815260016020819052604090912001546114408133612660565b61144a8383612732565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146114f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610963565b6114fe82826127f1565b5050565b600a60209081526000928352604080842090915290825290208054611526906134b5565b80601f0160208091040260200160405190810160405280929190818152602001828054611552906134b5565b801561159f5780601f106115745761010080835404028352916020019161159f565b820191906000526020600020905b81548152906001019060200180831161158257829003601f168201915b505050505081565b6115af6125c8565b60005460ff161561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610963565b600081815260096020908152604080832054905173ffffffffffffffffffffffffffffffffffffffff9091169268ffffffffffffffff00600889901b1660ff8a16179290916116719185918991899101613509565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012068ffffffffffffffffff85166000908152600b84528281208282529093529082209092509060048083015460ff16908111156116e5576116e561304b565b141561174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f70726f706f73616c206973206e6f7420616374697665000000000000000000006044820152606401610963565b600260048083015460ff16908111156117685761176861304b565b146117cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f70726f706f73616c20616c7265616479207472616e73666572726564000000006044820152606401610963565b8060010154821461183c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6461746120646f65736e2774206d6174636820646174616861736800000000006044820152606401610963565b600481810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790558154600081815260096020526040908190205490517fe248cff200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911692839263e248cff2926118d1928d918d9101613548565b600060405180830381600087803b1580156118eb57600080fd5b505af11580156118ff573d6000803e3d6000fd5b50505060048084015460ff16915081111561191c5761191c61304b565b8967ffffffffffffffff168b60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178560000154866001015460405161196d929190918252602082015260400190565b60405180910390a450505050505050505050565b6119896128ac565b60005b83811015611a2b578484828181106119a6576119a6613486565b90506020020160208101906119bb91906130df565b73ffffffffffffffffffffffffffffffffffffffff166108fc8484848181106119e6576119e6613486565b905060200201359081150290604051600060405180830381858888f19350505050158015611a18573d6000803e3d6000fd5b5080611a238161341e565b91505061198c565b5050505050565b611a3a6128ac565b600381905560405181907fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c890600090a250565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604081205460ff166108f4565b611ac26128ac565b611acd600082611423565b611ad860003361144f565b50565b611ae36128ac565b6040517fd9caed1200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301526044820183905285919082169063d9caed1290606401600060405180830381600087803b158015611b5e57600080fd5b505af1158015611b72573d6000803e3d6000fd5b505050505050505050565b611b856128ac565b611b8d612944565b565b611b976128ac565b6040517f07b7ed9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301528391908216906307b7ed9990602401600060405180830381600087803b158015611c0357600080fd5b505af1158015611c17573d6000803e3d6000fd5b50505050505050565b611c286128ac565b806006541415611c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f43757272656e742066656520697320657175616c20746f206e657720666565006044820152606401610963565b600655565b611ca16128ac565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604090205460ff16611d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6164647220646f65736e277420686176652072656c6179657220726f6c6521006044820152606401610963565b611d797fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482612166565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b90600090a260048054906000611dca8361356b565b919050555050565b6040805160c08082018352600080835260208084018290526060848601819052808501526080840182905260a0840182905260ff8816600888901b68ffffffffffffffff001617808352600b825285832087845282529185902085519384018652805484526001810154848301526002810180548751818502810185018952818152969794969294860193830182828015611ea357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611e78575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611f1257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ee7575b505050918352505060048281015460209092019160ff1690811115611f3957611f3961304b565b6004811115611f4a57611f4a61304b565b81526020016005820154815250509150509392505050565b611f6a6128ac565b6000828152600960205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591517fb8fa373600000000000000000000000000000000000000000000000000000000815260048101859052908316602482015284919063b8fa373690604401600060405180830381600087803b15801561201657600080fd5b505af115801561202a573d6000803e3d6000fd5b5050505050505050565b61203c6128ac565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604090205460ff16156120eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6164647220616c7265616479206861732072656c6179657220726f6c652100006044820152606401610963565b6121157fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611423565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c590600090a260048054906000611dca8361341e565b600082815260016020819052604090912001546121838133612660565b61144a83836127f1565b6121956128ac565b6000848152600960205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88811691821790925591517fbba8185a0000000000000000000000000000000000000000000000000000000081526004810187905290851660248201527fffffffff0000000000000000000000000000000000000000000000000000000080851660448301528316606482015286919063bba8185a90608401600060405180830381600087803b15801561227157600080fd5b505af1158015612285573d6000803e3d6000fd5b50505050505050505050565b6122996128ac565b611b8d612a2e565b606060006122b08360026135a0565b6122bb9060026135dd565b67ffffffffffffffff8111156122d3576122d3613457565b6040519080825280601f01601f1916602001820160405280156122fd576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061233457612334613486565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061239757612397613486565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006123d38460026135a0565b6123de9060016135dd565b90505b600181111561247b577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061241f5761241f613486565b1a60f81b82828151811061243557612435613486565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936124748161356b565b90506123e1565b5083156124e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610963565b9392505050565b3360009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff168061255657503360009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604090205460ff165b611b8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656e646572206973206e6f742072656c61796572206f722061646d696e00006044820152606401610963565b60006124e482846135f5565b3360009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604090205460ff16611b8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f73656e64657220646f65736e277420686176652072656c6179657220726f6c656044820152606401610963565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166114fe576126b88173ffffffffffffffffffffffffffffffffffffffff1660146122a1565b6126c38360206122a1565b6040516020016126d492919061360c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261096391600401612ecc565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166114fe57600082815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156114fe57600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b3360009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff16611b8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656e64657220646f65736e277420686176652061646d696e20726f6c6500006044820152606401610963565b60005460ff16156129b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610963565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612a043390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60005460ff16612a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610963565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612a04565b828054612af5906134b5565b90600052602060002090601f016020900481019282612b175760008555612b7b565b82601f10612b4e578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555612b7b565b82800160010185558215612b7b579182015b82811115612b7b578235825591602001919060010190612b60565b50612b87929150612c05565b5090565b828054828255906000526020600020908101928215612b7b579160200282015b82811115612b7b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612bab565b5b80821115612b875760008155600101612c06565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612c4a57600080fd5b919050565b600060208284031215612c6157600080fd5b6124e482612c1a565b803560ff81168114612c4a57600080fd5b60008083601f840112612c8d57600080fd5b50813567ffffffffffffffff811115612ca557600080fd5b602083019150836020828501011115612cbd57600080fd5b9250929050565b60008060008060608587031215612cda57600080fd5b612ce385612c6a565b935060208501359250604085013567ffffffffffffffff811115612d0657600080fd5b612d1287828801612c7b565b95989497509550505050565b803567ffffffffffffffff81168114612c4a57600080fd5b600080600060608486031215612d4b57600080fd5b612d5484612c6a565b9250612d6260208501612d1e565b9150604084013590509250925092565b60008060008060808587031215612d8857600080fd5b612d9185612c6a565b9350612d9f60208601612d1e565b93969395505050506040820135916060013590565b600060208284031215612dc657600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611ad857600080fd5b60008060408385031215612e0257600080fd5b823591506020830135612e1481612dcd565b809150509250929050565b60008060408385031215612e3257600080fd5b612e3b83612d1e565b9150612e4960208401612c6a565b90509250929050565b60005b83811015612e6d578181015183820152602001612e55565b83811115612e7c576000848401525b50505050565b60008151808452612e9a816020860160208601612e52565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006124e46020830184612e82565b600080600080600060808688031215612ef757600080fd5b612f0086612c6a565b9450612f0e60208701612d1e565b9350604086013567ffffffffffffffff811115612f2a57600080fd5b612f3688828901612c7b565b96999598509660600135949350505050565b60008083601f840112612f5a57600080fd5b50813567ffffffffffffffff811115612f7257600080fd5b6020830191508360208260051b8501011115612cbd57600080fd5b60008060008060408587031215612fa357600080fd5b843567ffffffffffffffff80821115612fbb57600080fd5b612fc788838901612f48565b90965094506020870135915080821115612fe057600080fd5b50612d1287828801612f48565b600060208284031215612fff57600080fd5b6124e482612c6a565b803568ffffffffffffffffff81168114612c4a57600080fd5b6000806040838503121561303457600080fd5b61303d83613008565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600581106130b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b84815260208101849052608081016130d0604083018561307a565b82606083015295945050505050565b6000602082840312156130f157600080fd5b81356124e481612dcd565b6000806000806080858703121561311257600080fd5b843561311d81612dcd565b9350602085013561312d81612dcd565b9250604085013561313d81612dcd565b9396929550929360600135925050565b60008060006060848603121561316257600080fd5b61316b84613008565b925060208401359150604084013561318281612dcd565b809150509250925092565b600080604083850312156131a057600080fd5b82356131ab81612dcd565b91506020830135612e1481612dcd565b600081518084526020808501945080840160005b8381101561320157815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016131cf565b509495945050505050565b6020815281516020820152602082015160408201526000604083015160c0606084015261323c60e08401826131bb565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301608085015261327782826131bb565b915050608084015161328c60a085018261307a565b5060a084015160c08401528091505092915050565b6000806000606084860312156132b657600080fd5b833561316b81612dcd565b600080600080600060a086880312156132d957600080fd5b85356132e481612dcd565b94506020860135935060408601356132fb81612dcd565b925061330960608701612c1a565b915061331760808701612c1a565b90509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168181141561337057613370613323565b6001019392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b86815260ff8616602082015267ffffffffffffffff8516604082015273ffffffffffffffffffffffffffffffffffffffff8416606082015260a06080820152600061341260a08301848661337a565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345057613450613323565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c908216806134c957607f821691505b60208210811415613503577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b168152818360148301376000910160140190815292915050565b83815260406020820152600061356260408301848661337a565b95945050505050565b60008161357a5761357a613323565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135d8576135d8613323565b500290565b600082198211156135f0576135f0613323565b500190565b60008282101561360757613607613323565b500390565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613644816017850160208801612e52565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613681816028840160208801612e52565b0160280194935050505056fea26469706673582212201bdb0ea97e34c099dba75c931fd443e06ad9b83a5e4a196f8c0e6041a308aeea64736f6c63430008090033e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3E3E CODESIZE SUB DUP1 PUSH3 0x3E3E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x4C0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT SWAP1 DUP2 AND DUP3 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP2 AND PUSH1 0xFF DUP9 AND OR SWAP1 SSTORE PUSH1 0x3 DUP5 SWAP1 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE PUSH1 0x7 DUP3 SWAP1 SSTORE PUSH3 0x69 SWAP1 CALLER PUSH3 0x108 JUMP JUMPDEST PUSH3 0x85 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x3E1E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x0 PUSH3 0x118 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH3 0xFC JUMPI PUSH3 0xCF PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x3E1E DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0xBB JUMPI PUSH3 0xBB PUSH3 0x5C9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH3 0x16F PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH3 0xE1 DUP4 PUSH3 0x5F5 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP DUP1 DUP1 PUSH3 0xF3 SWAP1 PUSH3 0x5F5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x88 JUMP JUMPDEST POP POP POP POP POP POP PUSH3 0x74B JUMP JUMPDEST PUSH3 0x114 DUP3 DUP3 PUSH3 0x19F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP2 SWAP1 PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH32 0xBD79B86FFE0AB8E8776151514217CD7CACD52C909F66475C3AF44E129F0B00FF SWAP1 PUSH1 0x0 SWAP1 LOG4 PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH3 0x18E DUP2 CALLER PUSH3 0x227 JUMP JUMPDEST PUSH3 0x19A DUP4 DUP4 PUSH3 0x19F JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH3 0x114 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP7 MSTORE SWAP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE SWAP1 MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH3 0x114 JUMPI PUSH3 0x273 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x14 PUSH3 0x2CD PUSH1 0x20 SHL PUSH3 0x22A1 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x289 DUP4 PUSH1 0x20 PUSH3 0x22A1 PUSH3 0x2CD DUP3 SHL OR DUP2 SHR JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x29C SWAP3 SWAP2 SWAP1 PUSH3 0x646 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH3 0x461BCD PUSH1 0xE5 SHL DUP3 MSTORE PUSH3 0x2C4 SWAP2 PUSH1 0x4 ADD PUSH3 0x6BF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x2DE DUP4 PUSH1 0x2 PUSH3 0x6F4 JUMP JUMPDEST PUSH3 0x2EB SWAP1 PUSH1 0x2 PUSH3 0x716 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x305 JUMPI PUSH3 0x305 PUSH3 0x48D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x330 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x3 PUSH1 0xFC SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x34E JUMPI PUSH3 0x34E PUSH3 0x5C9 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xF PUSH1 0xFB SHL DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x380 JUMPI PUSH3 0x380 PUSH3 0x5C9 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH3 0x3A6 DUP5 PUSH1 0x2 PUSH3 0x6F4 JUMP JUMPDEST PUSH3 0x3B3 SWAP1 PUSH1 0x1 PUSH3 0x716 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH3 0x435 JUMPI PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH3 0x3EB JUMPI PUSH3 0x3EB PUSH3 0x5C9 JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x404 JUMPI PUSH3 0x404 PUSH3 0x5C9 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH3 0x42D DUP2 PUSH3 0x731 JUMP JUMPDEST SWAP1 POP PUSH3 0x3B6 JUMP JUMPDEST POP DUP4 ISZERO PUSH3 0x486 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x2C4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x4BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x4EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP8 DUP2 ADD MLOAD SWAP2 SWAP7 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x520 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x535 JUMPI PUSH3 0x535 PUSH3 0x48D JUMP JUMPDEST DUP1 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH1 0x1F NOT PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH3 0x55D JUMPI PUSH3 0x55D PUSH3 0x48D JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 DUP3 MSTORE DUP5 DUP3 ADD SWAP3 POP DUP4 DUP2 ADD DUP6 ADD SWAP2 DUP13 DUP4 GT ISZERO PUSH3 0x57C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP3 DUP6 LT ISZERO PUSH3 0x5A5 JUMPI PUSH3 0x595 DUP6 PUSH3 0x4A3 JUMP JUMPDEST DUP5 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP3 DUP6 ADD SWAP3 PUSH3 0x581 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD PUSH1 0x60 DUP14 ADD MLOAD PUSH1 0x80 SWAP1 SWAP14 ADD MLOAD SWAP12 SWAP15 SWAP2 SWAP14 POP SWAP12 SWAP11 SWAP10 POP SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH3 0x60C JUMPI PUSH3 0x60C PUSH3 0x5DF JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x630 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x616 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x640 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH3 0x680 DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x613 JUMP JUMPDEST PUSH17 0x1034B99036B4B9B9B4B733903937B6329 PUSH1 0x7D SHL PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH3 0x6B3 DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x613 JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH3 0x6E0 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH3 0x613 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x711 JUMPI PUSH3 0x711 PUSH3 0x5DF JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x72C JUMPI PUSH3 0x72C PUSH3 0x5DF JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH3 0x743 JUMPI PUSH3 0x743 PUSH3 0x5DF JUMP JUMPDEST POP PUSH1 0x0 NOT ADD SWAP1 JUMP JUMPDEST PUSH2 0x36C3 DUP1 PUSH3 0x75B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x285 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80AE1C28 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0xA9CF69FA GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xCDB0F73A GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xD7A9CD79 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD7A9CD79 EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0xE8437EE7 EQ PUSH2 0x82C JUMPI DUP1 PUSH4 0xFFAAC0EB EQ PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCDB0F73A EQ PUSH2 0x7D6 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x7F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC5B37C22 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xC5B37C22 EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0xC5EC8970 EQ PUSH2 0x7A0 JUMPI DUP1 PUSH4 0xCB10F215 EQ PUSH2 0x7B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9CF69FA EQ PUSH2 0x731 JUMPI DUP1 PUSH4 0xBEAB7131 EQ PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x9D5773E0 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x9D5773E0 EQ PUSH2 0x6E6 JUMPI DUP1 PUSH4 0x9D82DD63 EQ PUSH2 0x6FC JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x71C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 EQ PUSH2 0x65F JUMPI DUP1 PUSH4 0x926D7D7F EQ PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x80AE1C28 EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0x84DB809F EQ PUSH2 0x5B7 JUMPI DUP1 PUSH4 0x8C0C2631 EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0x91C404AC EQ PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4603AE38 GT PUSH2 0x201 JUMPI DUP1 PUSH4 0x5C975ABB GT PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x780CF004 GT PUSH2 0x19A JUMPI DUP1 PUSH4 0x780CF004 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x7FEBE63F EQ PUSH2 0x54B JUMPI DUP1 PUSH4 0x802AABE8 EQ PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0x5E1FAB0F EQ PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4E056005 GT PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x4E056005 EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x50598719 EQ PUSH2 0x470 JUMPI DUP1 PUSH4 0x541D5548 EQ PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4603AE38 EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0x4B0B919D EQ PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x258 JUMPI DUP1 PUSH4 0x36568ABE GT PUSH2 0x23D JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0x3EE7094A EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0x4454B20D EQ PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x5E2CA17 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x17F03CE5 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x1FF013F1 EQ PUSH2 0x2F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C4F JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D2 PUSH2 0x2CD CALLDATASIZE PUSH1 0x4 PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2D36 JUMP JUMPDEST PUSH2 0xBAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x2D72 JUMP JUMPDEST PUSH2 0xD66 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x2DB4 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x36E CALLDATASIZE PUSH1 0x4 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x1423 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x38E CALLDATASIZE PUSH1 0x4 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x144F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B3 PUSH2 0x3AE CALLDATASIZE PUSH1 0x4 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x1502 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B6 SWAP2 SWAP1 PUSH2 0x2ECC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x3DB CALLDATASIZE PUSH1 0x4 PUSH2 0x2EDF JUMP JUMPDEST PUSH2 0x15A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x2F8D JUMP JUMPDEST PUSH2 0x1981 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x437 PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x2FED JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x46B CALLDATASIZE PUSH1 0x4 PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x1A32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C3 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x3021 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x4 DUP4 ADD SLOAD PUSH1 0x5 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x30B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x30DF JUMP JUMPDEST PUSH2 0x1A6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x2AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x526 CALLDATASIZE PUSH1 0x4 PUSH2 0x30DF JUMP JUMPDEST PUSH2 0x1ABA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x546 CALLDATASIZE PUSH1 0x4 PUSH2 0x30FC JUMP JUMPDEST PUSH2 0x1ADB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x314D JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x1B7D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5FA PUSH2 0x5D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DB4 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x318D JUMP JUMPDEST PUSH2 0x1B8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x65A CALLDATASIZE PUSH1 0x4 PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x1C20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x67A CALLDATASIZE PUSH1 0x4 PUSH2 0x2DEF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH32 0xE2B7FB3B832174769106DAEBCFD6D1970523240DDA11281102DB9363B83B0DC4 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x717 CALLDATASIZE PUSH1 0x4 PUSH2 0x30DF JUMP JUMPDEST PUSH2 0x1C99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x728 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x751 PUSH2 0x74C CALLDATASIZE PUSH1 0x4 PUSH2 0x2D36 JUMP JUMPDEST PUSH2 0x1DD2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B6 SWAP2 SWAP1 PUSH2 0x320C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x778 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x7D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x32A1 JUMP JUMPDEST PUSH2 0x1F62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x7F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x30DF JUMP JUMPDEST PUSH2 0x2034 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x811 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x2166 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x838 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x847 CALLDATASIZE PUSH1 0x4 PUSH2 0x32C1 JUMP JUMPDEST PUSH2 0x218D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x858 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x2291 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x8F4 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x96C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD CALLVALUE EQ PUSH2 0x9D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742066656520737570706C69656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0xA63 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265736F757263654944206E6F74206D617070656420746F2068616E646C6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0xFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP1 PUSH2 0xA8C SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x3352 JUMP JUMPDEST DUP3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH2 0x100 SWAP5 SWAP1 SWAP5 EXP DUP5 DUP2 MUL SWAP2 MUL NOT SWAP1 SWAP2 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xFF DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0xAD8 SWAP1 DUP6 DUP6 PUSH2 0x2AE9 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x38995DA900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x38995DA9 SWAP1 PUSH2 0xB37 SWAP1 DUP10 SWAP1 DUP12 SWAP1 DUP8 SWAP1 CALLER SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x33C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB65 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP7 DUP9 PUSH1 0xFF AND PUSH32 0xDBB69440DF8433824A026EF190652F29929EB64B4D1D5D2A69BE8AFE3E6EAED8 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBB6 PUSH2 0x24EB JUMP JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFF00 PUSH1 0x8 DUP4 SWAP1 SHL AND PUSH1 0xFF DUP5 AND OR PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x4 DUP1 DUP1 DUP4 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xBFE JUMPI PUSH2 0xBFE PUSH2 0x304B JUMP JUMPDEST EQ ISZERO PUSH2 0xC66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20616C72656164792063616E63656C6C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x5 DUP3 ADD SLOAD PUSH2 0xC79 SWAP1 NUMBER SWAP1 PUSH2 0x25BC JUMP JUMPDEST GT PUSH2 0xCE0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C206E6F7420617420657870697279207468726573686F6C64 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 OR SWAP1 SSTORE DUP2 SLOAD PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP8 AND SWAP2 PUSH1 0xFF DUP10 AND SWAP2 PUSH32 0x803C5A12F6BDE629CEA32E63D4B92D1B560816A6FB72E939D3C89E1CAB650417 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD6E PUSH2 0x25C8 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFF00 PUSH1 0x8 DUP5 SWAP1 SHL AND PUSH1 0xFF DUP6 AND OR PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE PUSH1 0x9 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE91 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F2068616E646C657220666F72207265736F75726365494400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x4 DUP1 DUP3 ADD SLOAD PUSH1 0x1 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP2 GT ISZERO PUSH2 0xEAF JUMPI PUSH2 0xEAF PUSH2 0x304B JUMP JUMPDEST GT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F706F73616C20616C7265616479207061737365642F6578656375746564 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2F63616E63656C6C656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x963 JUMP JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x72656C6179657220616C726561647920766F7465640000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x4 DUP1 DUP3 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xFEE JUMPI PUSH2 0xFEE PUSH2 0x304B JUMP JUMPDEST PUSH2 0x11B6 JUMPI PUSH1 0x5 PUSH1 0x0 DUP2 SLOAD PUSH2 0x1001 SWAP1 PUSH2 0x341E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP5 ADD DUP5 MSTORE SWAP2 SWAP3 DUP4 ADD SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP DUP2 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP5 MSTORE DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 DUP4 DUP6 ADD DUP2 SWAP1 MSTORE NUMBER PUSH1 0x60 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH9 0xFFFFFFFFFFFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0xB DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP9 DUP3 MSTORE DUP3 MSTORE DUP3 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE DUP5 DUP3 ADD MLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP4 ADD MLOAD DUP1 MLOAD PUSH2 0x10A6 SWAP3 PUSH1 0x2 DUP6 ADD SWAP3 ADD SWAP1 PUSH2 0x2B8B JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x10C2 SWAP2 PUSH1 0x3 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2B8B JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x10ED JUMPI PUSH2 0x10ED PUSH2 0x304B JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD SSTORE SWAP1 POP POP CALLER DUP2 PUSH1 0x2 ADD PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x1116 JUMPI PUSH2 0x1116 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH1 0xFF DUP11 AND SWAP2 PUSH32 0x803C5A12F6BDE629CEA32E63D4B92D1B560816A6FB72E939D3C89E1CAB650417 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x12AE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x5 DUP3 ADD SLOAD PUSH2 0x11C9 SWAP1 NUMBER SWAP1 PUSH2 0x25BC JUMP JUMPDEST GT ISZERO PUSH2 0x1201 JUMPI PUSH1 0x4 DUP2 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 OR SWAP1 SSTORE PUSH2 0x1167 JUMP JUMPDEST DUP1 PUSH1 0x1 ADD SLOAD DUP4 EQ PUSH2 0x126E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6461746168617368206D69736D61746368000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND CALLER OR SWAP1 SSTORE JUMPDEST PUSH1 0x4 DUP2 DUP2 ADD SLOAD PUSH1 0xFF AND DUP2 DUP2 GT ISZERO PUSH2 0x12C7 JUMPI PUSH2 0x12C7 PUSH2 0x304B JUMP JUMPDEST EQ PUSH2 0x141B JUMPI PUSH9 0xFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x4 DUP1 DUP3 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x133B JUMPI PUSH2 0x133B PUSH2 0x304B JUMP JUMPDEST DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH1 0xFF AND PUSH32 0x25F8DAAA4635A7729927BA3F5B3D59CC3320ACA7C32C9DB4E7CA7B9574343640 DUP8 PUSH1 0x40 MLOAD PUSH2 0x137B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 PUSH1 0x3 SLOAD GT ISZERO DUP1 PUSH2 0x139B JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x2 DUP3 ADD SLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x141B JUMPI PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x2 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH1 0xFF DUP11 AND SWAP2 PUSH32 0x803C5A12F6BDE629CEA32E63D4B92D1B560816A6FB72E939D3C89E1CAB650417 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1440 DUP2 CALLER PUSH2 0x2660 JUMP JUMPDEST PUSH2 0x144A DUP4 DUP4 PUSH2 0x2732 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x14F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x963 JUMP JUMPDEST PUSH2 0x14FE DUP3 DUP3 PUSH2 0x27F1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1526 SWAP1 PUSH2 0x34B5 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 0x1552 SWAP1 PUSH2 0x34B5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x159F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1574 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x159F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1582 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x15AF PUSH2 0x25C8 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x161C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 PUSH9 0xFFFFFFFFFFFFFFFF00 PUSH1 0x8 DUP10 SWAP1 SHL AND PUSH1 0xFF DUP11 AND OR SWAP3 SWAP1 SWAP2 PUSH2 0x1671 SWAP2 DUP6 SWAP2 DUP10 SWAP2 DUP10 SWAP2 ADD PUSH2 0x3509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH9 0xFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP2 KECCAK256 DUP3 DUP3 MSTORE SWAP1 SWAP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP1 SWAP3 POP SWAP1 PUSH1 0x4 DUP1 DUP4 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x16E5 JUMPI PUSH2 0x16E5 PUSH2 0x304B JUMP JUMPDEST EQ ISZERO PUSH2 0x174D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F706F73616C206973206E6F742061637469766500000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x4 DUP1 DUP4 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x1768 JUMPI PUSH2 0x1768 PUSH2 0x304B JUMP JUMPDEST EQ PUSH2 0x17CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F706F73616C20616C7265616479207472616E7366657272656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST DUP1 PUSH1 0x1 ADD SLOAD DUP3 EQ PUSH2 0x183C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6461746120646F65736E2774206D617463682064617461686173680000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x3 OR SWAP1 SSTORE DUP2 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH32 0xE248CFF200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 DUP4 SWAP3 PUSH4 0xE248CFF2 SWAP3 PUSH2 0x18D1 SWAP3 DUP14 SWAP2 DUP14 SWAP2 ADD PUSH2 0x3548 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x4 DUP1 DUP5 ADD SLOAD PUSH1 0xFF AND SWAP2 POP DUP2 GT ISZERO PUSH2 0x191C JUMPI PUSH2 0x191C PUSH2 0x304B JUMP JUMPDEST DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP12 PUSH1 0xFF AND PUSH32 0x803C5A12F6BDE629CEA32E63D4B92D1B560816A6FB72E939D3C89E1CAB650417 DUP6 PUSH1 0x0 ADD SLOAD DUP7 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x196D SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1989 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A2B JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x19A6 JUMPI PUSH2 0x19A6 PUSH2 0x3486 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x19BB SWAP2 SWAP1 PUSH2 0x30DF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0x19E6 JUMPI PUSH2 0x19E6 PUSH2 0x3486 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1A18 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP DUP1 PUSH2 0x1A23 DUP2 PUSH2 0x341E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x198C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A3A PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0xA20D6B84CD798A24038BE305EFF8A45CA82EF54A2AA2082005D8E14C0A4746C8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x8F4 JUMP JUMPDEST PUSH2 0x1AC2 PUSH2 0x28AC JUMP JUMPDEST PUSH2 0x1ACD PUSH1 0x0 DUP3 PUSH2 0x1423 JUMP JUMPDEST PUSH2 0x1AD8 PUSH1 0x0 CALLER PUSH2 0x144F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1AE3 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD9CAED1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE DUP6 SWAP2 SWAP1 DUP3 AND SWAP1 PUSH4 0xD9CAED12 SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B85 PUSH2 0x28AC JUMP JUMPDEST PUSH2 0x1B8D PUSH2 0x2944 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B97 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7B7ED9900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 SWAP2 SWAP1 DUP3 AND SWAP1 PUSH4 0x7B7ED99 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C28 PUSH2 0x28AC JUMP JUMPDEST DUP1 PUSH1 0x6 SLOAD EQ ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43757272656E742066656520697320657175616C20746F206E65772066656500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH2 0x1CA1 PUSH2 0x28AC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1D4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6164647220646F65736E277420686176652072656C6179657220726F6C652100 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH2 0x1D79 PUSH32 0xE2B7FB3B832174769106DAEBCFD6D1970523240DDA11281102DB9363B83B0DC4 DUP3 PUSH2 0x2166 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x10E1F7CE9FD7D1B90A66D13A2AB3CB8DD7F29F3F8D520B143B063CCFBAB6906B SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x1DCA DUP4 PUSH2 0x356B JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP5 DUP7 ADD DUP2 SWAP1 MSTORE DUP1 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH1 0x8 DUP9 SWAP1 SHL PUSH9 0xFFFFFFFFFFFFFFFF00 AND OR DUP1 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP6 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP6 SWAP1 KECCAK256 DUP6 MLOAD SWAP4 DUP5 ADD DUP7 MSTORE DUP1 SLOAD DUP5 MSTORE PUSH1 0x1 DUP2 ADD SLOAD DUP5 DUP4 ADD MSTORE PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP8 MLOAD DUP2 DUP6 MUL DUP2 ADD DUP6 ADD DUP10 MSTORE DUP2 DUP2 MSTORE SWAP7 SWAP8 SWAP5 SWAP7 SWAP3 SWAP5 DUP7 ADD SWAP4 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1EA3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1E78 JUMPI JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD DUP1 SLOAD DUP1 PUSH1 0x20 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 DUP1 ISZERO PUSH2 0x1F12 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1EE7 JUMPI JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x4 DUP3 DUP2 ADD SLOAD PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x1F39 JUMPI PUSH2 0x1F39 PUSH2 0x304B JUMP JUMPDEST PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1F4A JUMPI PUSH2 0x1F4A PUSH2 0x304B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1F6A PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD PUSH32 0xB8FA373600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP5 SWAP2 SWAP1 PUSH4 0xB8FA3736 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2016 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x202A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x203C PUSH2 0x28AC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x20EB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6164647220616C7265616479206861732072656C6179657220726F6C65210000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH2 0x2115 PUSH32 0xE2B7FB3B832174769106DAEBCFD6D1970523240DDA11281102DB9363B83B0DC4 DUP3 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x3580EE9F53A62B7CB409A2CB56F9BE87747DD15017AFC5CEF6EEF321E4FB2C5 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x1DCA DUP4 PUSH2 0x341E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x2183 DUP2 CALLER PUSH2 0x2660 JUMP JUMPDEST PUSH2 0x144A DUP4 DUP4 PUSH2 0x27F1 JUMP JUMPDEST PUSH2 0x2195 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD PUSH32 0xBBA8185A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP1 DUP6 AND PUSH1 0x44 DUP4 ADD MSTORE DUP4 AND PUSH1 0x64 DUP3 ADD MSTORE DUP7 SWAP2 SWAP1 PUSH4 0xBBA8185A SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2285 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2299 PUSH2 0x28AC JUMP JUMPDEST PUSH2 0x1B8D PUSH2 0x2A2E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x22B0 DUP4 PUSH1 0x2 PUSH2 0x35A0 JUMP JUMPDEST PUSH2 0x22BB SWAP1 PUSH1 0x2 PUSH2 0x35DD JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x22D3 JUMPI PUSH2 0x22D3 PUSH2 0x3457 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x22FD JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2334 JUMPI PUSH2 0x2334 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2397 JUMPI PUSH2 0x2397 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x23D3 DUP5 PUSH1 0x2 PUSH2 0x35A0 JUMP JUMPDEST PUSH2 0x23DE SWAP1 PUSH1 0x1 PUSH2 0x35DD JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x247B JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x241F JUMPI PUSH2 0x241F PUSH2 0x3486 JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2435 JUMPI PUSH2 0x2435 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x2474 DUP2 PUSH2 0x356B JUMP JUMPDEST SWAP1 POP PUSH2 0x23E1 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x24E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xA6EEF7E35ABE7026729641147F7915573C7E97B47EFA546F5F6E3230263BCB49 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x2556 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1B8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F742072656C61796572206F722061646D696E0000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24E4 DUP3 DUP5 PUSH2 0x35F5 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1B8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E64657220646F65736E277420686176652072656C6179657220726F6C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x14FE JUMPI PUSH2 0x26B8 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x26C3 DUP4 PUSH1 0x20 PUSH2 0x22A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x26D4 SWAP3 SWAP2 SWAP1 PUSH2 0x360C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH2 0x963 SWAP2 PUSH1 0x4 ADD PUSH2 0x2ECC JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x14FE JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP1 DUP7 MSTORE SWAP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE SWAP1 MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x14FE JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xA6EEF7E35ABE7026729641147F7915573C7E97B47EFA546F5F6E3230263BCB49 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1B8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E64657220646F65736E277420686176652061646D696E20726F6C650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x29B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x2A04 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x2A9A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER PUSH2 0x2A04 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2AF5 SWAP1 PUSH2 0x34B5 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2B17 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2B7B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2B4E JUMPI DUP3 DUP1 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x2B7B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2B7B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2B7B JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2B60 JUMP JUMPDEST POP PUSH2 0x2B87 SWAP3 SWAP2 POP PUSH2 0x2C05 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2B7B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2B7B JUMPI DUP3 MLOAD DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2BAB JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2B87 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2C06 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24E4 DUP3 PUSH2 0x2C1A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2C8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2CA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2CBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2CDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CE3 DUP6 PUSH2 0x2C6A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2D06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D12 DUP8 DUP3 DUP9 ADD PUSH2 0x2C7B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D54 DUP5 PUSH2 0x2C6A JUMP JUMPDEST SWAP3 POP PUSH2 0x2D62 PUSH1 0x20 DUP6 ADD PUSH2 0x2D1E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2D88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D91 DUP6 PUSH2 0x2C6A JUMP JUMPDEST SWAP4 POP PUSH2 0x2D9F PUSH1 0x20 DUP7 ADD PUSH2 0x2D1E JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E14 DUP2 PUSH2 0x2DCD JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E3B DUP4 PUSH2 0x2D1E JUMP JUMPDEST SWAP2 POP PUSH2 0x2E49 PUSH1 0x20 DUP5 ADD PUSH2 0x2C6A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E6D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E55 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2E7C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2E9A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E52 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x24E4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2E82 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2EF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F00 DUP7 PUSH2 0x2C6A JUMP JUMPDEST SWAP5 POP PUSH2 0x2F0E PUSH1 0x20 DUP8 ADD PUSH2 0x2D1E JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F36 DUP9 DUP3 DUP10 ADD PUSH2 0x2C7B JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP7 PUSH1 0x60 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2F5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2FA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2FBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FC7 DUP9 DUP4 DUP10 ADD PUSH2 0x2F48 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2FE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D12 DUP8 DUP3 DUP9 ADD PUSH2 0x2F48 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24E4 DUP3 PUSH2 0x2C6A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH9 0xFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303D DUP4 PUSH2 0x3008 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x5 DUP2 LT PUSH2 0x30B1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 MSTORE JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x30D0 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x307A JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x24E4 DUP2 PUSH2 0x2DCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3112 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x311D DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x312D DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x313D DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x316B DUP5 PUSH2 0x3008 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3182 DUP2 PUSH2 0x2DCD JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x31A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x31AB DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E14 DUP2 PUSH2 0x2DCD JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3201 JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x31CF JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x323C PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x31BB JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP5 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP5 DUP4 SUB ADD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x3277 DUP3 DUP3 PUSH2 0x31BB JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 DUP5 ADD MLOAD PUSH2 0x328C PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x307A JUMP JUMPDEST POP PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x32B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x316B DUP2 PUSH2 0x2DCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x32D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x32E4 DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x32FB DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP3 POP PUSH2 0x3309 PUSH1 0x60 DUP8 ADD PUSH2 0x2C1A JUMP JUMPDEST SWAP2 POP PUSH2 0x3317 PUSH1 0x80 DUP8 ADD PUSH2 0x2C1A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 EQ ISZERO PUSH2 0x3370 JUMPI PUSH2 0x3370 PUSH2 0x3323 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP7 DUP2 MSTORE PUSH1 0xFF DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x3412 PUSH1 0xA0 DUP4 ADD DUP5 DUP7 PUSH2 0x337A JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3450 JUMPI PUSH2 0x3450 PUSH2 0x3323 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x34C9 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x3503 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP5 PUSH1 0x60 SHL AND DUP2 MSTORE DUP2 DUP4 PUSH1 0x14 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 ADD PUSH1 0x14 ADD SWAP1 DUP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x3562 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x337A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x357A JUMPI PUSH2 0x357A PUSH2 0x3323 JUMP JUMPDEST POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x35D8 JUMPI PUSH2 0x35D8 PUSH2 0x3323 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x35F0 JUMPI PUSH2 0x35F0 PUSH2 0x3323 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3607 JUMPI PUSH2 0x3607 PUSH2 0x3323 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x3644 DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2E52 JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x3681 DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2E52 JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xDB 0xE 0xA9 PUSH31 0x34C099DBA75C931FD443E06AD9B83A5E4A196F8C0E6041A308AEEA64736F6C PUSH4 0x43000809 STOP CALLER 0xE2 0xB7 0xFB EXTCODESIZE DUP4 0x21 PUSH21 0x769106DAEBCFD6D1970523240DDA11281102DB9363 0xB8 EXTCODESIZE 0xD 0xC4 ",
                            "sourceMap": "540:18623:37:-:0;;;3631:570;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;935:5:6;925:15;;-1:-1:-1;;925:15:6;;;;;3810:8:37;:18;;;;;925:15:6;3810:18:37;;;;;3838:17;:43;;;3891:4;:10;;;3911:7;:16;;;3938:42;;3969:10;3938;:42::i;:::-;3990:47;-1:-1:-1;;;;;;;;;;;2439:4:4;3990:13:37;:47::i;:::-;4053:9;4048:147;4068:15;:22;4064:1;:26;4048:147;;;4111:43;-1:-1:-1;;;;;;;;;;;4135:15:37;4151:1;4135:18;;;;;;;;:::i;:::-;;;;;;;4111:9;;;:43;;:::i;:::-;4168:14;:16;;;:14;:16;;;:::i;:::-;;;;;;4092:3;;;;;:::i;:::-;;;;4048:147;;;;3631:570;;;;;540:18623;;7515:110:4;7593:25;7604:4;7610:7;7593:10;:25::i;:::-;7515:110;;:::o;7750:192::-;5414:7;5440:12;;;:6;:12;;;;;;;;:22;;7881:9;;7838:53;;7855:4;;7838:53;;;;;7901:12;;;;:6;:12;;;;;;;;:22;;;:34;7750:192::o;5719:145::-;5414:7;5440:12;;;:6;:12;;;;;;;;:22;;3958:30;3969:4;665:10:12;3958::4;:30::i;:::-;5832:25:::1;5843:4:::0;5849:7;5832:10:::1;:25::i;:::-;5719:145:::0;;;:::o;7948:224::-;4452:4;4475:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;4475:29:4;;;;;;;;;;;;8017:149;;8060:12;;;;8092:4;8060:12;;;;;;;;-1:-1:-1;;;;;8060:29:4;;;;;;;;;;:36;;-1:-1:-1;;8060:36:4;;;;;;;8115:40;;665:10:12;;8060:12:4;;8115:40;;8060:12;8115:40;7948:224;;:::o;4792:375::-;4452:4;4475:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;4475:29:4;;;;;;;;;;;;4867:294;;5000:41;5028:7;-1:-1:-1;;;;;5000:41:4;5038:2;5000:19;;;;;:41;;:::i;:::-;5096:38;5124:4;5131:2;5096:19;;;;;:38;;:::i;:::-;4923:225;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4923:225:4;;;;;;;;;;-1:-1:-1;;;4909:241:4;;;;;;;:::i;:::-;;;;;;;;1531:437:13;1606:13;1631:19;1663:10;1667:6;1663:1;:10;:::i;:::-;:14;;1676:1;1663:14;:::i;:::-;-1:-1:-1;;;;;1653:25:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1653:25:13;;1631:47;;-1:-1:-1;;;1688:6:13;1695:1;1688:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1688:15:13;;;;;;;;;-1:-1:-1;;;1713:6:13;1720:1;1713:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;1713:15:13;;;;;;;;-1:-1:-1;1743:9:13;1755:10;1759:6;1755:1;:10;:::i;:::-;:14;;1768:1;1755:14;:::i;:::-;1743:26;;1738:128;1775:1;1771;:5;1738:128;;;-1:-1:-1;;;1818:5:13;1826:3;1818:11;1809:21;;;;;;;:::i;:::-;;;;1797:6;1804:1;1797:9;;;;;;;;:::i;:::-;;;;:33;-1:-1:-1;;;;;1797:33:13;;;;;;;;-1:-1:-1;1854:1:13;1844:11;;;;;1778:3;;;:::i;:::-;;;1738:128;;;-1:-1:-1;1883:10:13;;1875:55;;;;-1:-1:-1;;;1875:55:13;;4292:2:66;1875:55:13;;;4274:21:66;;;4311:18;;;4304:30;4370:34;4350:18;;;4343:62;4422:18;;1875:55:13;4090:356:66;1875:55:13;1954:6;1531:437;-1:-1:-1;;;1531:437:13:o;14:127:66:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:177;225:13;;-1:-1:-1;;;;;267:31:66;;257:42;;247:70;;313:1;310;303:12;247:70;146:177;;;:::o;328:1464::-;457:6;465;473;481;489;542:3;530:9;521:7;517:23;513:33;510:53;;;559:1;556;549:12;510:53;591:9;585:16;641:4;634:5;630:16;623:5;620:27;610:55;;661:1;658;651:12;610:55;708:2;739:18;;;733:25;684:5;;-1:-1:-1;708:2:66;-1:-1:-1;;;;;807:14:66;;;804:34;;;834:1;831;824:12;804:34;872:6;861:9;857:22;847:32;;917:7;910:4;906:2;902:13;898:27;888:55;;939:1;936;929:12;888:55;968:2;962:9;990:2;986;983:10;980:36;;;996:18;;:::i;:::-;1042:2;1039:1;1035:10;1074:2;1068:9;1137:2;1133:7;1128:2;1124;1120:11;1116:25;1108:6;1104:38;1192:6;1180:10;1177:22;1172:2;1160:10;1157:18;1154:46;1151:72;;;1203:18;;:::i;:::-;1239:2;1232:22;1289:18;;;1323:15;;;;-1:-1:-1;1365:11:66;;;1361:20;;;1393:19;;;1390:39;;;1425:1;1422;1415:12;1390:39;1449:11;;;;1469:159;1485:6;1480:3;1477:15;1469:159;;;1551:34;1581:3;1551:34;:::i;:::-;1539:47;;1502:12;;;;1606;;;;1469:159;;;1693:2;1678:18;;1672:25;1737:2;1722:18;;1716:25;1781:3;1766:19;;;1760:26;328:1464;;1647:6;;-1:-1:-1;1672:25:66;1716;1760:26;-1:-1:-1;328:1464:66;-1:-1:-1;;;;;;;;328:1464:66:o;1797:127::-;1858:10;1853:3;1849:20;1846:1;1839:31;1889:4;1886:1;1879:15;1913:4;1910:1;1903:15;1929:127;1990:10;1985:3;1981:20;1978:1;1971:31;2021:4;2018:1;2011:15;2045:4;2042:1;2035:15;2061:135;2100:3;-1:-1:-1;;2121:17:66;;2118:43;;;2141:18;;:::i;:::-;-1:-1:-1;2188:1:66;2177:13;;2061:135::o;2201:258::-;2273:1;2283:113;2297:6;2294:1;2291:13;2283:113;;;2373:11;;;2367:18;2354:11;;;2347:39;2319:2;2312:10;2283:113;;;2414:6;2411:1;2408:13;2405:48;;;2449:1;2440:6;2435:3;2431:16;2424:27;2405:48;;2201:258;;;:::o;2464:786::-;2875:25;2870:3;2863:38;2845:3;2930:6;2924:13;2946:62;3001:6;2996:2;2991:3;2987:12;2980:4;2972:6;2968:17;2946:62;:::i;:::-;-1:-1:-1;;;3067:2:66;3027:16;;;3059:11;;;3052:40;3117:13;;3139:63;3117:13;3188:2;3180:11;;3173:4;3161:17;;3139:63;:::i;:::-;3222:17;3241:2;3218:26;;2464:786;-1:-1:-1;;;;2464:786:66:o;3255:383::-;3404:2;3393:9;3386:21;3367:4;3436:6;3430:13;3479:6;3474:2;3463:9;3459:18;3452:34;3495:66;3554:6;3549:2;3538:9;3534:18;3529:2;3521:6;3517:15;3495:66;:::i;:::-;3622:2;3601:15;-1:-1:-1;;3597:29:66;3582:45;;;;3629:2;3578:54;;3255:383;-1:-1:-1;;3255:383:66:o;3643:168::-;3683:7;3749:1;3745;3741:6;3737:14;3734:1;3731:21;3726:1;3719:9;3712:17;3708:45;3705:71;;;3756:18;;:::i;:::-;-1:-1:-1;3796:9:66;;3643:168::o;3816:128::-;3856:3;3887:1;3883:6;3880:1;3877:13;3874:39;;;3893:18;;:::i;:::-;-1:-1:-1;3929:9:66;;3816:128::o;3949:136::-;3988:3;4016:5;4006:39;;4025:18;;:::i;:::-;-1:-1:-1;;;4061:18:66;;3949:136::o;4090:356::-;540:18623:37;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@DEFAULT_ADMIN_ROLE_317": {
                                    "entryPoint": null,
                                    "id": 317,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@RELAYER_ROLE_6014": {
                                    "entryPoint": null,
                                    "id": 6014,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_chainID_5901": {
                                    "entryPoint": null,
                                    "id": 5901,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_checkRole_441": {
                                    "entryPoint": 9824,
                                    "id": 441,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_depositCounts_5940": {
                                    "entryPoint": null,
                                    "id": 5940,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_depositRecords_5950": {
                                    "entryPoint": 5378,
                                    "id": 5950,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_expiry_5911": {
                                    "entryPoint": null,
                                    "id": 5911,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_fee_5909": {
                                    "entryPoint": null,
                                    "id": 5909,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_grantRole_588": {
                                    "entryPoint": 10034,
                                    "id": 588,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_hasVotedOnProposal_5965": {
                                    "entryPoint": null,
                                    "id": 5965,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_onlyAdminOrRelayer_6054": {
                                    "entryPoint": 9451,
                                    "id": 6054,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_onlyAdmin_6067": {
                                    "entryPoint": 10412,
                                    "id": 6067,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_onlyRelayers_6080": {
                                    "entryPoint": 9672,
                                    "id": 6080,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_pause_804": {
                                    "entryPoint": 10564,
                                    "id": 804,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_proposals_5957": {
                                    "entryPoint": null,
                                    "id": 5957,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_relayerThreshold_5903": {
                                    "entryPoint": null,
                                    "id": 5903,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_resourceIDToHandlerAddress_5944": {
                                    "entryPoint": null,
                                    "id": 5944,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_revokeRole_618": {
                                    "entryPoint": 10225,
                                    "id": 618,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_totalProposals_5907": {
                                    "entryPoint": null,
                                    "id": 5907,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_totalRelayers_5905": {
                                    "entryPoint": null,
                                    "id": 5905,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_unpause_820": {
                                    "entryPoint": 10798,
                                    "id": 820,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@adminAddRelayer_6246": {
                                    "entryPoint": 8244,
                                    "id": 6246,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@adminChangeFee_6426": {
                                    "entryPoint": 7200,
                                    "id": 6426,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@adminChangeRelayerThreshold_6216": {
                                    "entryPoint": 6706,
                                    "id": 6216,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@adminPauseTransfers_6189": {
                                    "entryPoint": 7037,
                                    "id": 6189,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@adminRemoveRelayer_6275": {
                                    "entryPoint": 7321,
                                    "id": 6275,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@adminSetBurnable_6371": {
                                    "entryPoint": 7055,
                                    "id": 6371,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@adminSetGenericResource_6347": {
                                    "entryPoint": 8589,
                                    "id": 6347,
                                    "parameterSlots": 5,
                                    "returnSlots": 0
                                },
                                "@adminSetResource_6308": {
                                    "entryPoint": 8034,
                                    "id": 6308,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@adminUnpauseTransfers_6199": {
                                    "entryPoint": 8849,
                                    "id": 6199,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@adminWithdraw_6456": {
                                    "entryPoint": 6875,
                                    "id": 6456,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@cancelProposal_6838": {
                                    "entryPoint": 2990,
                                    "id": 6838,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@deposit_6532": {
                                    "entryPoint": 2298,
                                    "id": 6532,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@executeProposal_6957": {
                                    "entryPoint": 5543,
                                    "id": 6957,
                                    "parameterSlots": 5,
                                    "returnSlots": 0
                                },
                                "@getProposal_6406": {
                                    "entryPoint": 7634,
                                    "id": 6406,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@getRoleAdmin_456": {
                                    "entryPoint": null,
                                    "id": 456,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@grantRole_476": {
                                    "entryPoint": 5155,
                                    "id": 476,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@hasRole_398": {
                                    "entryPoint": null,
                                    "id": 398,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@isRelayer_6159": {
                                    "entryPoint": 6765,
                                    "id": 6159,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@paused_765": {
                                    "entryPoint": null,
                                    "id": 765,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@renounceAdmin_6179": {
                                    "entryPoint": 6842,
                                    "id": 6179,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@renounceRole_519": {
                                    "entryPoint": 5199,
                                    "id": 519,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@revokeRole_496": {
                                    "entryPoint": 8550,
                                    "id": 496,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@sub_2404": {
                                    "entryPoint": 9660,
                                    "id": 2404,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@supportsInterface_2200": {
                                    "entryPoint": null,
                                    "id": 2200,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@supportsInterface_379": {
                                    "entryPoint": 2145,
                                    "id": 379,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@toHexString_2176": {
                                    "entryPoint": 8865,
                                    "id": 2176,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@transferFunds_6992": {
                                    "entryPoint": 6529,
                                    "id": 6992,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@voteProposal_6762": {
                                    "entryPoint": 3430,
                                    "id": 6762,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "abi_decode_array_address_payable_dyn_calldata": {
                                    "entryPoint": 12104,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_bytes4": {
                                    "entryPoint": 11290,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_bytes_calldata": {
                                    "entryPoint": 11387,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 12511,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_payable": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_address": {
                                    "entryPoint": 12685,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_addresst_addresst_uint256": {
                                    "entryPoint": 12540,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 4
                                },
                                "abi_decode_tuple_t_addresst_bytes32t_address": {
                                    "entryPoint": 12961,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_addresst_bytes32t_addresst_bytes4t_bytes4": {
                                    "entryPoint": 12993,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 5
                                },
                                "abi_decode_tuple_t_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr": {
                                    "entryPoint": 12173,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 4
                                },
                                "abi_decode_tuple_t_bytes32": {
                                    "entryPoint": 11700,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32t_address": {
                                    "entryPoint": 11759,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_bytes4": {
                                    "entryPoint": 11343,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64t_uint8": {
                                    "entryPoint": 11807,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_uint72t_bytes32": {
                                    "entryPoint": 12321,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_uint72t_bytes32t_address": {
                                    "entryPoint": 12621,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_uint8": {
                                    "entryPoint": 12269,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint8t_bytes32t_bytes_calldata_ptr": {
                                    "entryPoint": 11460,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 4
                                },
                                "abi_decode_tuple_t_uint8t_uint64t_bytes32": {
                                    "entryPoint": 11574,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_uint8t_uint64t_bytes32t_bytes32": {
                                    "entryPoint": 11634,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 4
                                },
                                "abi_decode_tuple_t_uint8t_uint64t_bytes_calldata_ptrt_bytes32": {
                                    "entryPoint": 11999,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 5
                                },
                                "abi_decode_uint64": {
                                    "entryPoint": 11550,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint72": {
                                    "entryPoint": 12296,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint8": {
                                    "entryPoint": 11370,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_array_address_dyn": {
                                    "entryPoint": 12731,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_bytes": {
                                    "entryPoint": 11906,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_bytes_calldata": {
                                    "entryPoint": 13178,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_enum_ProposalStatus": {
                                    "entryPoint": 12410,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_tuple_packed_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 13577,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 13836,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_address_t_bytes4_t_bytes4__to_t_bytes32_t_address_t_bytes4_t_bytes4__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_bytes32_t_enum$_ProposalStatus_$5920_t_uint256__to_t_bytes32_t_bytes32_t_uint8_t_uint256__fromStack_reversed": {
                                    "entryPoint": 12469,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 13640,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_calldata_ptr__to_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 13251,
                                    "id": null,
                                    "parameterSlots": 7,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 11980,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_00b04c534306f551d2ead1f9f63f0158b74c6c6e51741a5b803ded09eea1e088__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_013e8b17787a426ffc75241aa23815a5265a074b42d8838ecebf3970339f42f4__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_37d86f109f909109dc6877be2d485881af52bdb007799914a63fc66c911a84aa__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_e3209b3b3221a11cdef33af435affcc74bff38eb4aaafc629c451edb5bb6cf58__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_Proposal_$5936_memory_ptr__to_t_struct$_Proposal_$5936_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 12812,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 13789,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_mul_t_uint256": {
                                    "entryPoint": 13728,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_uint256": {
                                    "entryPoint": 13813,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 11858,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "decrement_t_uint256": {
                                    "entryPoint": 13675,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 13493,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "increment_t_uint256": {
                                    "entryPoint": 13342,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "increment_t_uint64": {
                                    "entryPoint": 13138,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 13091,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x21": {
                                    "entryPoint": 12363,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x32": {
                                    "entryPoint": 13446,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 13399,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_address": {
                                    "entryPoint": 11725,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:27173:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "62:171:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "72:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "94:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "81:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "81:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "72:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "211:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "220:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "223:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "213:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "213:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "213:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "123:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "134:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "141:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "130:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "130:78:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "120:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "120:89:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "113:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "113:97:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "110:117:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_bytes4",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "41:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "52:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:219:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "307:115:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "353:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "362:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "365:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "355:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "355:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "355:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "328:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "337:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "324:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "324:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "349:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "320:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "320:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "317:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "378:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "406:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_bytes4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "388:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "388:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "378:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes4",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "273:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "284:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "296:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "238:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "522:92:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "532:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "544:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "555:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "540:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "540:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "532:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "574:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "599:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "592:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "592:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "585:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "585:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "567:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "567:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "567:41:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "491:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "502:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "513:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "427:187:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "666:109:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "676:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "698:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "685:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "685:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "676:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "753:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "762:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "765:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "755:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "755:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "755:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "727:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "738:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "745:4:66",
                                                                                        "type": "",
                                                                                        "value": "0xff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "734:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "734:16:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "724:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "724:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "717:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "717:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "714:55:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint8",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "645:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "656:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "619:156:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "852:275:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "901:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "910:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "913:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "903:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "903:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "903:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "880:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "888:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "876:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "876:17:66"
                                                                            },
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "895:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "872:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "872:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "865:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "865:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "862:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "926:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "949:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "936:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "936:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "926:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "999:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1008:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1011:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1001:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1001:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1001:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "971:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "979:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "968:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "968:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "965:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1024:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1040:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1048:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1036:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1036:17:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "arrayPos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1024:8:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1105:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1114:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1117:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1107:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1107:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1107:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1076:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1084:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1072:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1072:19:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1093:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1068:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1068:30:66"
                                                                    },
                                                                    {
                                                                        "name": "end",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1100:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1065:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1065:39:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1062:59:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_bytes_calldata",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "815:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "823:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "arrayPos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "831:8:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "841:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "780:347:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1253:426:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1299:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1308:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1311:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1301:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1301:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1301:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1274:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1283:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1270:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1270:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1295:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1266:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1266:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1263:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1324:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1351:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1334:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1334:27:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1324:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1370:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1397:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1408:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1393:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1393:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1380:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1380:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1370:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1421:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1452:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1463:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1448:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1448:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1435:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1435:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1425:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1510:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1519:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1522:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1512:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1512:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1512:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1482:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1490:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1479:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1479:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1476:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1535:84:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1591:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1602:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1587:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1587:22:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1611:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_bytes_calldata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1561:25:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1561:58:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value2_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1539:8:66",
                                                                    "type": ""
                                                                },
                                                                {
                                                                    "name": "value3_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1549:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1628:18:66",
                                                            "value": {
                                                                "name": "value2_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1638:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1628:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1655:18:66",
                                                            "value": {
                                                                "name": "value3_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1665:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1655:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint8t_bytes32t_bytes_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1195:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1206:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1218:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1226:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1234:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1242:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1132:547:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1732:123:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1742:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1764:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1751:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1751:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1742:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1833:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1842:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1845:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1835:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1835:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1835:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1793:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1804:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1811:18:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1800:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1800:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1790:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1790:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1783:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1783:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1780:69:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1711:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1722:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1684:171:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1961:221:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2007:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2016:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2019:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2009:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2009:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2009:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1982:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1991:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1978:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1978:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2003:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1974:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1974:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1971:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2032:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2059:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2042:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2042:27:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2032:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2078:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2110:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2121:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2106:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2106:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2088:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2088:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2078:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2134:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2161:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2172:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2157:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2157:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2144:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2144:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2134:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint8t_uint64t_bytes32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1911:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1922:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1934:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1942:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1950:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1860:322:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2305:273:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2352:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2361:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2364:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2354:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2354:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2354:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2326:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2335:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2322:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2322:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2347:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2318:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2318:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2315:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2377:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2404:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2387:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2387:27:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2377:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2423:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2455:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2466:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2451:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2451:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2433:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2433:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2423:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2479:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2506:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2517:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2502:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2502:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2489:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2489:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2479:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2530:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2557:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2568:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2553:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2553:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2540:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2540:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2530:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint8t_uint64t_bytes32t_bytes32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2247:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2258:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2270:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2278:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2286:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2294:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2187:391:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2653:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2699:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2708:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2711:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2701:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2701:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2701:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2674:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2683:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2670:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2670:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2695:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2666:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2666:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2663:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2724:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2747:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2734:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2734:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2724:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2619:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2630:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2642:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2583:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2869:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2879:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2891:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2902:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2887:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2887:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2879:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2921:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2932:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2914:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2914:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2914:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2838:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2849:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2860:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2768:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2995:109:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3082:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3091:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3094:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3084:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3084:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3084:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3018:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3029:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3036:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3025:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3025:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3015:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3015:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3008:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3008:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3005:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2984:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2950:154:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3196:228:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3242:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3251:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3254:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3244:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3244:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3244:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3217:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3226:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3213:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3213:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3238:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3209:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3209:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3206:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3267:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3290:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3277:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3277:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3267:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3309:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3339:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3350:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3335:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3335:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3322:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3322:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3313:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3388:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3363:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3363:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3363:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3403:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3413:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3403:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3154:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3165:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3177:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3185:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3109:315:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3513:170:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3559:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3568:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3571:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3561:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3561:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3561:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3534:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3543:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3530:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3530:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3555:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3526:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3526:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3523:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3584:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3612:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3594:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3594:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3584:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3631:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3662:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3673:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3658:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3658:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3641:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3641:36:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3631:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64t_uint8",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3471:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3482:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3494:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3502:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3429:254:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3741:205:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3751:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3760:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3755:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3820:63:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3845:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3850:1:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3841:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3841:11:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3864:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3869:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3860:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "3860:11:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3854:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3854:18:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3834:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3834:39:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3834:39:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3781:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3784:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3778:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3778:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3792:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "3794:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3803:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3806:2:66",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3799:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3799:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3794:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3774:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "3770:113:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3909:31:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3922:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3927:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3918:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3918:16:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3936:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3911:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3911:27:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3911:27:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3898:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3901:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3895:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3895:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3892:48:66"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3719:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3724:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3729:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3688:258:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4000:267:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4010:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4030:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4024:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4024:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4014:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4052:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4057:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4045:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4045:19:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4045:19:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4099:5:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4106:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4095:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4095:16:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4117:3:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4122:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4113:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4113:14:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4129:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4073:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4073:63:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4073:63:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4145:116:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4160:3:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4173:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "4181:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4169:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4169:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4186:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4165:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4165:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4156:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4156:98:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4256:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4152:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4152:109:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4145:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_bytes",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3977:5:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3984:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3992:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3951:316:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4391:98:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4408:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4419:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4401:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4401:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4401:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4431:52:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4456:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4468:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4479:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4464:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4464:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4439:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4439:44:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4431:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4360:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4371:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4382:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4272:217:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4631:483:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4678:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4687:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4690:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4680:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4680:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4680:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4652:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4661:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4648:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4648:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4673:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4644:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4644:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4641:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4703:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4730:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4713:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4713:27:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4703:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4749:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4781:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4792:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4777:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4777:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4759:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4759:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4749:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4805:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4836:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4847:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4832:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4832:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4819:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4819:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4809:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4894:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4903:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4906:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4896:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4896:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4896:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4866:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4874:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4863:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4863:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4860:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4919:84:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4975:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4986:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4971:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4971:22:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4995:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_bytes_calldata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4945:25:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4945:58:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value2_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4923:8:66",
                                                                    "type": ""
                                                                },
                                                                {
                                                                    "name": "value3_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4933:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5012:18:66",
                                                            "value": {
                                                                "name": "value2_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5022:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5012:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5039:18:66",
                                                            "value": {
                                                                "name": "value3_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5049:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5039:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5066:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5093:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5104:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5089:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5089:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5076:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5076:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5066:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint8t_uint64t_bytes_calldata_ptrt_bytes32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4565:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4576:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4588:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4596:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4604:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4612:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4620:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4494:620:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5211:283:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5260:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5269:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5272:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5262:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5262:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5262:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5239:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5247:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5235:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5235:17:66"
                                                                            },
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5254:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5231:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5231:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5224:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5224:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5221:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5285:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5308:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5295:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5295:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5285:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5358:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5367:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5370:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5360:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5360:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5360:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5330:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5338:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5327:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5327:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5324:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5383:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5399:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5407:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5395:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5395:17:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "arrayPos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5383:8:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5472:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5481:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5484:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5474:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5474:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5474:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5435:6:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "5447:1:66",
                                                                                                "type": "",
                                                                                                "value": "5"
                                                                                            },
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "5450:6:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "5443:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "5443:14:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5431:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5431:27:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5460:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5427:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5427:38:66"
                                                                    },
                                                                    {
                                                                        "name": "end",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5467:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5424:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5424:47:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5421:67:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_array_address_payable_dyn_calldata",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5174:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5182:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "arrayPos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5190:8:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5200:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5119:375:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5664:632:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5710:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5719:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5722:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5712:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5712:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5712:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5685:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5694:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5681:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5681:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5706:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5677:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5677:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5674:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5735:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5762:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5749:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5749:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5739:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5781:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "5791:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5785:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5836:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5845:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5848:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5838:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5838:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5838:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5824:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5832:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5821:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5821:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5818:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5861:104:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5937:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5948:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5933:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5933:22:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5957:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_array_address_payable_dyn_calldata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5887:45:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5887:78:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value0_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5865:8:66",
                                                                    "type": ""
                                                                },
                                                                {
                                                                    "name": "value1_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5875:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5974:18:66",
                                                            "value": {
                                                                "name": "value0_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5984:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5974:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6001:18:66",
                                                            "value": {
                                                                "name": "value1_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6011:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6001:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6028:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6061:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6072:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6057:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6057:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6044:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6044:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6032:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6105:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6114:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6117:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6107:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6107:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6107:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6091:8:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6101:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6088:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6088:16:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6085:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6130:106:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6206:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6217:8:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6202:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6202:24:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6228:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_array_address_payable_dyn_calldata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6156:45:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6156:80:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value2_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6134:8:66",
                                                                    "type": ""
                                                                },
                                                                {
                                                                    "name": "value3_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6144:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6245:18:66",
                                                            "value": {
                                                                "name": "value2_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6255:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6245:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6272:18:66",
                                                            "value": {
                                                                "name": "value3_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6282:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6272:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5606:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5617:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5629:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5637:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5645:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5653:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5499:797:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6369:114:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6415:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6424:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6427:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6417:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6417:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6417:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6390:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6399:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6386:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6386:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6411:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6382:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6382:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6379:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6440:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6467:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6450:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6450:27:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6440:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint8",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6335:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6346:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6358:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6301:182:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6587:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6597:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6609:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6620:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6605:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6605:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6597:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6639:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6654:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6662:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6650:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6650:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6632:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6632:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6632:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6556:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6567:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6578:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6488:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6763:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6809:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6818:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6821:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6811:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6811:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6811:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6784:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6793:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6780:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6780:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6805:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6776:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6776:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6773:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6834:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6857:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6844:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6844:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6834:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6729:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6740:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6752:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6693:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6926:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6936:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6958:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6945:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6945:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6936:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7029:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7038:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7041:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7031:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7031:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7031:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6987:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6998:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "7005:20:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6994:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6994:32:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6984:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6984:43:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6977:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6977:51:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6974:71:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint72",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6905:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6916:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6878:173:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7142:166:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7188:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7197:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7200:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7190:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7190:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7190:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7163:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7172:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7159:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7159:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7184:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7155:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7155:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7152:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7213:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7241:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint72",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7223:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7223:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7213:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7260:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7287:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7298:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7283:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7283:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7270:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7270:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7260:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint72t_bytes32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7100:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7111:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7123:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7131:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7056:252:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7345:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7362:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7365:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7355:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7355:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7355:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7459:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7462:4:66",
                                                                        "type": "",
                                                                        "value": "0x21"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7452:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7452:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7452:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7483:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7486:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7476:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7476:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7476:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x21",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "7313:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7558:243:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7600:168:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7621:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7624:77:66",
                                                                                    "type": "",
                                                                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7614:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7614:88:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7614:88:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7722:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7725:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x21"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7715:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7715:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7715:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7750:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7753:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7743:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7743:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7743:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7581:5:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7588:1:66",
                                                                                "type": "",
                                                                                "value": "5"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7578:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7578:12:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7571:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7571:20:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7568:200:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7784:3:66"
                                                                    },
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7789:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7777:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7777:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7777:18:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_enum_ProposalStatus",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7542:5:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7549:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7502:299:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8008:230:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8018:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8030:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8041:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8026:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8026:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8018:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8061:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8072:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8054:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8054:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8054:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8099:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8110:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8095:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8095:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8115:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8088:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8088:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8088:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8162:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8174:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8185:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8170:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8170:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_enum_ProposalStatus",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8131:30:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8131:58:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8131:58:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8209:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8220:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8205:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8205:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8225:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8198:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8198:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8198:34:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_enum$_ProposalStatus_$5920_t_uint256__to_t_bytes32_t_bytes32_t_uint8_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7953:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7964:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7972:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7980:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7988:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7999:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7806:432:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8313:177:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "8359:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8368:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8371:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8361:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "8361:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "8361:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8334:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8343:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8330:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8330:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8355:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8326:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8326:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "8323:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8384:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8410:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8397:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8397:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8388:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8454:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8429:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8429:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8429:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8469:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "8479:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8469:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8279:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8290:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8302:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8243:247:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8616:477:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "8663:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8672:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8675:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8665:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "8665:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "8665:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8637:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8646:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8633:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8633:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8658:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8629:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8629:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "8626:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8688:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8714:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8701:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8701:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8692:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8758:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8733:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8733:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8733:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8773:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "8783:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8773:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8797:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8829:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8840:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8825:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8825:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8812:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8812:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8801:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8878:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8853:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8853:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8853:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8895:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "8905:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8895:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8921:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8953:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8964:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8949:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8949:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8936:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8936:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8925:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9002:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8977:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8977:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8977:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9019:17:66",
                                                            "value": {
                                                                "name": "value_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9029:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9019:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9045:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9072:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9083:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9068:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9068:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9055:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9055:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9045:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8558:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8569:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8581:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8589:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8597:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8605:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8495:598:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9201:284:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9247:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9256:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9259:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9249:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9249:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9249:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9222:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9231:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9218:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9218:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9243:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9214:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9214:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9211:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9272:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9300:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint72",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9282:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9282:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9272:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9319:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9346:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9357:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9342:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9342:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9329:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9329:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9319:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9370:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9400:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9411:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9396:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9396:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9383:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9383:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9374:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9449:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9424:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9424:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9424:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9464:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9474:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9464:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint72t_bytes32t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9151:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9162:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9174:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9182:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9190:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9098:387:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9591:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9601:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9613:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9624:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9609:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9609:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9601:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9643:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9654:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9636:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9636:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9636:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9560:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9571:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9582:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9490:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9773:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9783:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9795:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9806:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9791:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9791:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9783:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9825:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9840:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9848:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9836:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9836:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9818:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9818:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9818:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9742:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9753:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9764:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9672:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9990:301:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10036:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10045:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10048:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10038:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10038:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "10038:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10011:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10020:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10007:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10007:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10032:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10003:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10003:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "10000:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10061:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10087:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10074:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10074:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10065:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10131:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10106:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10106:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10106:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10146:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10156:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10146:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10170:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10202:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10213:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10198:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10198:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10185:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10185:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10174:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10251:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10226:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10226:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10226:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10268:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10278:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10268:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9948:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9959:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9971:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9979:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9903:388:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10357:423:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10367:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10387:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10381:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10381:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10371:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10409:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10414:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10402:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10402:19:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10402:19:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10430:14:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10440:4:66",
                                                                "type": "",
                                                                "value": "0x20"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10434:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10453:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10464:3:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10469:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10460:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10460:12:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10453:3:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10481:28:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10499:5:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10506:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10495:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10495:14:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10485:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10518:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10527:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10522:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10586:169:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10607:3:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "srcPtr",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "10622:6:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "mload",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "10616:5:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "10616:13:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "10631:42:66",
                                                                                            "type": "",
                                                                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "and",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "10612:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "10612:62:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10600:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10600:75:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "10600:75:66"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10688:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10699:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10704:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10695:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10695:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10688:3:66"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10720:25:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "srcPtr",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10734:6:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10742:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10730:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10730:15:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "srcPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10720:6:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10548:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10551:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10545:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10545:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10559:18:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10561:14:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10570:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10573:1:66",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10566:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10566:9:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10561:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10541:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "10537:218:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10764:10:66",
                                                            "value": {
                                                                "name": "pos",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10771:3:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10764:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_array_address_dyn",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10334:5:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10341:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10349:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10296:484:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10938:800:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10955:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10966:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10948:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10948:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10948:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10989:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11000:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10985:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10985:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11011:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11005:5:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11005:13:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10978:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10978:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10978:41:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11039:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11050:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11035:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11035:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "11065:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "11073:2:66",
                                                                                        "type": "",
                                                                                        "value": "32"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "11061:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "11061:15:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11055:5:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11055:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11028:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11028:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11028:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11087:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11117:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11125:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11113:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11113:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11107:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11107:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11091:12:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11149:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11160:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11145:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11145:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11165:4:66",
                                                                        "type": "",
                                                                        "value": "0xc0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11138:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11138:32:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11138:32:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11179:77:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11222:12:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11240:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11251:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11236:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11236:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_array_address_dyn",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11193:28:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11193:63:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11183:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11265:44:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11297:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11305:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11293:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11293:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11287:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11287:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11269:14:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11329:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11340:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11325:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11325:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "tail_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "11354:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "11362:9:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "11350:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "11350:22:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11374:66:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11346:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11346:95:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11318:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11318:124:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11318:124:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11451:66:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11494:14:66"
                                                                    },
                                                                    {
                                                                        "name": "tail_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11510:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_array_address_dyn",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11465:28:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11465:52:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11455:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11526:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11558:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11566:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11554:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11554:16:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11548:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11548:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11530:14:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11611:14:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11631:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11642:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11627:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11627:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_enum_ProposalStatus",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11580:30:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11580:67:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11580:67:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11667:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11678:4:66",
                                                                                "type": "",
                                                                                "value": "0xc0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11663:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11663:20:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "11695:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "11703:3:66",
                                                                                        "type": "",
                                                                                        "value": "160"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "11691:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "11691:16:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11685:5:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11685:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11656:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11656:53:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11656:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11718:14:66",
                                                            "value": {
                                                                "name": "tail_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11726:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11718:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_Proposal_$5936_memory_ptr__to_t_struct$_Proposal_$5936_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10907:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10918:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10929:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10785:953:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11840:87:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11850:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11862:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11873:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11858:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11858:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11850:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11892:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11907:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11915:4:66",
                                                                                "type": "",
                                                                                "value": "0xff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11903:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11903:17:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11885:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11885:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11885:36:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11809:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11820:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11831:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11743:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12036:352:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "12082:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12091:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12094:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12084:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12084:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "12084:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12057:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12066:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12053:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12053:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12078:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12049:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12049:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "12046:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "12107:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12133:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12120:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12120:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "12111:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12177:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12152:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12152:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12152:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12192:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12202:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12192:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12216:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12243:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12254:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12239:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12239:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12226:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12226:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12216:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "12267:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12299:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12310:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12295:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12295:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12282:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12282:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "12271:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12348:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12323:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12323:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12323:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12365:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12375:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12365:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_bytes32t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11986:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11997:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12009:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12017:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12025:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11932:456:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12529:466:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "12576:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12585:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12588:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12578:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12578:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "12578:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12550:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12559:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12546:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12546:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12571:3:66",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12542:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12542:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "12539:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "12601:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12627:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12614:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12614:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "12605:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12671:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12646:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12646:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12646:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12686:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12696:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12686:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12710:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12737:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12748:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12733:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12733:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12720:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12720:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12710:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "12761:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12793:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12804:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12789:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12789:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12776:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12776:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "12765:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12842:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12817:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12817:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12817:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12859:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12869:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12859:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12885:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12917:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12928:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12913:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12913:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_bytes4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12895:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12895:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12885:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12941:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12973:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12984:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12969:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12969:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_bytes4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12951:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12951:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12941:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_bytes32t_addresst_bytes4t_bytes4",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12463:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12474:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12486:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12494:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12502:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12510:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12518:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12393:602:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13174:166:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13191:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13202:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13184:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13184:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13184:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13225:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13236:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13221:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13221:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13241:2:66",
                                                                        "type": "",
                                                                        "value": "16"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13214:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13214:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13214:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13264:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13275:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13260:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13260:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5061757361626c653a20706175736564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13280:18:66",
                                                                        "type": "",
                                                                        "value": "Pausable: paused"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13253:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13253:46:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13253:46:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13308:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13320:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13331:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13316:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13316:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13308:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13151:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13165:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13000:340:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13519:172:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13536:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13547:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13529:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13529:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13529:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13570:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13581:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13566:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13566:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13586:2:66",
                                                                        "type": "",
                                                                        "value": "22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13559:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13559:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13559:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13609:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13620:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13605:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13605:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "496e636f72726563742066656520737570706c696564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13625:24:66",
                                                                        "type": "",
                                                                        "value": "Incorrect fee supplied"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13598:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13598:52:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13598:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13659:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13671:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13682:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13667:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13667:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13659:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13496:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13510:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13345:346:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13870:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13887:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13898:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13880:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13880:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13880:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13921:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13932:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13917:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13917:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13937:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13910:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13910:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13910:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13960:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13971:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13956:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13956:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "7265736f757263654944206e6f74206d617070656420746f2068616e646c6572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13976:34:66",
                                                                        "type": "",
                                                                        "value": "resourceID not mapped to handler"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13949:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13949:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13949:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14020:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14032:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14043:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14028:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14028:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14020:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13847:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13861:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13696:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14089:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14106:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14109:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14099:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14099:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14099:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14203:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14206:4:66",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14196:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14196:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14196:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14227:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14230:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14220:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14220:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14220:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "14057:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14292:163:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14302:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "14312:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14306:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14339:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14358:5:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14365:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14354:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14354:14:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14343:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14396:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14398:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14398:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14398:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14383:7:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14392:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14380:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14380:15:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "14377:41:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14427:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14438:7:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14447:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14434:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14434:15:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14427:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14274:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14284:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14246:209:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14526:259:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14543:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14548:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14536:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14536:19:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14536:19:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14581:3:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14586:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14577:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14577:14:66"
                                                                    },
                                                                    {
                                                                        "name": "start",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14593:5:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14600:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14564:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14564:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14564:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "pos",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "14631:3:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "14636:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "14627:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "14627:16:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14645:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14623:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14623:27:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14652:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14616:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14616:38:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14616:38:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14663:116:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14678:3:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "14691:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "14699:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14687:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "14687:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "14704:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "14683:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "14683:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14674:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14674:98:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14774:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14670:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14670:109:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14663:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_bytes_calldata",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "start",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14495:5:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14502:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14510:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14518:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14460:325:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15025:375:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15042:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15053:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15035:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15035:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15035:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15080:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15091:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15076:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15076:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15100:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15108:4:66",
                                                                                "type": "",
                                                                                "value": "0xff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15096:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15096:17:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15069:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15069:45:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15069:45:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15134:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15145:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15130:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15130:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15154:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15162:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15150:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15150:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15123:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15123:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15123:59:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15202:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15213:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15198:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15198:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15222:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15230:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15218:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15218:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15191:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15191:83:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15191:83:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15294:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15305:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15290:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15290:19:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15311:3:66",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15283:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15283:32:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15283:32:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15324:70:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15358:6:66"
                                                                    },
                                                                    {
                                                                        "name": "value5",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15366:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15378:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15389:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15374:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15374:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes_calldata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15332:25:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15332:62:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15324:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_calldata_ptr__to_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14954:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14965:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14973:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14981:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14989:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14997:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15005:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15016:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14790:610:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15579:176:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15596:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15607:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15589:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15589:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15589:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15630:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15641:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15626:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15626:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15646:2:66",
                                                                        "type": "",
                                                                        "value": "26"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15619:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15619:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15619:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15669:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15680:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15665:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15665:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "50726f706f73616c20616c72656164792063616e63656c6c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15685:28:66",
                                                                        "type": "",
                                                                        "value": "Proposal already cancelled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15658:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15658:56:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15658:56:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15723:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15735:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15746:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15731:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15731:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15723:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15556:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15570:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15405:350:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15934:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15951:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15962:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15944:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15944:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15944:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15985:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15996:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15981:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15981:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16001:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15974:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15974:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15974:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16024:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16035:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16020:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16020:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "50726f706f73616c206e6f7420617420657870697279207468726573686f6c64",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16040:34:66",
                                                                        "type": "",
                                                                        "value": "Proposal not at expiry threshold"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16013:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16013:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16013:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "16084:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16096:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16107:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16092:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16092:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16084:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15911:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15925:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15760:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "16250:119:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "16260:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16272:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16283:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16268:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16268:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16260:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16302:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16313:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16295:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16295:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16295:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16340:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16351:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16336:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16336:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16356:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16329:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16329:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16329:34:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16211:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16222:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16230:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16241:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "16121:248:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "16548:175:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16565:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16576:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16558:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16558:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16558:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16599:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16610:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16595:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16595:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16615:2:66",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16588:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16588:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16588:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16638:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16649:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16634:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16634:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6e6f2068616e646c657220666f72207265736f757263654944",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16654:27:66",
                                                                        "type": "",
                                                                        "value": "no handler for resourceID"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16627:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16627:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16627:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "16691:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16703:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16714:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16699:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16699:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16691:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16525:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16539:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "16374:349:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "16902:232:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16919:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16930:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16912:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16912:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16912:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16953:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16964:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16949:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16949:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16969:2:66",
                                                                        "type": "",
                                                                        "value": "42"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16942:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16942:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16942:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16992:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "17003:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16988:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16988:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "70726f706f73616c20616c7265616479207061737365642f6578656375746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17008:34:66",
                                                                        "type": "",
                                                                        "value": "proposal already passed/executed"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16981:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16981:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16981:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17063:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "17074:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17059:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17059:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "2f63616e63656c6c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17079:12:66",
                                                                        "type": "",
                                                                        "value": "/cancelled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17052:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17052:40:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17052:40:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17101:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17113:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17124:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17109:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17109:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17101:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16879:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16893:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "16728:406:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17313:171:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17330:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17341:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17323:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17323:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17323:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17364:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "17375:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17360:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17360:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17380:2:66",
                                                                        "type": "",
                                                                        "value": "21"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17353:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17353:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17353:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17403:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "17414:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17399:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17399:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "72656c6179657220616c726561647920766f746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17419:23:66",
                                                                        "type": "",
                                                                        "value": "relayer already voted"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17392:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17392:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17392:51:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17452:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17464:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17475:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17460:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17460:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17452:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17290:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17304:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17139:345:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17536:148:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "17627:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17629:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "17629:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "17629:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17552:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17559:66:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17549:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17549:77:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "17546:103:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17658:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17669:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17676:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17665:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17665:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17658:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17518:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17528:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17489:195:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17721:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17738:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17741:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17731:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17731:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17731:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17835:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17838:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17828:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17828:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17828:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17859:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17862:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17852:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17852:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17852:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "17689:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17910:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17927:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17930:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17920:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17920:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17920:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18024:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18027:4:66",
                                                                        "type": "",
                                                                        "value": "0x32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18017:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18017:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18017:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18048:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18051:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18041:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18041:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18041:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x32",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "17878:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "18241:167:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18258:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18269:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18251:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18251:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18251:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18292:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18303:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18288:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18288:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18308:2:66",
                                                                        "type": "",
                                                                        "value": "17"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18281:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18281:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18281:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18331:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18342:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18327:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18327:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6461746168617368206d69736d61746368",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18347:19:66",
                                                                        "type": "",
                                                                        "value": "datahash mismatch"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18320:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18320:47:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18320:47:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "18376:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18388:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18399:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18384:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18384:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18376:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_e3209b3b3221a11cdef33af435affcc74bff38eb4aaafc629c451edb5bb6cf58__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18218:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18232:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18067:341:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "18587:237:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18604:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18615:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18597:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18597:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18597:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18638:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18649:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18634:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18634:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18654:2:66",
                                                                        "type": "",
                                                                        "value": "47"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18627:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18627:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18627:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18677:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18688:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18673:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18673:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18693:34:66",
                                                                        "type": "",
                                                                        "value": "AccessControl: can only renounce"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18666:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18666:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18666:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18748:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18759:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18744:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18744:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "20726f6c657320666f722073656c66",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18764:17:66",
                                                                        "type": "",
                                                                        "value": " roles for self"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18737:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18737:45:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18737:45:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "18791:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18803:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18814:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18799:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18799:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18791:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18564:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18578:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18413:411:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "18884:382:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "18894:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18908:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18911:4:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18904:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18904:12:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18894:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "18925:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18955:4:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18961:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18951:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18951:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "18929:18:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "19002:31:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "19004:27:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "19018:6:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "19026:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19014:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19014:17:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19004:6:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18982:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18975:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18975:26:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "18972:61:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "19092:168:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "19113:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "19116:77:66",
                                                                                    "type": "",
                                                                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19106:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19106:88:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "19106:88:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "19214:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "19217:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19207:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19207:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "19207:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "19242:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "19245:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19235:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19235:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "19235:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19048:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19071:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "19079:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19068:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19068:14:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19045:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19045:38:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "19042:218:66"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18864:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18873:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18829:437:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "19446:252:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19463:3:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "19476:2:66",
                                                                                        "type": "",
                                                                                        "value": "96"
                                                                                    },
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "19480:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "19472:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "19472:15:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "19489:66:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19468:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19468:88:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19456:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19456:101:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19456:101:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19583:3:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "19588:2:66",
                                                                                "type": "",
                                                                                "value": "20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19579:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19579:12:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19593:6:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19601:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19566:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19566:42:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19566:42:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "19617:35:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19635:3:66"
                                                                            },
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19640:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19631:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19631:16:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19649:2:66",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19627:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19627:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "19621:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19668:2:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19672:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19661:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19661:13:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19661:13:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "19683:9:66",
                                                            "value": {
                                                                "name": "_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "19690:2:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19683:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19406:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19411:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19419:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19427:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19438:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "19271:427:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "19877:172:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19894:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19905:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19887:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19887:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19887:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19928:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "19939:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19924:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19924:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19944:2:66",
                                                                        "type": "",
                                                                        "value": "22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19917:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19917:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19917:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19967:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "19978:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19963:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19963:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "70726f706f73616c206973206e6f7420616374697665",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19983:24:66",
                                                                        "type": "",
                                                                        "value": "proposal is not active"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19956:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19956:52:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19956:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "20017:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20029:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20040:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20025:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20025:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20017:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_013e8b17787a426ffc75241aa23815a5265a074b42d8838ecebf3970339f42f4__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19854:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19868:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "19703:346:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20228:178:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20245:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20256:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20238:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20238:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20238:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20279:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20290:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20275:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20275:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20295:2:66",
                                                                        "type": "",
                                                                        "value": "28"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20268:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20268:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20268:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20318:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20329:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20314:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20314:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "70726f706f73616c20616c7265616479207472616e73666572726564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20334:30:66",
                                                                        "type": "",
                                                                        "value": "proposal already transferred"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20307:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20307:58:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20307:58:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "20374:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20386:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20397:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20382:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20382:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20374:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_00b04c534306f551d2ead1f9f63f0158b74c6c6e51741a5b803ded09eea1e088__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20205:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20219:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20054:352:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20585:177:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20602:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20613:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20595:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20595:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20595:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20636:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20647:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20632:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20632:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20652:2:66",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20625:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20625:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20625:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20675:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20686:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20671:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20671:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6461746120646f65736e2774206d61746368206461746168617368",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20691:29:66",
                                                                        "type": "",
                                                                        "value": "data doesn't match datahash"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20664:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20664:57:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20664:57:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "20730:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20742:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20753:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20738:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20738:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20730:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_37d86f109f909109dc6877be2d485881af52bdb007799914a63fc66c911a84aa__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20562:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20576:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20411:351:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20924:158:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20941:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20952:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20934:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20934:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20934:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20979:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20990:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20975:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20975:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20995:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20968:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20968:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20968:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21007:69:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21041:6:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21049:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21061:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21072:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21057:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21057:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes_calldata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21015:25:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21015:61:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21007:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20877:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20888:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20896:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20904:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20915:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20767:315:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "21165:177:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "21211:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "21220:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "21223:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21213:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "21213:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "21213:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21186:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21195:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21182:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21182:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21207:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21178:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21178:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "21175:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "21236:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21262:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21249:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21249:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "21240:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21306:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21281:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21281:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21281:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21321:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "21331:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21321:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_payable",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21131:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21142:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21154:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "21087:255:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "21504:241:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21514:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21526:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21537:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21522:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21522:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21514:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "21549:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "21559:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "21553:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21617:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21632:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21640:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21628:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21628:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21610:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21610:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21610:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21664:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21675:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21660:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21660:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21684:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21692:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21680:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21680:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21653:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21653:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21653:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21716:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21727:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21712:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21712:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21732:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21705:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21705:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21705:34:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21457:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21468:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21476:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21484:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21495:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "21347:398:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "21924:181:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21941:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21952:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21934:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21934:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21934:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21975:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21986:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21971:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21971:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21991:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21964:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21964:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21964:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22014:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22025:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22010:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22010:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "43757272656e742066656520697320657175616c20746f206e657720666565",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22030:33:66",
                                                                        "type": "",
                                                                        "value": "Current fee is equal to new fee"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22003:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22003:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22003:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "22073:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22085:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22096:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22081:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22081:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22073:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21901:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21915:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "21750:355:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "22284:181:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22301:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22312:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22294:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22294:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22294:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22335:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22346:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22331:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22331:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22351:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22324:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22324:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22324:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22374:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22385:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22370:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22370:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6164647220646f65736e277420686176652072656c6179657220726f6c6521",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22390:33:66",
                                                                        "type": "",
                                                                        "value": "addr doesn't have relayer role!"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22363:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22363:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22363:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "22433:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22445:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22456:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22441:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22441:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22433:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22261:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22275:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "22110:355:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "22517:149:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "22544:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22546:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "22546:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "22546:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22537:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22530:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22530:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "22527:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "22575:85:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22586:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22593:66:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22582:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22582:78:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22575:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "decrement_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22499:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22509:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "22470:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "22800:168:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "22810:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22822:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22833:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22818:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22818:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22810:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22852:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22863:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22845:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22845:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22845:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22890:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22901:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22886:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22886:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22910:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22918:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22906:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22906:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22879:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22879:83:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22879:83:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22761:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22772:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22780:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22791:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "22671:297:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "23147:180:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23164:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23175:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23157:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23157:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23157:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23198:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "23209:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23194:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23194:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23214:2:66",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23187:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23187:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23187:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23237:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "23248:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23233:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23233:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6164647220616c7265616479206861732072656c6179657220726f6c6521",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23253:32:66",
                                                                        "type": "",
                                                                        "value": "addr already has relayer role!"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23226:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23226:60:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23226:60:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "23295:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23307:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23318:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23303:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23303:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23295:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23124:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23138:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "22973:354:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "23513:358:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "23523:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23535:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23546:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23531:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23531:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23523:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23566:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23577:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23559:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23559:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23559:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23604:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "23615:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23600:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23600:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23624:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "23632:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23620:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23620:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23593:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23593:83:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23593:83:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "23685:76:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "23695:66:66",
                                                                "type": "",
                                                                "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "23689:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23781:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "23792:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23777:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23777:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23801:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23809:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23797:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23797:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23770:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23770:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23770:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23833:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "23844:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23829:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23829:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23853:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23861:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23849:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23849:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23822:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23822:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23822:43:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_address_t_bytes4_t_bytes4__to_t_bytes32_t_address_t_bytes4_t_bytes4__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23458:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23469:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23477:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23485:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23493:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23504:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "23332:539:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "23928:176:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24047:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24049:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24049:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24049:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "23959:1:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "23952:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "23952:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23945:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23945:17:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23967:1:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "23974:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                                                    },
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "24042:1:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "div",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "23970:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "23970:74:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23964:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23964:81:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23941:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23941:105:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "23938:131:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "24078:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24093:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24096:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24089:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24089:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "product",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24078:7:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_mul_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23907:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23910:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "product",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23916:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "23876:228:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "24157:80:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24184:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24186:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24186:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24186:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24173:1:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24180:1:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24176:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24176:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24170:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24170:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24167:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "24215:16:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24226:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24229:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24222:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24222:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24215:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24140:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24143:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24149:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "24109:128:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "24416:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24433:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24444:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24426:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24426:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24426:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24467:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24478:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24463:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24463:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24483:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24456:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24456:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24456:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24506:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24517:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24502:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24502:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24522:34:66",
                                                                        "type": "",
                                                                        "value": "Strings: hex length insufficient"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24495:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24495:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24495:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "24566:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24578:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24589:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24574:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24574:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24566:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24393:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24407:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "24242:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "24777:180:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24794:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24805:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24787:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24787:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24787:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24828:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24839:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24824:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24824:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24844:2:66",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24817:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24817:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24817:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24867:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24878:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24863:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24863:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "73656e646572206973206e6f742072656c61796572206f722061646d696e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24883:32:66",
                                                                        "type": "",
                                                                        "value": "sender is not relayer or admin"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24856:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24856:60:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24856:60:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "24925:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24937:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24948:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24933:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24933:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24925:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24754:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24768:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "24603:354:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "25011:76:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "25033:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25035:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "25035:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "25035:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25027:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25030:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25024:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25024:8:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "25021:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "25064:17:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25076:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25079:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25072:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25072:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25064:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24993:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24996:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25002:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "24962:125:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "25266:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25283:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25294:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25276:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25276:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25276:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25317:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25328:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25313:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25313:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25333:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25306:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25306:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25306:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25356:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25367:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25352:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25352:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "73656e64657220646f65736e277420686176652072656c6179657220726f6c65",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25372:34:66",
                                                                        "type": "",
                                                                        "value": "sender doesn't have relayer role"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25345:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25345:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25345:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "25416:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25428:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25439:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25424:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25424:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25416:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25243:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25257:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "25092:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "25842:397:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25859:3:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416363657373436f6e74726f6c3a206163636f756e7420",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25864:25:66",
                                                                        "type": "",
                                                                        "value": "AccessControl: account "
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25852:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25852:38:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25852:38:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "25899:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25919:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25913:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25913:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "25903:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25961:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25969:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25957:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25957:17:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25980:3:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25985:2:66",
                                                                                "type": "",
                                                                                "value": "23"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25976:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25976:12:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25990:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25935:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25935:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25935:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "26006:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26020:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26025:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26016:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26016:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "26010:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26052:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26056:2:66",
                                                                                "type": "",
                                                                                "value": "23"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26048:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26048:11:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "206973206d697373696e6720726f6c6520",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26061:19:66",
                                                                        "type": "",
                                                                        "value": " is missing role "
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26041:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26041:40:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26041:40:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "26090:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26112:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26106:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26106:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "26094:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26154:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26162:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26150:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26150:17:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26173:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26177:2:66",
                                                                                "type": "",
                                                                                "value": "40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26169:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26169:11:66"
                                                                    },
                                                                    {
                                                                        "name": "length_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26182:8:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26128:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26128:63:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26128:63:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "26200:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26215:2:66"
                                                                            },
                                                                            {
                                                                                "name": "length_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26219:8:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26211:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26211:17:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26230:2:66",
                                                                        "type": "",
                                                                        "value": "40"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26207:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26207:26:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26200:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25810:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25815:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25823:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25834:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "25453:786:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "26365:98:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26382:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26393:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26375:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26375:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26375:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "26405:52:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26430:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26442:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26453:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26438:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26438:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26413:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26413:44:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26405:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26334:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26345:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26356:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "26244:219:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "26642:180:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26659:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26670:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26652:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26652:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26652:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26693:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26704:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26689:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26689:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26709:2:66",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26682:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26682:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26682:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26732:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26743:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26728:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26728:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "73656e64657220646f65736e277420686176652061646d696e20726f6c65",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26748:32:66",
                                                                        "type": "",
                                                                        "value": "sender doesn't have admin role"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26721:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26721:60:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26721:60:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "26790:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26802:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26813:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26798:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26798:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26790:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26619:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26633:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "26468:354:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "27001:170:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27018:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27029:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27011:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27011:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27011:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27052:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27063:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27048:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27048:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27068:2:66",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27041:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27041:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27041:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27091:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27102:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27087:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27087:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5061757361626c653a206e6f7420706175736564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27107:22:66",
                                                                        "type": "",
                                                                        "value": "Pausable: not paused"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27080:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27080:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27080:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "27139:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27151:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27162:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27147:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27147:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27139:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26978:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26992:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "26827:344:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_bytes4(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_bytes4(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_uint8(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint8t_uint64t_bytes32(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint64(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_uint8t_uint64t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint64(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint64t_uint8(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n        value1 := abi_decode_uint8(add(headStart, 32))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint8t_uint64t_bytes_calldata_ptrt_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint64(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        value4 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_array_address_payable_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_address_payable_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_address_payable_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_uint8(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_uint72(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint72t_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint72(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function abi_encode_enum_ProposalStatus(value, pos)\n    {\n        if iszero(lt(value, 5))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, value)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_enum$_ProposalStatus_$5920_t_uint256__to_t_bytes32_t_bytes32_t_uint8_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        abi_encode_enum_ProposalStatus(value2, add(headStart, 64))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_uint72t_bytes32t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint72(headStart)\n        value1 := calldataload(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_array_address_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_struct$_Proposal_$5936_memory_ptr__to_t_struct$_Proposal_$5936_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), mload(value0))\n        mstore(add(headStart, 64), mload(add(value0, 32)))\n        let memberValue0 := mload(add(value0, 64))\n        mstore(add(headStart, 96), 0xc0)\n        let tail_1 := abi_encode_array_address_dyn(memberValue0, add(headStart, 224))\n        let memberValue0_1 := mload(add(value0, 96))\n        mstore(add(headStart, 128), add(sub(tail_1, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        let tail_2 := abi_encode_array_address_dyn(memberValue0_1, tail_1)\n        let memberValue0_2 := mload(add(value0, 128))\n        abi_encode_enum_ProposalStatus(memberValue0_2, add(headStart, 160))\n        mstore(add(headStart, 0xc0), mload(add(value0, 160)))\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_decode_tuple_t_addresst_bytes32t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_addresst_bytes32t_addresst_bytes4t_bytes4(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n        value3 := abi_decode_bytes4(add(headStart, 96))\n        value4 := abi_decode_bytes4(add(headStart, 128))\n    }\n    function abi_encode_tuple_t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Pausable: paused\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"Incorrect fee supplied\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"resourceID not mapped to handler\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint64(value) -> ret\n    {\n        let _1 := 0xffffffffffffffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_bytes_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_calldata_ptr__to_t_bytes32_t_uint8_t_uint64_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_bytes_calldata(value4, value5, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 26)\n        mstore(add(headStart, 64), \"Proposal already cancelled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Proposal not at expiry threshold\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"no handler for resourceID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"proposal already passed/executed\")\n        mstore(add(headStart, 96), \"/cancelled\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"relayer already voted\")\n        tail := add(headStart, 96)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_e3209b3b3221a11cdef33af435affcc74bff38eb4aaafc629c451edb5bb6cf58__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"datahash mismatch\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"AccessControl: can only renounce\")\n        mstore(add(headStart, 96), \" roles for self\")\n        tail := add(headStart, 128)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_packed_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        mstore(pos, and(shl(96, value0), 0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000))\n        calldatacopy(add(pos, 20), value1, value2)\n        let _1 := add(add(pos, value2), 20)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_013e8b17787a426ffc75241aa23815a5265a074b42d8838ecebf3970339f42f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"proposal is not active\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_00b04c534306f551d2ead1f9f63f0158b74c6c6e51741a5b803ded09eea1e088__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"proposal already transferred\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_37d86f109f909109dc6877be2d485881af52bdb007799914a63fc66c911a84aa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"data doesn't match datahash\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes_calldata_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes_calldata(value1, value2, add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"Current fee is equal to new fee\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"addr doesn't have relayer role!\")\n        tail := add(headStart, 96)\n    }\n    function decrement_t_uint256(value) -> ret\n    {\n        if iszero(value) { panic_error_0x11() }\n        ret := add(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"addr already has relayer role!\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_bytes4_t_bytes4__to_t_bytes32_t_address_t_bytes4_t_bytes4__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n        let _1 := 0xffffffff00000000000000000000000000000000000000000000000000000000\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Strings: hex length insufficient\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"sender is not relayer or admin\")\n        tail := add(headStart, 96)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"sender doesn't have relayer role\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, \"AccessControl: account \")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 23), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 23), \" is missing role \")\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(_1, 40), length_1)\n        end := add(add(_1, length_1), 40)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"sender doesn't have admin role\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Pausable: not paused\")\n        tail := add(headStart, 96)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600436106102855760003560e01c806380ae1c2811610153578063a9cf69fa116100cb578063cdb0f73a1161007f578063d7a9cd7911610064578063d7a9cd7914610816578063e8437ee71461082c578063ffaac0eb1461084c57600080fd5b8063cdb0f73a146107d6578063d547741f146107f657600080fd5b8063c5b37c22116100b0578063c5b37c221461078a578063c5ec8970146107a0578063cb10f215146107b657600080fd5b8063a9cf69fa14610731578063beab71311461075e57600080fd5b806391d14854116101225780639d5773e0116101075780639d5773e0146106e65780639d82dd63146106fc578063a217fddf1461071c57600080fd5b806391d148541461065f578063926d7d7f146106b257600080fd5b806380ae1c28146105a257806384db809f146105b75780638c0c26311461061f57806391c404ac1461063f57600080fd5b80634603ae38116102015780635c975abb116101b5578063780cf0041161019a578063780cf0041461052b5780637febe63f1461054b578063802aabe81461058c57600080fd5b80635c975abb146104f35780635e1fab0f1461050b57600080fd5b80634e056005116101e65780634e056005146104505780635059871914610470578063541d5548146104d357600080fd5b80634603ae38146103e05780634b0b919d1461040057600080fd5b8063248a9ca31161025857806336568abe1161023d57806336568abe146103735780633ee7094a146103935780634454b20d146103c057600080fd5b8063248a9ca3146103145780632f2ff15d1461035357600080fd5b806301ffc9a71461028a57806305e2ca17146102bf57806317f03ce5146102d45780631ff013f1146102f4575b600080fd5b34801561029657600080fd5b506102aa6102a5366004612c4f565b610861565b60405190151581526020015b60405180910390f35b6102d26102cd366004612cc4565b6108fa565b005b3480156102e057600080fd5b506102d26102ef366004612d36565b610bae565b34801561030057600080fd5b506102d261030f366004612d72565b610d66565b34801561032057600080fd5b5061034561032f366004612db4565b6000908152600160208190526040909120015490565b6040519081526020016102b6565b34801561035f57600080fd5b506102d261036e366004612def565b611423565b34801561037f57600080fd5b506102d261038e366004612def565b61144f565b34801561039f57600080fd5b506103b36103ae366004612e1f565b611502565b6040516102b69190612ecc565b3480156103cc57600080fd5b506102d26103db366004612edf565b6115a7565b3480156103ec57600080fd5b506102d26103fb366004612f8d565b611981565b34801561040c57600080fd5b5061043761041b366004612fed565b60086020526000908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102b6565b34801561045c57600080fd5b506102d261046b366004612db4565b611a32565b34801561047c57600080fd5b506104c361048b366004613021565b600b60209081526000928352604080842090915290825290208054600182015460048301546005909301549192909160ff9091169084565b6040516102b694939291906130b5565b3480156104df57600080fd5b506102aa6104ee3660046130df565b611a6d565b3480156104ff57600080fd5b5060005460ff166102aa565b34801561051757600080fd5b506102d26105263660046130df565b611aba565b34801561053757600080fd5b506102d26105463660046130fc565b611adb565b34801561055757600080fd5b506102aa61056636600461314d565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b34801561059857600080fd5b5061034560045481565b3480156105ae57600080fd5b506102d2611b7d565b3480156105c357600080fd5b506105fa6105d2366004612db4565b60096020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b34801561062b57600080fd5b506102d261063a36600461318d565b611b8f565b34801561064b57600080fd5b506102d261065a366004612db4565b611c20565b34801561066b57600080fd5b506102aa61067a366004612def565b600091825260016020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156106be57600080fd5b506103457fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc481565b3480156106f257600080fd5b5061034560055481565b34801561070857600080fd5b506102d26107173660046130df565b611c99565b34801561072857600080fd5b50610345600081565b34801561073d57600080fd5b5061075161074c366004612d36565b611dd2565b6040516102b6919061320c565b34801561076a57600080fd5b506002546107789060ff1681565b60405160ff90911681526020016102b6565b34801561079657600080fd5b5061034560065481565b3480156107ac57600080fd5b5061034560075481565b3480156107c257600080fd5b506102d26107d13660046132a1565b611f62565b3480156107e257600080fd5b506102d26107f13660046130df565b612034565b34801561080257600080fd5b506102d2610811366004612def565b612166565b34801561082257600080fd5b5061034560035481565b34801561083857600080fd5b506102d26108473660046132c1565b61218d565b34801561085857600080fd5b506102d2612291565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806108f457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60005460ff161561096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064015b60405180910390fd5b60065434146109d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e636f72726563742066656520737570706c696564000000000000000000006044820152606401610963565b60008381526009602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610a63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f7265736f757263654944206e6f74206d617070656420746f2068616e646c65726044820152606401610963565b60ff8516600090815260086020526040812080548290610a8c9067ffffffffffffffff16613352565b825467ffffffffffffffff8083166101009490940a848102910219909116179092556000908152600a6020908152604080832060ff8b1684529091529020909150610ad8908585612ae9565b506040517f38995da9000000000000000000000000000000000000000000000000000000008152829073ffffffffffffffffffffffffffffffffffffffff8216906338995da990610b379089908b90879033908c908c906004016133c3565b600060405180830381600087803b158015610b5157600080fd5b505af1158015610b65573d6000803e3d6000fd5b505050508167ffffffffffffffff16868860ff167fdbb69440df8433824a026ef190652f29929eb64b4d1d5d2a69be8afe3e6eaed860405160405180910390a450505050505050565b610bb66124eb565b68ffffffffffffffff00600883901b1660ff8416176000818152600b6020908152604080832085845290915290206004808083015460ff1690811115610bfe57610bfe61304b565b1415610c66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f50726f706f73616c20616c72656164792063616e63656c6c65640000000000006044820152606401610963565b6007546005820154610c799043906125bc565b11610ce0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f50726f706f73616c206e6f7420617420657870697279207468726573686f6c646044820152606401610963565b600481810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790558154600183015460408051928352602083019190915267ffffffffffffffff87169160ff8916917f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417910160405180910390a45050505050565b610d6e6125c8565b60005460ff1615610ddb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610963565b68ffffffffffffffff00600884901b1660ff8516176000818152600b60209081526040808320858452825280832086845260099092529091205473ffffffffffffffffffffffffffffffffffffffff16610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6e6f2068616e646c657220666f72207265736f757263654944000000000000006044820152606401610963565b60048082015460019160ff90911690811115610eaf57610eaf61304b565b1115610f3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f70726f706f73616c20616c7265616479207061737365642f657865637574656460448201527f2f63616e63656c6c6564000000000000000000000000000000000000000000006064820152608401610963565b68ffffffffffffffffff82166000908152600c60209081526040808320868452825280832033845290915290205460ff1615610fd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f72656c6179657220616c726561647920766f74656400000000000000000000006044820152606401610963565b60048082015460ff1690811115610fee57610fee61304b565b6111b6576005600081546110019061341e565b909155506040805160c0810182528581526020810185905281516001808252818401845291928301918160200160208202803683375050508152604080516000808252602080830184528085019290925260018385018190524360609095019490945268ffffffffffffffffff87168152600b825282812088825282528290208451815584820151938101939093559083015180516110a69260028501920190612b8b565b50606082015180516110c2916003840191602090910190612b8b565b5060808201518160040160006101000a81548160ff021916908360048111156110ed576110ed61304b565b021790555060a08201518160050155905050338160020160008154811061111657611116613486565b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560015b604080518681526020810186905267ffffffffffffffff88169160ff8a16917f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417910160405180910390a46112ae565b60075460058201546111c99043906125bc565b111561120157600481810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682179055611167565b8060010154831461126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6461746168617368206d69736d617463680000000000000000000000000000006044820152606401610963565b600281018054600181018255600091825260209091200180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555b60048181015460ff16818111156112c7576112c761304b565b1461141b5768ffffffffffffffffff82166000908152600c602090815260408083208684528252808320338452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560048082015460ff169081111561133b5761133b61304b565b8567ffffffffffffffff168760ff167f25f8daaa4635a7729927ba3f5b3d59cc3320aca7c32c9db4e7ca7b95743436408760405161137b91815260200190565b60405180910390a4600160035411158061139b5750600354600282015410155b1561141b576004810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002908117909155604080518681526020810186905267ffffffffffffffff88169160ff8a16917f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab650417910160405180910390a45b505050505050565b600082815260016020819052604090912001546114408133612660565b61144a8383612732565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146114f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610963565b6114fe82826127f1565b5050565b600a60209081526000928352604080842090915290825290208054611526906134b5565b80601f0160208091040260200160405190810160405280929190818152602001828054611552906134b5565b801561159f5780601f106115745761010080835404028352916020019161159f565b820191906000526020600020905b81548152906001019060200180831161158257829003601f168201915b505050505081565b6115af6125c8565b60005460ff161561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610963565b600081815260096020908152604080832054905173ffffffffffffffffffffffffffffffffffffffff9091169268ffffffffffffffff00600889901b1660ff8a16179290916116719185918991899101613509565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152815160209283012068ffffffffffffffffff85166000908152600b84528281208282529093529082209092509060048083015460ff16908111156116e5576116e561304b565b141561174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f70726f706f73616c206973206e6f7420616374697665000000000000000000006044820152606401610963565b600260048083015460ff16908111156117685761176861304b565b146117cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f70726f706f73616c20616c7265616479207472616e73666572726564000000006044820152606401610963565b8060010154821461183c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6461746120646f65736e2774206d6174636820646174616861736800000000006044820152606401610963565b600481810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790558154600081815260096020526040908190205490517fe248cff200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911692839263e248cff2926118d1928d918d9101613548565b600060405180830381600087803b1580156118eb57600080fd5b505af11580156118ff573d6000803e3d6000fd5b50505060048084015460ff16915081111561191c5761191c61304b565b8967ffffffffffffffff168b60ff167f803c5a12f6bde629cea32e63d4b92d1b560816a6fb72e939d3c89e1cab6504178560000154866001015460405161196d929190918252602082015260400190565b60405180910390a450505050505050505050565b6119896128ac565b60005b83811015611a2b578484828181106119a6576119a6613486565b90506020020160208101906119bb91906130df565b73ffffffffffffffffffffffffffffffffffffffff166108fc8484848181106119e6576119e6613486565b905060200201359081150290604051600060405180830381858888f19350505050158015611a18573d6000803e3d6000fd5b5080611a238161341e565b91505061198c565b5050505050565b611a3a6128ac565b600381905560405181907fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c890600090a250565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604081205460ff166108f4565b611ac26128ac565b611acd600082611423565b611ad860003361144f565b50565b611ae36128ac565b6040517fd9caed1200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015283811660248301526044820183905285919082169063d9caed1290606401600060405180830381600087803b158015611b5e57600080fd5b505af1158015611b72573d6000803e3d6000fd5b505050505050505050565b611b856128ac565b611b8d612944565b565b611b976128ac565b6040517f07b7ed9900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301528391908216906307b7ed9990602401600060405180830381600087803b158015611c0357600080fd5b505af1158015611c17573d6000803e3d6000fd5b50505050505050565b611c286128ac565b806006541415611c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f43757272656e742066656520697320657175616c20746f206e657720666565006044820152606401610963565b600655565b611ca16128ac565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604090205460ff16611d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6164647220646f65736e277420686176652072656c6179657220726f6c6521006044820152606401610963565b611d797fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482612166565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b90600090a260048054906000611dca8361356b565b919050555050565b6040805160c08082018352600080835260208084018290526060848601819052808501526080840182905260a0840182905260ff8816600888901b68ffffffffffffffff001617808352600b825285832087845282529185902085519384018652805484526001810154848301526002810180548751818502810185018952818152969794969294860193830182828015611ea357602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611e78575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611f1257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611ee7575b505050918352505060048281015460209092019160ff1690811115611f3957611f3961304b565b6004811115611f4a57611f4a61304b565b81526020016005820154815250509150509392505050565b611f6a6128ac565b6000828152600960205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591517fb8fa373600000000000000000000000000000000000000000000000000000000815260048101859052908316602482015284919063b8fa373690604401600060405180830381600087803b15801561201657600080fd5b505af115801561202a573d6000803e3d6000fd5b5050505050505050565b61203c6128ac565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604090205460ff16156120eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f6164647220616c7265616479206861732072656c6179657220726f6c652100006044820152606401610963565b6121157fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc482611423565b60405173ffffffffffffffffffffffffffffffffffffffff8216907f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c590600090a260048054906000611dca8361341e565b600082815260016020819052604090912001546121838133612660565b61144a83836127f1565b6121956128ac565b6000848152600960205260409081902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88811691821790925591517fbba8185a0000000000000000000000000000000000000000000000000000000081526004810187905290851660248201527fffffffff0000000000000000000000000000000000000000000000000000000080851660448301528316606482015286919063bba8185a90608401600060405180830381600087803b15801561227157600080fd5b505af1158015612285573d6000803e3d6000fd5b50505050505050505050565b6122996128ac565b611b8d612a2e565b606060006122b08360026135a0565b6122bb9060026135dd565b67ffffffffffffffff8111156122d3576122d3613457565b6040519080825280601f01601f1916602001820160405280156122fd576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061233457612334613486565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061239757612397613486565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006123d38460026135a0565b6123de9060016135dd565b90505b600181111561247b577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061241f5761241f613486565b1a60f81b82828151811061243557612435613486565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936124748161356b565b90506123e1565b5083156124e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610963565b9392505050565b3360009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff168061255657503360009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604090205460ff165b611b8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656e646572206973206e6f742072656c61796572206f722061646d696e00006044820152606401610963565b60006124e482846135f5565b3360009081527f9b7fc797995519db25593326970d3304279d74cdaa6b7cc1a414e3eb0491de53602052604090205460ff16611b8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f73656e64657220646f65736e277420686176652072656c6179657220726f6c656044820152606401610963565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166114fe576126b88173ffffffffffffffffffffffffffffffffffffffff1660146122a1565b6126c38360206122a1565b6040516020016126d492919061360c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261096391600401612ecc565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166114fe57600082815260016020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616808652925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156114fe57600082815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b3360009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49602052604090205460ff16611b8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656e64657220646f65736e277420686176652061646d696e20726f6c6500006044820152606401610963565b60005460ff16156129b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610963565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612a043390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b60005460ff16612a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610963565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612a04565b828054612af5906134b5565b90600052602060002090601f016020900481019282612b175760008555612b7b565b82601f10612b4e578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555612b7b565b82800160010185558215612b7b579182015b82811115612b7b578235825591602001919060010190612b60565b50612b87929150612c05565b5090565b828054828255906000526020600020908101928215612b7b579160200282015b82811115612b7b57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612bab565b5b80821115612b875760008155600101612c06565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114612c4a57600080fd5b919050565b600060208284031215612c6157600080fd5b6124e482612c1a565b803560ff81168114612c4a57600080fd5b60008083601f840112612c8d57600080fd5b50813567ffffffffffffffff811115612ca557600080fd5b602083019150836020828501011115612cbd57600080fd5b9250929050565b60008060008060608587031215612cda57600080fd5b612ce385612c6a565b935060208501359250604085013567ffffffffffffffff811115612d0657600080fd5b612d1287828801612c7b565b95989497509550505050565b803567ffffffffffffffff81168114612c4a57600080fd5b600080600060608486031215612d4b57600080fd5b612d5484612c6a565b9250612d6260208501612d1e565b9150604084013590509250925092565b60008060008060808587031215612d8857600080fd5b612d9185612c6a565b9350612d9f60208601612d1e565b93969395505050506040820135916060013590565b600060208284031215612dc657600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611ad857600080fd5b60008060408385031215612e0257600080fd5b823591506020830135612e1481612dcd565b809150509250929050565b60008060408385031215612e3257600080fd5b612e3b83612d1e565b9150612e4960208401612c6a565b90509250929050565b60005b83811015612e6d578181015183820152602001612e55565b83811115612e7c576000848401525b50505050565b60008151808452612e9a816020860160208601612e52565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006124e46020830184612e82565b600080600080600060808688031215612ef757600080fd5b612f0086612c6a565b9450612f0e60208701612d1e565b9350604086013567ffffffffffffffff811115612f2a57600080fd5b612f3688828901612c7b565b96999598509660600135949350505050565b60008083601f840112612f5a57600080fd5b50813567ffffffffffffffff811115612f7257600080fd5b6020830191508360208260051b8501011115612cbd57600080fd5b60008060008060408587031215612fa357600080fd5b843567ffffffffffffffff80821115612fbb57600080fd5b612fc788838901612f48565b90965094506020870135915080821115612fe057600080fd5b50612d1287828801612f48565b600060208284031215612fff57600080fd5b6124e482612c6a565b803568ffffffffffffffffff81168114612c4a57600080fd5b6000806040838503121561303457600080fd5b61303d83613008565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600581106130b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b84815260208101849052608081016130d0604083018561307a565b82606083015295945050505050565b6000602082840312156130f157600080fd5b81356124e481612dcd565b6000806000806080858703121561311257600080fd5b843561311d81612dcd565b9350602085013561312d81612dcd565b9250604085013561313d81612dcd565b9396929550929360600135925050565b60008060006060848603121561316257600080fd5b61316b84613008565b925060208401359150604084013561318281612dcd565b809150509250925092565b600080604083850312156131a057600080fd5b82356131ab81612dcd565b91506020830135612e1481612dcd565b600081518084526020808501945080840160005b8381101561320157815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016131cf565b509495945050505050565b6020815281516020820152602082015160408201526000604083015160c0606084015261323c60e08401826131bb565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301608085015261327782826131bb565b915050608084015161328c60a085018261307a565b5060a084015160c08401528091505092915050565b6000806000606084860312156132b657600080fd5b833561316b81612dcd565b600080600080600060a086880312156132d957600080fd5b85356132e481612dcd565b94506020860135935060408601356132fb81612dcd565b925061330960608701612c1a565b915061331760808701612c1a565b90509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168181141561337057613370613323565b6001019392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b86815260ff8616602082015267ffffffffffffffff8516604082015273ffffffffffffffffffffffffffffffffffffffff8416606082015260a06080820152600061341260a08301848661337a565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345057613450613323565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c908216806134c957607f821691505b60208210811415613503577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008460601b168152818360148301376000910160140190815292915050565b83815260406020820152600061356260408301848661337a565b95945050505050565b60008161357a5761357a613323565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135d8576135d8613323565b500290565b600082198211156135f0576135f0613323565b500190565b60008282101561360757613607613323565b500390565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613644816017850160208801612e52565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613681816028840160208801612e52565b0160280194935050505056fea26469706673582212201bdb0ea97e34c099dba75c931fd443e06ad9b83a5e4a196f8c0e6041a308aeea64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x285 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80AE1C28 GT PUSH2 0x153 JUMPI DUP1 PUSH4 0xA9CF69FA GT PUSH2 0xCB JUMPI DUP1 PUSH4 0xCDB0F73A GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xD7A9CD79 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD7A9CD79 EQ PUSH2 0x816 JUMPI DUP1 PUSH4 0xE8437EE7 EQ PUSH2 0x82C JUMPI DUP1 PUSH4 0xFFAAC0EB EQ PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCDB0F73A EQ PUSH2 0x7D6 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x7F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC5B37C22 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0xC5B37C22 EQ PUSH2 0x78A JUMPI DUP1 PUSH4 0xC5EC8970 EQ PUSH2 0x7A0 JUMPI DUP1 PUSH4 0xCB10F215 EQ PUSH2 0x7B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9CF69FA EQ PUSH2 0x731 JUMPI DUP1 PUSH4 0xBEAB7131 EQ PUSH2 0x75E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 GT PUSH2 0x122 JUMPI DUP1 PUSH4 0x9D5773E0 GT PUSH2 0x107 JUMPI DUP1 PUSH4 0x9D5773E0 EQ PUSH2 0x6E6 JUMPI DUP1 PUSH4 0x9D82DD63 EQ PUSH2 0x6FC JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x71C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x91D14854 EQ PUSH2 0x65F JUMPI DUP1 PUSH4 0x926D7D7F EQ PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x80AE1C28 EQ PUSH2 0x5A2 JUMPI DUP1 PUSH4 0x84DB809F EQ PUSH2 0x5B7 JUMPI DUP1 PUSH4 0x8C0C2631 EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0x91C404AC EQ PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4603AE38 GT PUSH2 0x201 JUMPI DUP1 PUSH4 0x5C975ABB GT PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x780CF004 GT PUSH2 0x19A JUMPI DUP1 PUSH4 0x780CF004 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x7FEBE63F EQ PUSH2 0x54B JUMPI DUP1 PUSH4 0x802AABE8 EQ PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5C975ABB EQ PUSH2 0x4F3 JUMPI DUP1 PUSH4 0x5E1FAB0F EQ PUSH2 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4E056005 GT PUSH2 0x1E6 JUMPI DUP1 PUSH4 0x4E056005 EQ PUSH2 0x450 JUMPI DUP1 PUSH4 0x50598719 EQ PUSH2 0x470 JUMPI DUP1 PUSH4 0x541D5548 EQ PUSH2 0x4D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4603AE38 EQ PUSH2 0x3E0 JUMPI DUP1 PUSH4 0x4B0B919D EQ PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 GT PUSH2 0x258 JUMPI DUP1 PUSH4 0x36568ABE GT PUSH2 0x23D JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0x3EE7094A EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0x4454B20D EQ PUSH2 0x3C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x5E2CA17 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x17F03CE5 EQ PUSH2 0x2D4 JUMPI DUP1 PUSH4 0x1FF013F1 EQ PUSH2 0x2F4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x2C4F JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D2 PUSH2 0x2CD CALLDATASIZE PUSH1 0x4 PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x8FA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x2EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2D36 JUMP JUMPDEST PUSH2 0xBAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x300 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x30F CALLDATASIZE PUSH1 0x4 PUSH2 0x2D72 JUMP JUMPDEST PUSH2 0xD66 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x2DB4 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x36E CALLDATASIZE PUSH1 0x4 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x1423 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x38E CALLDATASIZE PUSH1 0x4 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x144F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3B3 PUSH2 0x3AE CALLDATASIZE PUSH1 0x4 PUSH2 0x2E1F JUMP JUMPDEST PUSH2 0x1502 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B6 SWAP2 SWAP1 PUSH2 0x2ECC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x3DB CALLDATASIZE PUSH1 0x4 PUSH2 0x2EDF JUMP JUMPDEST PUSH2 0x15A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x2F8D JUMP JUMPDEST PUSH2 0x1981 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x437 PUSH2 0x41B CALLDATASIZE PUSH1 0x4 PUSH2 0x2FED JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x46B CALLDATASIZE PUSH1 0x4 PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x1A32 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x47C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C3 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x3021 JUMP JUMPDEST PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x4 DUP4 ADD SLOAD PUSH1 0x5 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x30B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x30DF JUMP JUMPDEST PUSH2 0x1A6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x2AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x526 CALLDATASIZE PUSH1 0x4 PUSH2 0x30DF JUMP JUMPDEST PUSH2 0x1ABA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x546 CALLDATASIZE PUSH1 0x4 PUSH2 0x30FC JUMP JUMPDEST PUSH2 0x1ADB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x566 CALLDATASIZE PUSH1 0x4 PUSH2 0x314D JUMP JUMPDEST PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x1B7D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5FA PUSH2 0x5D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DB4 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x318D JUMP JUMPDEST PUSH2 0x1B8F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x65A CALLDATASIZE PUSH1 0x4 PUSH2 0x2DB4 JUMP JUMPDEST PUSH2 0x1C20 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x67A CALLDATASIZE PUSH1 0x4 PUSH2 0x2DEF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND DUP5 MSTORE SWAP2 SWAP1 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH32 0xE2B7FB3B832174769106DAEBCFD6D1970523240DDA11281102DB9363B83B0DC4 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x708 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x717 CALLDATASIZE PUSH1 0x4 PUSH2 0x30DF JUMP JUMPDEST PUSH2 0x1C99 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x728 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x751 PUSH2 0x74C CALLDATASIZE PUSH1 0x4 PUSH2 0x2D36 JUMP JUMPDEST PUSH2 0x1DD2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B6 SWAP2 SWAP1 PUSH2 0x320C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x778 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2B6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x7D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x32A1 JUMP JUMPDEST PUSH2 0x1F62 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x7F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x30DF JUMP JUMPDEST PUSH2 0x2034 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x802 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x811 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DEF JUMP JUMPDEST PUSH2 0x2166 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x345 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x838 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x847 CALLDATASIZE PUSH1 0x4 PUSH2 0x32C1 JUMP JUMPDEST PUSH2 0x218D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x858 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D2 PUSH2 0x2291 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x7965DB0B00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x8F4 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x96C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 SLOAD CALLVALUE EQ PUSH2 0x9D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742066656520737570706C69656400000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0xA63 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x7265736F757263654944206E6F74206D617070656420746F2068616E646C6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0xFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP3 SWAP1 PUSH2 0xA8C SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x3352 JUMP JUMPDEST DUP3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND PUSH2 0x100 SWAP5 SWAP1 SWAP5 EXP DUP5 DUP2 MUL SWAP2 MUL NOT SWAP1 SWAP2 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0xFF DUP12 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0xAD8 SWAP1 DUP6 DUP6 PUSH2 0x2AE9 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x38995DA900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP3 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x38995DA9 SWAP1 PUSH2 0xB37 SWAP1 DUP10 SWAP1 DUP12 SWAP1 DUP8 SWAP1 CALLER SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x33C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB65 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP7 DUP9 PUSH1 0xFF AND PUSH32 0xDBB69440DF8433824A026EF190652F29929EB64B4D1D5D2A69BE8AFE3E6EAED8 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBB6 PUSH2 0x24EB JUMP JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFF00 PUSH1 0x8 DUP4 SWAP1 SHL AND PUSH1 0xFF DUP5 AND OR PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 PUSH1 0x4 DUP1 DUP1 DUP4 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xBFE JUMPI PUSH2 0xBFE PUSH2 0x304B JUMP JUMPDEST EQ ISZERO PUSH2 0xC66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C20616C72656164792063616E63656C6C6564000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x5 DUP3 ADD SLOAD PUSH2 0xC79 SWAP1 NUMBER SWAP1 PUSH2 0x25BC JUMP JUMPDEST GT PUSH2 0xCE0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F706F73616C206E6F7420617420657870697279207468726573686F6C64 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 OR SWAP1 SSTORE DUP2 SLOAD PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP8 AND SWAP2 PUSH1 0xFF DUP10 AND SWAP2 PUSH32 0x803C5A12F6BDE629CEA32E63D4B92D1B560816A6FB72E939D3C89E1CAB650417 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD6E PUSH2 0x25C8 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDDB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFF00 PUSH1 0x8 DUP5 SWAP1 SHL AND PUSH1 0xFF DUP6 AND OR PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xB PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE PUSH1 0x9 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE91 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F2068616E646C657220666F72207265736F75726365494400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x4 DUP1 DUP3 ADD SLOAD PUSH1 0x1 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP2 GT ISZERO PUSH2 0xEAF JUMPI PUSH2 0xEAF PUSH2 0x304B JUMP JUMPDEST GT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F706F73616C20616C7265616479207061737365642F6578656375746564 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2F63616E63656C6C656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x963 JUMP JUMPDEST PUSH9 0xFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xFD5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x72656C6179657220616C726561647920766F7465640000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x4 DUP1 DUP3 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xFEE JUMPI PUSH2 0xFEE PUSH2 0x304B JUMP JUMPDEST PUSH2 0x11B6 JUMPI PUSH1 0x5 PUSH1 0x0 DUP2 SLOAD PUSH2 0x1001 SWAP1 PUSH2 0x341E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP5 ADD DUP5 MSTORE SWAP2 SWAP3 DUP4 ADD SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP POP DUP2 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP5 MSTORE DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 DUP4 DUP6 ADD DUP2 SWAP1 MSTORE NUMBER PUSH1 0x60 SWAP1 SWAP6 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH9 0xFFFFFFFFFFFFFFFFFF DUP8 AND DUP2 MSTORE PUSH1 0xB DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP9 DUP3 MSTORE DUP3 MSTORE DUP3 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE DUP5 DUP3 ADD MLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP4 ADD MLOAD DUP1 MLOAD PUSH2 0x10A6 SWAP3 PUSH1 0x2 DUP6 ADD SWAP3 ADD SWAP1 PUSH2 0x2B8B JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x10C2 SWAP2 PUSH1 0x3 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2B8B JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x4 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x10ED JUMPI PUSH2 0x10ED PUSH2 0x304B JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x5 ADD SSTORE SWAP1 POP POP CALLER DUP2 PUSH1 0x2 ADD PUSH1 0x0 DUP2 SLOAD DUP2 LT PUSH2 0x1116 JUMPI PUSH2 0x1116 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH1 0xFF DUP11 AND SWAP2 PUSH32 0x803C5A12F6BDE629CEA32E63D4B92D1B560816A6FB72E939D3C89E1CAB650417 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x12AE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x5 DUP3 ADD SLOAD PUSH2 0x11C9 SWAP1 NUMBER SWAP1 PUSH2 0x25BC JUMP JUMPDEST GT ISZERO PUSH2 0x1201 JUMPI PUSH1 0x4 DUP2 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP3 OR SWAP1 SSTORE PUSH2 0x1167 JUMP JUMPDEST DUP1 PUSH1 0x1 ADD SLOAD DUP4 EQ PUSH2 0x126E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6461746168617368206D69736D61746368000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND CALLER OR SWAP1 SSTORE JUMPDEST PUSH1 0x4 DUP2 DUP2 ADD SLOAD PUSH1 0xFF AND DUP2 DUP2 GT ISZERO PUSH2 0x12C7 JUMPI PUSH2 0x12C7 PUSH2 0x304B JUMP JUMPDEST EQ PUSH2 0x141B JUMPI PUSH9 0xFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xC PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x4 DUP1 DUP3 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x133B JUMPI PUSH2 0x133B PUSH2 0x304B JUMP JUMPDEST DUP6 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP8 PUSH1 0xFF AND PUSH32 0x25F8DAAA4635A7729927BA3F5B3D59CC3320ACA7C32C9DB4E7CA7B9574343640 DUP8 PUSH1 0x40 MLOAD PUSH2 0x137B SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 PUSH1 0x3 SLOAD GT ISZERO DUP1 PUSH2 0x139B JUMPI POP PUSH1 0x3 SLOAD PUSH1 0x2 DUP3 ADD SLOAD LT ISZERO JUMPDEST ISZERO PUSH2 0x141B JUMPI PUSH1 0x4 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x2 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH1 0xFF DUP11 AND SWAP2 PUSH32 0x803C5A12F6BDE629CEA32E63D4B92D1B560816A6FB72E939D3C89E1CAB650417 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x1440 DUP2 CALLER PUSH2 0x2660 JUMP JUMPDEST PUSH2 0x144A DUP4 DUP4 PUSH2 0x2732 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND CALLER EQ PUSH2 0x14F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416363657373436F6E74726F6C3A2063616E206F6E6C792072656E6F756E6365 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20726F6C657320666F722073656C660000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x963 JUMP JUMPDEST PUSH2 0x14FE DUP3 DUP3 PUSH2 0x27F1 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x1526 SWAP1 PUSH2 0x34B5 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 0x1552 SWAP1 PUSH2 0x34B5 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x159F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1574 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x159F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1582 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH2 0x15AF PUSH2 0x25C8 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x161C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 PUSH9 0xFFFFFFFFFFFFFFFF00 PUSH1 0x8 DUP10 SWAP1 SHL AND PUSH1 0xFF DUP11 AND OR SWAP3 SWAP1 SWAP2 PUSH2 0x1671 SWAP2 DUP6 SWAP2 DUP10 SWAP2 DUP10 SWAP2 ADD PUSH2 0x3509 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH9 0xFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xB DUP5 MSTORE DUP3 DUP2 KECCAK256 DUP3 DUP3 MSTORE SWAP1 SWAP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP1 SWAP3 POP SWAP1 PUSH1 0x4 DUP1 DUP4 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x16E5 JUMPI PUSH2 0x16E5 PUSH2 0x304B JUMP JUMPDEST EQ ISZERO PUSH2 0x174D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F706F73616C206973206E6F742061637469766500000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x4 DUP1 DUP4 ADD SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x1768 JUMPI PUSH2 0x1768 PUSH2 0x304B JUMP JUMPDEST EQ PUSH2 0x17CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F706F73616C20616C7265616479207472616E7366657272656400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST DUP1 PUSH1 0x1 ADD SLOAD DUP3 EQ PUSH2 0x183C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6461746120646F65736E2774206D617463682064617461686173680000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x4 DUP2 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x3 OR SWAP1 SSTORE DUP2 SLOAD PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH32 0xE248CFF200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 DUP4 SWAP3 PUSH4 0xE248CFF2 SWAP3 PUSH2 0x18D1 SWAP3 DUP14 SWAP2 DUP14 SWAP2 ADD PUSH2 0x3548 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x4 DUP1 DUP5 ADD SLOAD PUSH1 0xFF AND SWAP2 POP DUP2 GT ISZERO PUSH2 0x191C JUMPI PUSH2 0x191C PUSH2 0x304B JUMP JUMPDEST DUP10 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP12 PUSH1 0xFF AND PUSH32 0x803C5A12F6BDE629CEA32E63D4B92D1B560816A6FB72E939D3C89E1CAB650417 DUP6 PUSH1 0x0 ADD SLOAD DUP7 PUSH1 0x1 ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x196D SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1989 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1A2B JUMPI DUP5 DUP5 DUP3 DUP2 DUP2 LT PUSH2 0x19A6 JUMPI PUSH2 0x19A6 PUSH2 0x3486 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x19BB SWAP2 SWAP1 PUSH2 0x30DF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP5 DUP5 DUP5 DUP2 DUP2 LT PUSH2 0x19E6 JUMPI PUSH2 0x19E6 PUSH2 0x3486 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1A18 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP DUP1 PUSH2 0x1A23 DUP2 PUSH2 0x341E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x198C JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1A3A PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x3 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0xA20D6B84CD798A24038BE305EFF8A45CA82EF54A2AA2082005D8E14C0A4746C8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x8F4 JUMP JUMPDEST PUSH2 0x1AC2 PUSH2 0x28AC JUMP JUMPDEST PUSH2 0x1ACD PUSH1 0x0 DUP3 PUSH2 0x1423 JUMP JUMPDEST PUSH2 0x1AD8 PUSH1 0x0 CALLER PUSH2 0x144F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1AE3 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD9CAED1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE DUP6 SWAP2 SWAP1 DUP3 AND SWAP1 PUSH4 0xD9CAED12 SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B85 PUSH2 0x28AC JUMP JUMPDEST PUSH2 0x1B8D PUSH2 0x2944 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1B97 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x7B7ED9900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 SWAP2 SWAP1 DUP3 AND SWAP1 PUSH4 0x7B7ED99 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1C28 PUSH2 0x28AC JUMP JUMPDEST DUP1 PUSH1 0x6 SLOAD EQ ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43757272656E742066656520697320657175616C20746F206E65772066656500 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH2 0x1CA1 PUSH2 0x28AC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1D4F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6164647220646F65736E277420686176652072656C6179657220726F6C652100 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH2 0x1D79 PUSH32 0xE2B7FB3B832174769106DAEBCFD6D1970523240DDA11281102DB9363B83B0DC4 DUP3 PUSH2 0x2166 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x10E1F7CE9FD7D1B90A66D13A2AB3CB8DD7F29F3F8D520B143B063CCFBAB6906B SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x1DCA DUP4 PUSH2 0x356B JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP1 DUP3 ADD DUP4 MSTORE PUSH1 0x0 DUP1 DUP4 MSTORE PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP5 DUP7 ADD DUP2 SWAP1 MSTORE DUP1 DUP6 ADD MSTORE PUSH1 0x80 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0xFF DUP9 AND PUSH1 0x8 DUP9 SWAP1 SHL PUSH9 0xFFFFFFFFFFFFFFFF00 AND OR DUP1 DUP4 MSTORE PUSH1 0xB DUP3 MSTORE DUP6 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP6 SWAP1 KECCAK256 DUP6 MLOAD SWAP4 DUP5 ADD DUP7 MSTORE DUP1 SLOAD DUP5 MSTORE PUSH1 0x1 DUP2 ADD SLOAD DUP5 DUP4 ADD MSTORE PUSH1 0x2 DUP2 ADD DUP1 SLOAD DUP8 MLOAD DUP2 DUP6 MUL DUP2 ADD DUP6 ADD DUP10 MSTORE DUP2 DUP2 MSTORE SWAP7 SWAP8 SWAP5 SWAP7 SWAP3 SWAP5 DUP7 ADD SWAP4 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x1EA3 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1E78 JUMPI JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x3 DUP3 ADD DUP1 SLOAD DUP1 PUSH1 0x20 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 DUP1 ISZERO PUSH2 0x1F12 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1EE7 JUMPI JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x4 DUP3 DUP2 ADD SLOAD PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x1F39 JUMPI PUSH2 0x1F39 PUSH2 0x304B JUMP JUMPDEST PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1F4A JUMPI PUSH2 0x1F4A PUSH2 0x304B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x5 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1F6A PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD PUSH32 0xB8FA373600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP5 SWAP2 SWAP1 PUSH4 0xB8FA3736 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2016 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x202A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x203C PUSH2 0x28AC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x20EB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6164647220616C7265616479206861732072656C6179657220726F6C65210000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH2 0x2115 PUSH32 0xE2B7FB3B832174769106DAEBCFD6D1970523240DDA11281102DB9363B83B0DC4 DUP3 PUSH2 0x1423 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH32 0x3580EE9F53A62B7CB409A2CB56F9BE87747DD15017AFC5CEF6EEF321E4FB2C5 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH1 0x4 DUP1 SLOAD SWAP1 PUSH1 0x0 PUSH2 0x1DCA DUP4 PUSH2 0x341E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH2 0x2183 DUP2 CALLER PUSH2 0x2660 JUMP JUMPDEST PUSH2 0x144A DUP4 DUP4 PUSH2 0x27F1 JUMP JUMPDEST PUSH2 0x2195 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD PUSH32 0xBBA8185A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP1 DUP6 AND PUSH1 0x44 DUP4 ADD MSTORE DUP4 AND PUSH1 0x64 DUP3 ADD MSTORE DUP7 SWAP2 SWAP1 PUSH4 0xBBA8185A SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2285 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2299 PUSH2 0x28AC JUMP JUMPDEST PUSH2 0x1B8D PUSH2 0x2A2E JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x22B0 DUP4 PUSH1 0x2 PUSH2 0x35A0 JUMP JUMPDEST PUSH2 0x22BB SWAP1 PUSH1 0x2 PUSH2 0x35DD JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x22D3 JUMPI PUSH2 0x22D3 PUSH2 0x3457 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x22FD JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2334 JUMPI PUSH2 0x2334 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2397 JUMPI PUSH2 0x2397 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH2 0x23D3 DUP5 PUSH1 0x2 PUSH2 0x35A0 JUMP JUMPDEST PUSH2 0x23DE SWAP1 PUSH1 0x1 PUSH2 0x35DD JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x247B JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 DUP6 PUSH1 0xF AND PUSH1 0x10 DUP2 LT PUSH2 0x241F JUMPI PUSH2 0x241F PUSH2 0x3486 JUMP JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2435 JUMPI PUSH2 0x2435 PUSH2 0x3486 JUMP JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 SWAP5 SWAP1 SWAP5 SHR SWAP4 PUSH2 0x2474 DUP2 PUSH2 0x356B JUMP JUMPDEST SWAP1 POP PUSH2 0x23E1 JUMP JUMPDEST POP DUP4 ISZERO PUSH2 0x24E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xA6EEF7E35ABE7026729641147F7915573C7E97B47EFA546F5F6E3230263BCB49 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x2556 JUMPI POP CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1B8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206973206E6F742072656C61796572206F722061646D696E0000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24E4 DUP3 DUP5 PUSH2 0x35F5 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x9B7FC797995519DB25593326970D3304279D74CDAA6B7CC1A414E3EB0491DE53 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1B8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E64657220646F65736E277420686176652072656C6179657220726F6C65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x14FE JUMPI PUSH2 0x26B8 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x22A1 JUMP JUMPDEST PUSH2 0x26C3 DUP4 PUSH1 0x20 PUSH2 0x22A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x26D4 SWAP3 SWAP2 SWAP1 PUSH2 0x360C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP3 MSTORE PUSH2 0x963 SWAP2 PUSH1 0x4 ADD PUSH2 0x2ECC JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x14FE JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP1 DUP7 MSTORE SWAP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE SWAP1 MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x14FE JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP6 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xA6EEF7E35ABE7026729641147F7915573C7E97B47EFA546F5F6E3230263BCB49 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1B8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E64657220646F65736E277420686176652061646D696E20726F6C650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x29B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A2070617573656400000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH2 0x2A04 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x2A9A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5061757361626C653A206E6F7420706175736564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x963 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER PUSH2 0x2A04 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x2AF5 SWAP1 PUSH2 0x34B5 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x2B17 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x2B7B JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x2B4E JUMPI DUP3 DUP1 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 DUP3 CALLDATALOAD AND OR DUP6 SSTORE PUSH2 0x2B7B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x2B7B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2B7B JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2B60 JUMP JUMPDEST POP PUSH2 0x2B87 SWAP3 SWAP2 POP PUSH2 0x2C05 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x2B7B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x2B7B JUMPI DUP3 MLOAD DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x2BAB JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x2B87 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2C06 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2C61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24E4 DUP3 PUSH2 0x2C1A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2C8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2CA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2CBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2CDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2CE3 DUP6 PUSH2 0x2C6A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2D06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D12 DUP8 DUP3 DUP9 ADD PUSH2 0x2C7B JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2D4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D54 DUP5 PUSH2 0x2C6A JUMP JUMPDEST SWAP3 POP PUSH2 0x2D62 PUSH1 0x20 DUP6 ADD PUSH2 0x2D1E JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2D88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D91 DUP6 PUSH2 0x2C6A JUMP JUMPDEST SWAP4 POP PUSH2 0x2D9F PUSH1 0x20 DUP7 ADD PUSH2 0x2D1E JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DC6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E14 DUP2 PUSH2 0x2DCD JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2E3B DUP4 PUSH2 0x2D1E JUMP JUMPDEST SWAP2 POP PUSH2 0x2E49 PUSH1 0x20 DUP5 ADD PUSH2 0x2C6A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2E6D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E55 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2E7C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2E9A DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2E52 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x24E4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2E82 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2EF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F00 DUP7 PUSH2 0x2C6A JUMP JUMPDEST SWAP5 POP PUSH2 0x2F0E PUSH1 0x20 DUP8 ADD PUSH2 0x2D1E JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F36 DUP9 DUP3 DUP10 ADD PUSH2 0x2C7B JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP7 PUSH1 0x60 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2F5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2F72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2CBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2FA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2FBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2FC7 DUP9 DUP4 DUP10 ADD PUSH2 0x2F48 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2FE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D12 DUP8 DUP3 DUP9 ADD PUSH2 0x2F48 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x24E4 DUP3 PUSH2 0x2C6A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH9 0xFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2C4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x303D DUP4 PUSH2 0x3008 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x5 DUP2 LT PUSH2 0x30B1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 MSTORE JUMP JUMPDEST DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD PUSH2 0x30D0 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x307A JUMP JUMPDEST DUP3 PUSH1 0x60 DUP4 ADD MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x30F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x24E4 DUP2 PUSH2 0x2DCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3112 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x311D DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x312D DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x313D DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x316B DUP5 PUSH2 0x3008 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3182 DUP2 PUSH2 0x2DCD JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x31A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x31AB DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E14 DUP2 PUSH2 0x2DCD JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3201 JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x31CF JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0xC0 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x323C PUSH1 0xE0 DUP5 ADD DUP3 PUSH2 0x31BB JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP5 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP5 DUP4 SUB ADD PUSH1 0x80 DUP6 ADD MSTORE PUSH2 0x3277 DUP3 DUP3 PUSH2 0x31BB JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 DUP5 ADD MLOAD PUSH2 0x328C PUSH1 0xA0 DUP6 ADD DUP3 PUSH2 0x307A JUMP JUMPDEST POP PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0xC0 DUP5 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x32B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x316B DUP2 PUSH2 0x2DCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x32D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x32E4 DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x32FB DUP2 PUSH2 0x2DCD JUMP JUMPDEST SWAP3 POP PUSH2 0x3309 PUSH1 0x60 DUP8 ADD PUSH2 0x2C1A JUMP JUMPDEST SWAP2 POP PUSH2 0x3317 PUSH1 0x80 DUP8 ADD PUSH2 0x2C1A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 EQ ISZERO PUSH2 0x3370 JUMPI PUSH2 0x3370 PUSH2 0x3323 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP7 DUP2 MSTORE PUSH1 0xFF DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x3412 PUSH1 0xA0 DUP4 ADD DUP5 DUP7 PUSH2 0x337A JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3450 JUMPI PUSH2 0x3450 PUSH2 0x3323 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x34C9 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x3503 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 DUP5 PUSH1 0x60 SHL AND DUP2 MSTORE DUP2 DUP4 PUSH1 0x14 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 ADD PUSH1 0x14 ADD SWAP1 DUP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x3562 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x337A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x357A JUMPI PUSH2 0x357A PUSH2 0x3323 JUMP JUMPDEST POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x35D8 JUMPI PUSH2 0x35D8 PUSH2 0x3323 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x35F0 JUMPI PUSH2 0x35F0 PUSH2 0x3323 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3607 JUMPI PUSH2 0x3607 PUSH2 0x3323 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD PUSH2 0x3644 DUP2 PUSH1 0x17 DUP6 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2E52 JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x17 SWAP2 DUP5 ADD SWAP2 DUP3 ADD MSTORE DUP4 MLOAD PUSH2 0x3681 DUP2 PUSH1 0x28 DUP5 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x2E52 JUMP JUMPDEST ADD PUSH1 0x28 ADD SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xDB 0xE 0xA9 PUSH31 0x34C099DBA75C931FD443E06AD9B83A5E4A196F8C0E6041A308AEEA64736F6C PUSH4 0x43000809 STOP CALLER ",
                            "sourceMap": "540:18623:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4073:214:4;;;;;;;;;;-1:-1:-1;4073:214:4;;;;;:::i;:::-;;:::i;:::-;;;592:14:66;;585:22;567:41;;555:2;540:18;4073:214:4;;;;;;;;11834:726:37;;;;;;:::i;:::-;;:::i;:::-;;16166:659;;;;;;;;;;-1:-1:-1;16166:659:37;;;;;:::i;:::-;;:::i;13224:2399::-;;;;;;;;;;-1:-1:-1;13224:2399:37;;;;;:::i;:::-;;:::i;5348:121:4:-;;;;;;;;;;-1:-1:-1;5348:121:4;;;;;:::i;:::-;5414:7;5440:12;;;:6;:12;;;;;;;;:22;;;5348:121;;;;2914:25:66;;;2902:2;2887:18;5348:121:4;2768:177:66;5719:145:4;;;;;;;;;;-1:-1:-1;5719:145:4;;;;;:::i;:::-;;:::i;6736:214::-;;;;;;;;;;-1:-1:-1;6736:214:4;;;;;:::i;:::-;;:::i;1376:65:37:-;;;;;;;;;;-1:-1:-1;1376:65:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;17484:1070::-;;;;;;;;;;-1:-1:-1;17484:1070:37;;;;;:::i;:::-;;:::i;18944:217::-;;;;;;;;;;-1:-1:-1;18944:217:37;;;;;:::i;:::-;;:::i;1168:46::-;;;;;;;;;;-1:-1:-1;1168:46:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6662:18:66;6650:31;;;6632:50;;6620:2;6605:18;1168:46:37;6488:200:66;5724:179:37;;;;;;;;;;-1:-1:-1;5724:179:37;;;;;:::i;:::-;;:::i;1512:65::-;;;;;;;;;;-1:-1:-1;1512:65:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4328:119::-;;;;;;;;;;-1:-1:-1;4328:119:37;;;;;:::i;:::-;;:::i;1042:84:6:-;;;;;;;;;;-1:-1:-1;1089:4:6;1112:7;;;1042:84;;4698:170:37;;;;;;;;;;-1:-1:-1;4698:170:37;;;;;:::i;:::-;;:::i;11101:304::-;;;;;;;;;;-1:-1:-1;11101:304:37;;;;;:::i;:::-;;:::i;1662:90::-;;;;;;;;;;-1:-1:-1;1662:90:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;687:29;;;;;;;;;;;;;;;;5056:75;;;;;;;;;;;;;:::i;1257:62::-;;;;;;;;;;-1:-1:-1;1257:62:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9848:42:66;9836:55;;;9818:74;;9806:2;9791:18;1257:62:37;9672:226:66;9351:200:37;;;;;;;;;;-1:-1:-1;9351:200:37;;;;;:::i;:::-;;:::i;10576:157::-;;;;;;;;;;-1:-1:-1;10576:157:37;;;;;:::i;:::-;;:::i;4374:137:4:-;;;;;;;;;;-1:-1:-1;4374:137:4;;;;;:::i;:::-;4452:4;4475:12;;;:6;:12;;;;;;;;:29;;;;;;;;;;;;;;;;4374:137;2405:64:37;;;;;;;;;;;;2444:25;2405:64;;722:30;;;;;;;;;;;;;;;;6794:290;;;;;;;;;;-1:-1:-1;6794:290:37;;;;;:::i;:::-;;:::i;2394:49:4:-;;;;;;;;;;-1:-1:-1;2394:49:4;2439:4;2394:49;;10134:288:37;;;;;;;;;;-1:-1:-1;10134:288:37;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;622:21::-;;;;;;;;;;-1:-1:-1;622:21:37;;;;;;;;;;;11915:4:66;11903:17;;;11885:36;;11873:2;11858:18;622:21:37;11743:184:66;758:19:37;;;;;;;;;;;;;;;;783:22;;;;;;;;;;;;;;;;7625:328;;;;;;;;;;-1:-1:-1;7625:328:37;;;;;:::i;:::-;;:::i;6204:284::-;;;;;;;;;;-1:-1:-1;6204:284:37;;;;;:::i;:::-;;:::i;6098:147:4:-;;;;;;;;;;-1:-1:-1;6098:147:4;;;;;:::i;:::-;;:::i;649:32:37:-;;;;;;;;;;;;;;;;8501:459;;;;;;;;;;-1:-1:-1;8501:459:37;;;;;:::i;:::-;;:::i;5321:79::-;;;;;;;;;;;;;:::i;4073:214:4:-;4158:4;4181:47;;;4196:32;4181:47;;:99;;-1:-1:-1;886:25:14;871:40;;;;4244:36:4;4174:106;4073:214;-1:-1:-1;;4073:214:4:o;11834:726:37:-;1089:4:6;1112:7;;;1355:9;1347:38;;;;;;;13202:2:66;1347:38:6;;;13184:21:66;13241:2;13221:18;;;13214:30;13280:18;13260;;;13253:46;13316:18;;1347:38:6;;;;;;;;;12010:4:37::1;;11997:9;:17;11989:52;;;::::0;::::1;::::0;;13547:2:66;11989:52:37::1;::::0;::::1;13529:21:66::0;13586:2;13566:18;;;13559:30;13625:24;13605:18;;;13598:52;13667:18;;11989:52:37::1;13345:346:66::0;11989:52:37::1;12052:15;12070:39:::0;;;:27:::1;:39;::::0;;;;;::::1;;12127:21:::0;12119:66:::1;;;::::0;::::1;::::0;;13898:2:66;12119:66:37::1;::::0;::::1;13880:21:66::0;;;13917:18;;;13910:30;13976:34;13956:18;;;13949:62;14028:18;;12119:66:37::1;13696:356:66::0;12119:66:37::1;12220:34;::::0;::::1;12196:19;12220:34:::0;;;:14:::1;:34;::::0;;;;12218:36;;12196:19;;12218:36:::1;::::0;::::1;;;:::i;:::-;::::0;;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;;::::0;;::::1;;::::0;;;-1:-1:-1;12264:29:37;;;:15:::1;:29;::::0;;;;;;;:49:::1;::::0;::::1;::::0;;;;;;;12218:36;;-1:-1:-1;12264:56:37::1;::::0;12316:4;;12264:56:::1;:::i;:::-;-1:-1:-1::0;12398:86:37::1;::::0;;;;12380:7;;12398:22:::1;::::0;::::1;::::0;::::1;::::0;:86:::1;::::0;12421:10;;12433:18;;12453:12;;12467:10:::1;::::0;12479:4;;;;12398:86:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12540:12;12500:53;;12528:10;12508:18;12500:53;;;;;;;;;;;;11979:581;;;11834:726:::0;;;;:::o;16166:659::-;2583:21;:19;:21::i;:::-;16331:25;16355:1:::1;16331:25:::0;;;;16360:15:::1;::::0;::::1;16330:45;16310:17;16413:22:::0;;;:10:::1;:22;::::0;;;;;;;:32;;;;;;;;16484:24:::1;16464:16:::0;;;::::1;::::0;::::1;;::::0;:44;::::1;;;;;;:::i;:::-;;;16456:83;;;::::0;::::1;::::0;;15607:2:66;16456:83:37::1;::::0;::::1;15589:21:66::0;15646:2;15626:18;;;15619:30;15685:28;15665:18;;;15658:56;15731:18;;16456:83:37::1;15405:350:66::0;16456:83:37::1;16601:7;::::0;16574:23:::1;::::0;::::1;::::0;16557:41:::1;::::0;:12:::1;::::0;:16:::1;:41::i;:::-;:51;16549:96;;;::::0;::::1;::::0;;15962:2:66;16549:96:37::1;::::0;::::1;15944:21:66::0;;;15981:18;;;15974:30;16040:34;16020:18;;;16013:62;16092:18;;16549:96:37::1;15760:356:66::0;16549:96:37::1;16675:24;16656:16:::0;;::::1;:43:::0;;;::::1;::::0;::::1;::::0;;16777:20;;16656:43;16799:18;::::1;::::0;16714:104:::1;::::0;;16295:25:66;;;16351:2;16336:18;;16329:34;;;;16714:104:37::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;16268:18:66;16714:104:37::1;;;;;;;16300:525;;16166:659:::0;;;:::o;13224:2399::-;2662:15;:13;:15::i;:::-;1089:4:6;1112:7;;;1355:9:::1;1347:38;;;::::0;::::1;::::0;;13202:2:66;1347:38:6::1;::::0;::::1;13184:21:66::0;13241:2;13221:18;;;13214:30;13280:18;13260;;;13253:46;13316:18;;1347:38:6::1;13000:340:66::0;1347:38:6::1;13425:25:37::0;13449:1:::2;13425:25:::0;;;;13454:15:::2;::::0;::::2;13424:45;13404:17;13507:22:::0;;;:10:::2;:22;::::0;;;;;;;:32;;;;;;;;13558:39;;;:27:::2;:39:::0;;;;;;;:53:::2;:39;13550:91;;;::::0;::::2;::::0;;16576:2:66;13550:91:37::2;::::0;::::2;16558:21:66::0;16615:2;16595:18;;;16588:30;16654:27;16634:18;;;16627:55;16699:18;;13550:91:37::2;16374:349:66::0;13550:91:37::2;13667:16;::::0;;::::2;::::0;13688:1:::2;::::0;13667:16:::2;::::0;;::::2;::::0;13659:25;::::2;;;;;;:::i;:::-;:30;;13651:85;;;::::0;::::2;::::0;;16930:2:66;13651:85:37::2;::::0;::::2;16912:21:66::0;16969:2;16949:18;;;16942:30;17008:34;16988:18;;;16981:62;17079:12;17059:18;;;17052:40;17109:19;;13651:85:37::2;16728:406:66::0;13651:85:37::2;13755:31;::::0;::::2;;::::0;;;:19:::2;:31;::::0;;;;;;;:41;;;;;;;;13797:10:::2;13755:53:::0;;;;;;;;::::2;;13754:54;13746:88;;;::::0;::::2;::::0;;17341:2:66;13746:88:37::2;::::0;::::2;17323:21:66::0;17380:2;17360:18;;;17353:30;17419:23;17399:18;;;17392:51;17460:18;;13746:88:37::2;17139:345:66::0;13746:88:37::2;13857:16;::::0;;::::2;::::0;::::2;;::::0;13849:25;::::2;;;;;;:::i;:::-;13845:1149;;13897:15;;13895:17;;;;;:::i;:::-;::::0;;;-1:-1:-1;13961:285:37::2;::::0;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;::::2;::::0;;;14077:16;;14091:1:::2;14077:16:::0;;;;;::::2;::::0;;13961:285;;;;;14077:16:::2;;;;;;;;;;-1:-1:-1::0;;;13961:285:37;;14121:16:::2;::::0;;14135:1:::2;14121:16:::0;;;13961:285:::2;14121:16:::0;;::::2;::::0;;13961:285;;::::2;::::0;;;;14164:21:::2;13961:285:::0;;;;;;14219:12:::2;13961:285:::0;;;;;;;;13926:22:::2;::::0;::::2;::::0;;:10:::2;:22:::0;;;;;:32;;;;;;;;:320;;;;;;::::2;::::0;;;::::2;::::0;;;;;;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;13926:320:37::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;14285:10;14261:8;:18;;14280:1;14261:21;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;::::2;:34:::0;;;::::2;;::::0;;;::::2;::::0;;;::::2;::::0;;-1:-1:-1;14314:81:37::2;;::::0;;16295:25:66;;;16351:2;16336:18;;16329:34;;;14314:81:37::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;16268:18:66;14314:81:37::2;;;;;;;13845:1149;;;14474:7;::::0;14447:23:::2;::::0;::::2;::::0;14430:41:::2;::::0;:12:::2;::::0;:16:::2;:41::i;:::-;:51;14426:558;;;14686:24;14667:16:::0;;::::2;:43:::0;;;::::2;::::0;::::2;::::0;;14733:84:::2;::::0;14426:558:::2;14876:8;:18;;;14864:8;:30;14856:60;;;::::0;::::2;::::0;;18269:2:66;14856:60:37::2;::::0;::::2;18251:21:66::0;18308:2;18288:18;;;18281:30;18347:19;18327:18;;;18320:47;18384:18;;14856:60:37::2;18067:341:66::0;14856:60:37::2;14934:18;::::0;::::2;:35:::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;14934:35:37;;;::::2;::::0;;;::::2;::::0;;;::::2;14958:10;14934:35;::::0;;14426:558:::2;15027:24;15007:16:::0;;::::2;::::0;::::2;;:44:::0;;::::2;;;;;;:::i;:::-;;15003:614;;15067:31;::::0;::::2;;::::0;;;:19:::2;:31;::::0;;;;;;;:41;;;;;;;;15109:10:::2;15067:53:::0;;;;;;;:60;;;::::2;15123:4;15067:60;::::0;;15182:16:::2;::::0;;::::2;::::0;15067:60:::2;15182:16;::::0;15146:65;::::2;;;;;;:::i;:::-;15168:12;15146:65;;15159:7;15146:65;;;15200:10;15146:65;;;;2914:25:66::0;;2902:2;2887:18;;2768:177;15146:65:37::2;;;;;;;;15376:1;15355:17;;:22;;:72;;;-1:-1:-1::0;15410:17:37::2;::::0;15381:18:::2;::::0;::::2;:25:::0;:46:::2;;15355:72;15351:256;;;15447:16;::::0;::::2;:40:::0;;;::::2;15466:21;15447:40:::0;;::::2;::::0;;;15511:81:::2;::::0;;16295:25:66;;;16351:2;16336:18;;16329:34;;;15511:81:37::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;16268:18:66;15511:81:37::2;;;;;;;15351:256;13394:2229;;13224:2399:::0;;;;:::o;5719:145:4:-;5414:7;5440:12;;;:6;:12;;;;;;;;:22;;3958:30;3969:4;665:10:12;3958::4;:30::i;:::-;5832:25:::1;5843:4;5849:7;5832:10;:25::i;:::-;5719:145:::0;;;:::o;6736:214::-;6831:23;;;665:10:12;6831:23:4;6823:83;;;;;;;18615:2:66;6823:83:4;;;18597:21:66;18654:2;18634:18;;;18627:30;18693:34;18673:18;;;18666:62;18764:17;18744:18;;;18737:45;18799:19;;6823:83:4;18413:411:66;6823:83:4;6917:26;6929:4;6935:7;6917:11;:26::i;:::-;6736:214;;:::o;1376:65:37:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17484:1070::-;2662:15;:13;:15::i;:::-;1089:4:6;1112:7;;;1355:9:::1;1347:38;;;::::0;::::1;::::0;;13202:2:66;1347:38:6::1;::::0;::::1;13184:21:66::0;13241:2;13221:18;;;13214:30;13280:18;13260;;;13253:46;13316:18;;1347:38:6::1;13000:340:66::0;1347:38:6::1;17670:15:37::2;17688:39:::0;;;:27:::2;:39;::::0;;;;;;;;17841:31;;17688:39:::2;::::0;;::::2;::::0;17758:25;17782:1:::2;17758:25:::0;;;;17787:15:::2;::::0;::::2;17757:45;::::0;17670:15;;17841:31:::2;::::0;17688:39;;17867:4;;;;17841:31:::2;;:::i;:::-;;::::0;;;;;::::2;::::0;;;;;;17831:42;;17841:31:::2;17831:42:::0;;::::2;::::0;17911:22:::2;::::0;::::2;17883:25;17911:22:::0;;;:10:::2;:22:::0;;;;;:32;;;;;;;;;17831:42;;-1:-1:-1;17911:32:37;17962:16:::2;::::0;;::::2;::::0;::::2;;::::0;:43;::::2;;;;;;:::i;:::-;;;17954:78;;;::::0;::::2;::::0;;19905:2:66;17954:78:37::2;::::0;::::2;19887:21:66::0;19944:2;19924:18;;;19917:30;19983:24;19963:18;;;19956:52;20025:18;;17954:78:37::2;19703:346:66::0;17954:78:37::2;18070:21;18050:16;::::0;;::::2;::::0;::::2;;::::0;:41;::::2;;;;;;:::i;:::-;;18042:82;;;::::0;::::2;::::0;;20256:2:66;18042:82:37::2;::::0;::::2;20238:21:66::0;20295:2;20275:18;;;20268:30;20334;20314:18;;;20307:58;20382:18;;18042:82:37::2;20054:352:66::0;18042:82:37::2;18154:8;:18;;;18142:8;:30;18134:70;;;::::0;::::2;::::0;;20613:2:66;18134:70:37::2;::::0;::::2;20595:21:66::0;20652:2;20632:18;;;20625:30;20691:29;20671:18;;;20664:57;20738:18;;18134:70:37::2;20411:351:66::0;18134:70:37::2;18215:16;::::0;;::::2;:42:::0;;;::::2;18234:23;18215:42;::::0;;18345:20;;-1:-1:-1;18317:49:37;;;:27:::2;:49;::::0;;;;;;;18377:58;;;;;18317:49:::2;::::0;;::::2;::::0;;;18377:30:::2;::::0;:58:::2;::::0;18430:4;;;;18377:58:::2;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;;18488:16:37::2;::::0;;::::2;::::0;::::2;;::::0;-1:-1:-1;18451:96:37;::::2;;;;;;:::i;:::-;18474:12;18451:96;;18465:7;18451:96;;;18506:8;:20;;;18528:8;:18;;;18451:96;;;;;;16295:25:66::0;;;16351:2;16336:18;;16329:34;16283:2;16268:18;;16121:248;18451:96:37::2;;;;;;;;17660:894;;;;;17484:1070:::0;;;;;:::o;18944:217::-;2507:12;:10;:12::i;:::-;19063:9:::1;19058:97;19078:16:::0;;::::1;19058:97;;;19115:5;;19121:1;19115:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;:17;;:29;19133:7;;19141:1;19133:10;;;;;;;:::i;:::-;;;;;;;19115:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;19096:3:37;::::1;::::0;::::1;:::i;:::-;;;;19058:97;;;;18944:217:::0;;;;:::o;5724:179::-;2507:12;:10;:12::i;:::-;5812:17:::1;:32:::0;;;5859:37:::1;::::0;5832:12;;5859:37:::1;::::0;;;::::1;5724:179:::0;:::o;4328:119::-;4475:29:4;;;4387:4:37;4475:29:4;;;:12;;:29;:12;:29;;;;;4410:30:37;4374:137:4;4698:170:37;2507:12;:10;:12::i;:::-;4768:39:::1;2439:4:4;4798:8:37::0;4768:9:::1;:39::i;:::-;4817:44;2439:4:4;4850:10:37;4817:12;:44::i;:::-;4698:170:::0;:::o;11101:304::-;2507:12;:10;:12::i;:::-;11340:58:::1;::::0;;;;:16:::1;21628:15:66::0;;;11340:58:37::1;::::0;::::1;21610:34:66::0;21680:15;;;21660:18;;;21653:43;21712:18;;;21705:34;;;11315:14:37;;11340:16;;::::1;::::0;::::1;::::0;21522:18:66;;11340:58:37::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11271:134;11101:304:::0;;;;:::o;5056:75::-;2507:12;:10;:12::i;:::-;5116:8:::1;:6;:8::i;:::-;5056:75::o:0;9351:200::-;2507:12;:10;:12::i;:::-;9511:33:::1;::::0;;;;:19:::1;9836:55:66::0;;;9511:33:37::1;::::0;::::1;9818:74:66::0;9486:14:37;;9511:19;;::::1;::::0;::::1;::::0;9791:18:66;;9511:33:37::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9442:109;9351:200:::0;;:::o;10576:157::-;2507:12;:10;:12::i;:::-;10661:6:::1;10653:4;;:14;;10645:58;;;::::0;::::1;::::0;;21952:2:66;10645:58:37::1;::::0;::::1;21934:21:66::0;21991:2;21971:18;;;21964:30;22030:33;22010:18;;;22003:61;22081:18;;10645:58:37::1;21750:355:66::0;10645:58:37::1;10713:4;:13:::0;10576:157::o;6794:290::-;2507:12;:10;:12::i;:::-;4475:29:4;;;4452:4;4475:29;;;:12;;:29;:12;:29;;;;;6875:81:37::1;;;::::0;::::1;::::0;;22312:2:66;6875:81:37::1;::::0;::::1;22294:21:66::0;22351:2;22331:18;;;22324:30;22390:33;22370:18;;;22363:61;22441:18;;6875:81:37::1;22110:355:66::0;6875:81:37::1;6966:40;2444:25;6991:14;6966:10;:40::i;:::-;7021:30;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;7061:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;:::-;;;;;;6794:290:::0;:::o;10134:288::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10345:21:37;;;10340:1;10316:25;;;;;10315:51;10383:22;;;:10;:22;;;;;:32;;;;;;;;;10376:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10315:51:37;;10383:32;;10376:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10376:39:37;;;-1:-1:-1;;10376:39:37;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10134:288;;;;;:::o;7625:328::-;2507:12;:10;:12::i;:::-;7776:39:::1;::::0;;;:27:::1;:39;::::0;;;;;;:56;;;::::1;;::::0;;::::1;::::0;;::::1;::::0;;;7901:45;;;;;::::1;::::0;::::1;22845:25:66::0;;;22906:55;;;22886:18;;;22879:83;7776:56:37;;;7901:19:::1;::::0;22818:18:66;;7901:45:37::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7766:187;7625:328:::0;;;:::o;6204:284::-;2507:12;:10;:12::i;:::-;4475:29:4;;;4452:4;4475:29;;;:12;;:29;:12;:29;;;;;6290:38:37::1;6282:81;;;::::0;::::1;::::0;;23175:2:66;6282:81:37::1;::::0;::::1;23157:21:66::0;23214:2;23194:18;;;23187:30;23253:32;23233:18;;;23226:60;23303:18;;6282:81:37::1;22973:354:66::0;6282:81:37::1;6373:39;2444:25;6397:14;6373:9;:39::i;:::-;6427:28;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;6465:14;:16:::0;;;:14:::1;:16;::::0;::::1;:::i;6098:147:4:-:0;5414:7;5440:12;;;:6;:12;;;;;;;;:22;;3958:30;3969:4;665:10:12;3958::4;:30::i;:::-;6212:26:::1;6224:4;6230:7;6212:11;:26::i;8501:459:37:-:0;2507:12;:10;:12::i;:::-;8732:39:::1;::::0;;;:27:::1;:39;::::0;;;;;;:56;;;::::1;;::::0;;::::1;::::0;;::::1;::::0;;;8865:88;;;;;::::1;::::0;::::1;23559:25:66::0;;;23620:55;;;23600:18;;;23593:83;23695:66;23797:15;;;23777:18;;;23770:43;23849:15;;23829:18;;;23822:43;8732:56:37;;;8865:19:::1;::::0;23531::66;;8865:88:37::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8722:238;8501:459:::0;;;;;:::o;5321:79::-;2507:12;:10;:12::i;:::-;5383:10:::1;:8;:10::i;1531:437:13:-:0;1606:13;1631:19;1663:10;1667:6;1663:1;:10;:::i;:::-;:14;;1676:1;1663:14;:::i;:::-;1653:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1653:25:13;;1631:47;;1688:15;:6;1695:1;1688:9;;;;;;;;:::i;:::-;;;;:15;;;;;;;;;;;1713;:6;1720:1;1713:9;;;;;;;;:::i;:::-;;;;:15;;;;;;;;;;-1:-1:-1;1743:9:13;1755:10;1759:6;1755:1;:10;:::i;:::-;:14;;1768:1;1755:14;:::i;:::-;1743:26;;1738:128;1775:1;1771;:5;1738:128;;;1809:8;1818:5;1826:3;1818:11;1809:21;;;;;;;:::i;:::-;;;;1797:6;1804:1;1797:9;;;;;;;;:::i;:::-;;;;:33;;;;;;;;;;-1:-1:-1;1854:1:13;1844:11;;;;;1778:3;;;:::i;:::-;;;1738:128;;;-1:-1:-1;1883:10:13;;1875:55;;;;;;;24444:2:66;1875:55:13;;;24426:21:66;;;24463:18;;;24456:30;24522:34;24502:18;;;24495:62;24574:18;;1875:55:13;24242:356:66;1875:55:13;1954:6;1531:437;-1:-1:-1;;;1531:437:13:o;2701:214:37:-;2804:10;2439:4:4;4475:29;;;:12;;:29;:12;:29;;;;;2776:76:37;;;-1:-1:-1;2841:10:37;4452:4:4;4475:29;;;:12;;:29;:12;:29;;;;;2819:33:37;2755:153;;;;;;;24805:2:66;2755:153:37;;;24787:21:66;24844:2;24824:18;;;24817:30;24883:32;24863:18;;;24856:60;24933:18;;2755:153:37;24603:354:66;3039:96:16;3097:7;3123:5;3127:1;3123;:5;:::i;3061:133:37:-;3139:10;4452:4:4;4475:29;;;:12;;:29;:12;:29;;;;;3109:78:37;;;;;;;25294:2:66;3109:78:37;;;25276:21:66;;;25313:18;;;25306:30;25372:34;25352:18;;;25345:62;25424:18;;3109:78:37;25092:356:66;4792:375:4;4452:4;4475:12;;;:6;:12;;;;;;;;:29;;;;;;;;;;;;;4867:294;;5000:41;5028:7;5000:41;;5038:2;5000:19;:41::i;:::-;5096:38;5124:4;5131:2;5096:19;:38::i;:::-;4923:225;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;4909:241;;;;;;;;:::i;7948:224::-;4452:4;4475:12;;;:6;:12;;;;;;;;:29;;;;;;;;;;;;;8017:149;;8060:12;;;;8092:4;8060:12;;;;;;;;:29;;;;;;;;;;;:36;;;;;;;;;;8115:40;;665:10:12;;8060:12:4;;8115:40;;8060:12;8115:40;7948:224;;:::o;8178:225::-;4452:4;4475:12;;;:6;:12;;;;;;;;:29;;;;;;;;;;;;;8248:149;;;8322:5;8290:12;;;:6;:12;;;;;;;;:29;;;;;;;;;;;:37;;;;;;8346:40;665:10:12;;8290:12:4;;8346:40;;8322:5;8346:40;8178:225;;:::o;2921:134:37:-;3002:10;2439:4:4;4475:29;;;:12;;:29;:12;:29;;;;;2966:82:37;;;;;;;26670:2:66;2966:82:37;;;26652:21:66;26709:2;26689:18;;;26682:30;26748:32;26728:18;;;26721:60;26798:18;;2966:82:37;26468:354:66;1807:115:6;1089:4;1112:7;;;1355:9;1347:38;;;;;;;13202:2:66;1347:38:6;;;13184:21:66;13241:2;13221:18;;;13214:30;13280:18;13260;;;13253:46;13316:18;;1347:38:6;13000:340:66;1347:38:6;1866:7:::1;:14:::0;;;::::1;1876:4;1866:14;::::0;;1895:20:::1;1902:12;665:10:12::0;;586:96;1902:12:6::1;1895:20;::::0;9848:42:66;9836:55;;;9818:74;;9806:2;9791:18;1895:20:6::1;;;;;;;1807:115::o:0;2054:117::-;1089:4;1112:7;;;1613:41;;;;;;;27029:2:66;1613:41:6;;;27011:21:66;27068:2;27048:18;;;27041:30;27107:22;27087:18;;;27080:50;27147:18;;1613:41:6;26827:344:66;1613:41:6;2122:5:::1;2112:15:::0;;;::::1;::::0;;2142:22:::1;665:10:12::0;2151:12:6::1;586:96:12::0;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:219:66;81:20;;141:66;130:78;;120:89;;110:117;;223:1;220;213:12;110:117;14:219;;;:::o;238:184::-;296:6;349:2;337:9;328:7;324:23;320:32;317:52;;;365:1;362;355:12;317:52;388:28;406:9;388:28;:::i;619:156::-;685:20;;745:4;734:16;;724:27;;714:55;;765:1;762;755:12;780:347;831:8;841:6;895:3;888:4;880:6;876:17;872:27;862:55;;913:1;910;903:12;862:55;-1:-1:-1;936:20:66;;979:18;968:30;;965:50;;;1011:1;1008;1001:12;965:50;1048:4;1040:6;1036:17;1024:29;;1100:3;1093:4;1084:6;1076;1072:19;1068:30;1065:39;1062:59;;;1117:1;1114;1107:12;1062:59;780:347;;;;;:::o;1132:547::-;1218:6;1226;1234;1242;1295:2;1283:9;1274:7;1270:23;1266:32;1263:52;;;1311:1;1308;1301:12;1263:52;1334:27;1351:9;1334:27;:::i;:::-;1324:37;;1408:2;1397:9;1393:18;1380:32;1370:42;;1463:2;1452:9;1448:18;1435:32;1490:18;1482:6;1479:30;1476:50;;;1522:1;1519;1512:12;1476:50;1561:58;1611:7;1602:6;1591:9;1587:22;1561:58;:::i;:::-;1132:547;;;;-1:-1:-1;1638:8:66;-1:-1:-1;;;;1132:547:66:o;1684:171::-;1751:20;;1811:18;1800:30;;1790:41;;1780:69;;1845:1;1842;1835:12;1860:322;1934:6;1942;1950;2003:2;1991:9;1982:7;1978:23;1974:32;1971:52;;;2019:1;2016;2009:12;1971:52;2042:27;2059:9;2042:27;:::i;:::-;2032:37;;2088;2121:2;2110:9;2106:18;2088:37;:::i;:::-;2078:47;;2172:2;2161:9;2157:18;2144:32;2134:42;;1860:322;;;;;:::o;2187:391::-;2270:6;2278;2286;2294;2347:3;2335:9;2326:7;2322:23;2318:33;2315:53;;;2364:1;2361;2354:12;2315:53;2387:27;2404:9;2387:27;:::i;:::-;2377:37;;2433;2466:2;2455:9;2451:18;2433:37;:::i;:::-;2187:391;;2423:47;;-1:-1:-1;;;;2517:2:66;2502:18;;2489:32;;2568:2;2553:18;2540:32;;2187:391::o;2583:180::-;2642:6;2695:2;2683:9;2674:7;2670:23;2666:32;2663:52;;;2711:1;2708;2701:12;2663:52;-1:-1:-1;2734:23:66;;2583:180;-1:-1:-1;2583:180:66:o;2950:154::-;3036:42;3029:5;3025:54;3018:5;3015:65;3005:93;;3094:1;3091;3084:12;3109:315;3177:6;3185;3238:2;3226:9;3217:7;3213:23;3209:32;3206:52;;;3254:1;3251;3244:12;3206:52;3290:9;3277:23;3267:33;;3350:2;3339:9;3335:18;3322:32;3363:31;3388:5;3363:31;:::i;:::-;3413:5;3403:15;;;3109:315;;;;;:::o;3429:254::-;3494:6;3502;3555:2;3543:9;3534:7;3530:23;3526:32;3523:52;;;3571:1;3568;3561:12;3523:52;3594:28;3612:9;3594:28;:::i;:::-;3584:38;;3641:36;3673:2;3662:9;3658:18;3641:36;:::i;:::-;3631:46;;3429:254;;;;;:::o;3688:258::-;3760:1;3770:113;3784:6;3781:1;3778:13;3770:113;;;3860:11;;;3854:18;3841:11;;;3834:39;3806:2;3799:10;3770:113;;;3901:6;3898:1;3895:13;3892:48;;;3936:1;3927:6;3922:3;3918:16;3911:27;3892:48;;3688:258;;;:::o;3951:316::-;3992:3;4030:5;4024:12;4057:6;4052:3;4045:19;4073:63;4129:6;4122:4;4117:3;4113:14;4106:4;4099:5;4095:16;4073:63;:::i;:::-;4181:2;4169:15;4186:66;4165:88;4156:98;;;;4256:4;4152:109;;3951:316;-1:-1:-1;;3951:316:66:o;4272:217::-;4419:2;4408:9;4401:21;4382:4;4439:44;4479:2;4468:9;4464:18;4456:6;4439:44;:::i;4494:620::-;4588:6;4596;4604;4612;4620;4673:3;4661:9;4652:7;4648:23;4644:33;4641:53;;;4690:1;4687;4680:12;4641:53;4713:27;4730:9;4713:27;:::i;:::-;4703:37;;4759;4792:2;4781:9;4777:18;4759:37;:::i;:::-;4749:47;;4847:2;4836:9;4832:18;4819:32;4874:18;4866:6;4863:30;4860:50;;;4906:1;4903;4896:12;4860:50;4945:58;4995:7;4986:6;4975:9;4971:22;4945:58;:::i;:::-;4494:620;;;;-1:-1:-1;5022:8:66;5104:2;5089:18;5076:32;;4494:620;-1:-1:-1;;;;4494:620:66:o;5119:375::-;5190:8;5200:6;5254:3;5247:4;5239:6;5235:17;5231:27;5221:55;;5272:1;5269;5262:12;5221:55;-1:-1:-1;5295:20:66;;5338:18;5327:30;;5324:50;;;5370:1;5367;5360:12;5324:50;5407:4;5399:6;5395:17;5383:29;;5467:3;5460:4;5450:6;5447:1;5443:14;5435:6;5431:27;5427:38;5424:47;5421:67;;;5484:1;5481;5474:12;5499:797;5629:6;5637;5645;5653;5706:2;5694:9;5685:7;5681:23;5677:32;5674:52;;;5722:1;5719;5712:12;5674:52;5762:9;5749:23;5791:18;5832:2;5824:6;5821:14;5818:34;;;5848:1;5845;5838:12;5818:34;5887:78;5957:7;5948:6;5937:9;5933:22;5887:78;:::i;:::-;5984:8;;-1:-1:-1;5861:104:66;-1:-1:-1;6072:2:66;6057:18;;6044:32;;-1:-1:-1;6088:16:66;;;6085:36;;;6117:1;6114;6107:12;6085:36;;6156:80;6228:7;6217:8;6206:9;6202:24;6156:80;:::i;6301:182::-;6358:6;6411:2;6399:9;6390:7;6386:23;6382:32;6379:52;;;6427:1;6424;6417:12;6379:52;6450:27;6467:9;6450:27;:::i;6878:173::-;6945:20;;7005;6994:32;;6984:43;;6974:71;;7041:1;7038;7031:12;7056:252;7123:6;7131;7184:2;7172:9;7163:7;7159:23;7155:32;7152:52;;;7200:1;7197;7190:12;7152:52;7223:28;7241:9;7223:28;:::i;:::-;7213:38;7298:2;7283:18;;;;7270:32;;-1:-1:-1;;;7056:252:66:o;7313:184::-;7365:77;7362:1;7355:88;7462:4;7459:1;7452:15;7486:4;7483:1;7476:15;7502:299;7588:1;7581:5;7578:12;7568:200;;7624:77;7621:1;7614:88;7725:4;7722:1;7715:15;7753:4;7750:1;7743:15;7568:200;7777:18;;7502:299::o;7806:432::-;8054:25;;;8110:2;8095:18;;8088:34;;;8041:3;8026:19;;8131:58;8185:2;8170:18;;8162:6;8131:58;:::i;:::-;8225:6;8220:2;8209:9;8205:18;8198:34;7806:432;;;;;;;:::o;8243:247::-;8302:6;8355:2;8343:9;8334:7;8330:23;8326:32;8323:52;;;8371:1;8368;8361:12;8323:52;8410:9;8397:23;8429:31;8454:5;8429:31;:::i;8495:598::-;8581:6;8589;8597;8605;8658:3;8646:9;8637:7;8633:23;8629:33;8626:53;;;8675:1;8672;8665:12;8626:53;8714:9;8701:23;8733:31;8758:5;8733:31;:::i;:::-;8783:5;-1:-1:-1;8840:2:66;8825:18;;8812:32;8853:33;8812:32;8853:33;:::i;:::-;8905:7;-1:-1:-1;8964:2:66;8949:18;;8936:32;8977:33;8936:32;8977:33;:::i;:::-;8495:598;;;;-1:-1:-1;9029:7:66;;9083:2;9068:18;9055:32;;-1:-1:-1;;8495:598:66:o;9098:387::-;9174:6;9182;9190;9243:2;9231:9;9222:7;9218:23;9214:32;9211:52;;;9259:1;9256;9249:12;9211:52;9282:28;9300:9;9282:28;:::i;:::-;9272:38;;9357:2;9346:9;9342:18;9329:32;9319:42;;9411:2;9400:9;9396:18;9383:32;9424:31;9449:5;9424:31;:::i;:::-;9474:5;9464:15;;;9098:387;;;;;:::o;9903:388::-;9971:6;9979;10032:2;10020:9;10011:7;10007:23;10003:32;10000:52;;;10048:1;10045;10038:12;10000:52;10087:9;10074:23;10106:31;10131:5;10106:31;:::i;:::-;10156:5;-1:-1:-1;10213:2:66;10198:18;;10185:32;10226:33;10185:32;10226:33;:::i;10296:484::-;10349:3;10387:5;10381:12;10414:6;10409:3;10402:19;10440:4;10469:2;10464:3;10460:12;10453:19;;10506:2;10499:5;10495:14;10527:1;10537:218;10551:6;10548:1;10545:13;10537:218;;;10616:13;;10631:42;10612:62;10600:75;;10695:12;;;;10730:15;;;;10573:1;10566:9;10537:218;;;-1:-1:-1;10771:3:66;;10296:484;-1:-1:-1;;;;;10296:484:66:o;10785:953::-;10966:2;10955:9;10948:21;11011:6;11005:13;11000:2;10989:9;10985:18;10978:41;11073:2;11065:6;11061:15;11055:22;11050:2;11039:9;11035:18;11028:50;10929:4;11125:2;11117:6;11113:15;11107:22;11165:4;11160:2;11149:9;11145:18;11138:32;11193:63;11251:3;11240:9;11236:19;11222:12;11193:63;:::i;:::-;11179:77;;11305:2;11297:6;11293:15;11287:22;11374:66;11362:9;11354:6;11350:22;11346:95;11340:3;11329:9;11325:19;11318:124;11465:52;11510:6;11494:14;11465:52;:::i;:::-;11451:66;;;11566:3;11558:6;11554:16;11548:23;11580:67;11642:3;11631:9;11627:19;11611:14;11580:67;:::i;:::-;;11703:3;11695:6;11691:16;11685:23;11678:4;11667:9;11663:20;11656:53;11726:6;11718:14;;;10785:953;;;;:::o;11932:456::-;12009:6;12017;12025;12078:2;12066:9;12057:7;12053:23;12049:32;12046:52;;;12094:1;12091;12084:12;12046:52;12133:9;12120:23;12152:31;12177:5;12152:31;:::i;12393:602::-;12486:6;12494;12502;12510;12518;12571:3;12559:9;12550:7;12546:23;12542:33;12539:53;;;12588:1;12585;12578:12;12539:53;12627:9;12614:23;12646:31;12671:5;12646:31;:::i;:::-;12696:5;-1:-1:-1;12748:2:66;12733:18;;12720:32;;-1:-1:-1;12804:2:66;12789:18;;12776:32;12817:33;12776:32;12817:33;:::i;:::-;12869:7;-1:-1:-1;12895:37:66;12928:2;12913:18;;12895:37;:::i;:::-;12885:47;;12951:38;12984:3;12973:9;12969:19;12951:38;:::i;:::-;12941:48;;12393:602;;;;;;;;:::o;14057:184::-;14109:77;14106:1;14099:88;14206:4;14203:1;14196:15;14230:4;14227:1;14220:15;14246:209;14284:3;14312:18;14365:2;14358:5;14354:14;14392:2;14383:7;14380:15;14377:41;;;14398:18;;:::i;:::-;14447:1;14434:15;;14246:209;-1:-1:-1;;;14246:209:66:o;14460:325::-;14548:6;14543:3;14536:19;14600:6;14593:5;14586:4;14581:3;14577:14;14564:43;;14652:1;14645:4;14636:6;14631:3;14627:16;14623:27;14616:38;14518:3;14774:4;14704:66;14699:2;14691:6;14687:15;14683:88;14678:3;14674:98;14670:109;14663:116;;14460:325;;;;:::o;14790:610::-;15053:6;15042:9;15035:25;15108:4;15100:6;15096:17;15091:2;15080:9;15076:18;15069:45;15162:18;15154:6;15150:31;15145:2;15134:9;15130:18;15123:59;15230:42;15222:6;15218:55;15213:2;15202:9;15198:18;15191:83;15311:3;15305;15294:9;15290:19;15283:32;15016:4;15332:62;15389:3;15378:9;15374:19;15366:6;15358;15332:62;:::i;:::-;15324:70;14790:610;-1:-1:-1;;;;;;;;14790:610:66:o;17489:195::-;17528:3;17559:66;17552:5;17549:77;17546:103;;;17629:18;;:::i;:::-;-1:-1:-1;17676:1:66;17665:13;;17489:195::o;17689:184::-;17741:77;17738:1;17731:88;17838:4;17835:1;17828:15;17862:4;17859:1;17852:15;17878:184;17930:77;17927:1;17920:88;18027:4;18024:1;18017:15;18051:4;18048:1;18041:15;18829:437;18908:1;18904:12;;;;18951;;;18972:61;;19026:4;19018:6;19014:17;19004:27;;18972:61;19079:2;19071:6;19068:14;19048:18;19045:38;19042:218;;;19116:77;19113:1;19106:88;19217:4;19214:1;19207:15;19245:4;19242:1;19235:15;19042:218;;18829:437;;;:::o;19271:427::-;19489:66;19480:6;19476:2;19472:15;19468:88;19463:3;19456:101;19601:6;19593;19588:2;19583:3;19579:12;19566:42;19438:3;19631:16;;19649:2;19627:25;19661:13;;;19627:25;19271:427;-1:-1:-1;;19271:427:66:o;20767:315::-;20952:6;20941:9;20934:25;20995:2;20990;20979:9;20975:18;20968:30;20915:4;21015:61;21072:2;21061:9;21057:18;21049:6;21041;21015:61;:::i;:::-;21007:69;20767:315;-1:-1:-1;;;;;20767:315:66:o;22470:196::-;22509:3;22537:5;22527:39;;22546:18;;:::i;:::-;-1:-1:-1;22593:66:66;22582:78;;22470:196::o;23876:228::-;23916:7;24042:1;23974:66;23970:74;23967:1;23964:81;23959:1;23952:9;23945:17;23941:105;23938:131;;;24049:18;;:::i;:::-;-1:-1:-1;24089:9:66;;23876:228::o;24109:128::-;24149:3;24180:1;24176:6;24173:1;24170:13;24167:39;;;24186:18;;:::i;:::-;-1:-1:-1;24222:9:66;;24109:128::o;24962:125::-;25002:4;25030:1;25027;25024:8;25021:34;;;25035:18;;:::i;:::-;-1:-1:-1;25072:9:66;;24962:125::o;25453:786::-;25864:25;25859:3;25852:38;25834:3;25919:6;25913:13;25935:62;25990:6;25985:2;25980:3;25976:12;25969:4;25961:6;25957:17;25935:62;:::i;:::-;26061:19;26056:2;26016:16;;;26048:11;;;26041:40;26106:13;;26128:63;26106:13;26177:2;26169:11;;26162:4;26150:17;;26128:63;:::i;:::-;26211:17;26230:2;26207:26;;25453:786;-1:-1:-1;;;;25453:786:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "2803800",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "DEFAULT_ADMIN_ROLE()": "306",
                                "RELAYER_ROLE()": "285",
                                "_chainID()": "2403",
                                "_depositCounts(uint8)": "2613",
                                "_depositRecords(uint64,uint8)": "infinite",
                                "_expiry()": "2384",
                                "_fee()": "2362",
                                "_hasVotedOnProposal(uint72,bytes32,address)": "2835",
                                "_proposals(uint72,bytes32)": "9203",
                                "_relayerThreshold()": "2361",
                                "_resourceIDToHandlerAddress(bytes32)": "2521",
                                "_totalProposals()": "2362",
                                "_totalRelayers()": "2406",
                                "adminAddRelayer(address)": "infinite",
                                "adminChangeFee(uint256)": "26777",
                                "adminChangeRelayerThreshold(uint256)": "25764",
                                "adminPauseTransfers()": "infinite",
                                "adminRemoveRelayer(address)": "infinite",
                                "adminSetBurnable(address,address)": "infinite",
                                "adminSetGenericResource(address,bytes32,address,bytes4,bytes4)": "infinite",
                                "adminSetResource(address,bytes32,address)": "infinite",
                                "adminUnpauseTransfers()": "infinite",
                                "adminWithdraw(address,address,address,uint256)": "infinite",
                                "cancelProposal(uint8,uint64,bytes32)": "infinite",
                                "deposit(uint8,bytes32,bytes)": "infinite",
                                "executeProposal(uint8,uint64,bytes,bytes32)": "infinite",
                                "getProposal(uint8,uint64,bytes32)": "infinite",
                                "getRoleAdmin(bytes32)": "2519",
                                "grantRole(bytes32,address)": "infinite",
                                "hasRole(bytes32,address)": "2685",
                                "isRelayer(address)": "2654",
                                "paused()": "2361",
                                "renounceAdmin(address)": "infinite",
                                "renounceRole(bytes32,address)": "28978",
                                "revokeRole(bytes32,address)": "infinite",
                                "supportsInterface(bytes4)": "451",
                                "transferFunds(address[],uint256[])": "infinite",
                                "voteProposal(uint8,uint64,bytes32,bytes32)": "infinite"
                            },
                            "internal": {
                                "_onlyAdmin()": "infinite",
                                "_onlyAdminOrRelayer()": "infinite",
                                "_onlyRelayers()": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "DEFAULT_ADMIN_ROLE()": "a217fddf",
                            "RELAYER_ROLE()": "926d7d7f",
                            "_chainID()": "beab7131",
                            "_depositCounts(uint8)": "4b0b919d",
                            "_depositRecords(uint64,uint8)": "3ee7094a",
                            "_expiry()": "c5ec8970",
                            "_fee()": "c5b37c22",
                            "_hasVotedOnProposal(uint72,bytes32,address)": "7febe63f",
                            "_proposals(uint72,bytes32)": "50598719",
                            "_relayerThreshold()": "d7a9cd79",
                            "_resourceIDToHandlerAddress(bytes32)": "84db809f",
                            "_totalProposals()": "9d5773e0",
                            "_totalRelayers()": "802aabe8",
                            "adminAddRelayer(address)": "cdb0f73a",
                            "adminChangeFee(uint256)": "91c404ac",
                            "adminChangeRelayerThreshold(uint256)": "4e056005",
                            "adminPauseTransfers()": "80ae1c28",
                            "adminRemoveRelayer(address)": "9d82dd63",
                            "adminSetBurnable(address,address)": "8c0c2631",
                            "adminSetGenericResource(address,bytes32,address,bytes4,bytes4)": "e8437ee7",
                            "adminSetResource(address,bytes32,address)": "cb10f215",
                            "adminUnpauseTransfers()": "ffaac0eb",
                            "adminWithdraw(address,address,address,uint256)": "780cf004",
                            "cancelProposal(uint8,uint64,bytes32)": "17f03ce5",
                            "deposit(uint8,bytes32,bytes)": "05e2ca17",
                            "executeProposal(uint8,uint64,bytes,bytes32)": "4454b20d",
                            "getProposal(uint8,uint64,bytes32)": "a9cf69fa",
                            "getRoleAdmin(bytes32)": "248a9ca3",
                            "grantRole(bytes32,address)": "2f2ff15d",
                            "hasRole(bytes32,address)": "91d14854",
                            "isRelayer(address)": "541d5548",
                            "paused()": "5c975abb",
                            "renounceAdmin(address)": "5e1fab0f",
                            "renounceRole(bytes32,address)": "36568abe",
                            "revokeRole(bytes32,address)": "d547741f",
                            "supportsInterface(bytes4)": "01ffc9a7",
                            "transferFunds(address[],uint256[])": "4603ae38",
                            "voteProposal(uint8,uint64,bytes32,bytes32)": "1ff013f1"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"address[]\",\"name\":\"initialRelayers\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"initialRelayerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"originChainID\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"ProposalEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"originChainID\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"}],\"name\":\"ProposalVote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"RelayerThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_chainID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_depositCounts\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_expiry\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint72\",\"name\":\"\",\"type\":\"uint72\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_hasVotedOnProposal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint72\",\"name\":\"\",\"type\":\"uint72\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_proposals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"_status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_proposedBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_relayerThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_totalProposals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_totalRelayers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminAddRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"adminChangeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"adminChangeRelayerThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminPauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminRemoveRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"adminSetGenericResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminUnpauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOrTokenID\",\"type\":\"uint256\"}],\"name\":\"adminWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"cancelProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"originChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"getProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address[]\",\"name\":\"_yesVotes\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_noVotes\",\"type\":\"address[]\"},{\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"_status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"_proposedBlock\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"isRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"addrs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"transferFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"chainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"voteProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"adminAddRelayer(address)\":{\"params\":{\"relayerAddress\":\"Address of relayer to be added.\"}},\"adminChangeFee(uint256)\":{\"params\":{\"newFee\":\"Value {_fee} will be updated to.\"}},\"adminChangeRelayerThreshold(uint256)\":{\"params\":{\"newThreshold\":\"Value {_relayerThreshold} will be changed to.\"}},\"adminRemoveRelayer(address)\":{\"params\":{\"relayerAddress\":\"Address of relayer to be removed.\"}},\"adminSetBurnable(address,address)\":{\"params\":{\"handlerAddress\":\"Address of handler resource will be set for.\",\"tokenAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\"}},\"adminSetGenericResource(address,bytes32,address,bytes4,bytes4)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"handlerAddress\":\"Address of handler resource will be set for.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"adminSetResource(address,bytes32,address)\":{\"params\":{\"handlerAddress\":\"Address of handler resource will be set for.\",\"resourceID\":\"ResourceID to be used when making deposits.\",\"tokenAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\"}},\"adminWithdraw(address,address,address,uint256)\":{\"params\":{\"amountOrTokenID\":\"Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.\",\"handlerAddress\":\"Address of handler to withdraw from.\",\"recipient\":\"Address to withdraw tokens to.\",\"tokenAddress\":\"Address of token to withdraw.\"}},\"cancelProposal(uint8,uint64,bytes32)\":{\"params\":{\"chainID\":\"ID of chain deposit originated from.\",\"dataHash\":\"Hash of data originally provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\"}},\"constructor\":{\"params\":{\"chainID\":\"ID of chain the Bridge contract exists on.\",\"initialRelayerThreshold\":\"Number of votes needed for a deposit proposal to be considered passed.\",\"initialRelayers\":\"Addresses that should be initially granted the relayer role.\"}},\"deposit(uint8,bytes32,bytes)\":{\"params\":{\"data\":\"Additional data to be passed to specified handler.\",\"destinationChainID\":\"ID of chain deposit will be bridged to.\",\"resourceID\":\"ResourceID used to find address of handler to be used for deposit.\"}},\"executeProposal(uint8,uint64,bytes,bytes32)\":{\"params\":{\"chainID\":\"ID of chain deposit originated from.\",\"data\":\"Data originally provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"getProposal(uint8,uint64,bytes32)\":{\"params\":{\"dataHash\":\"Hash of data to be provided when deposit proposal is executed.\",\"depositNonce\":\"ID of proposal generated by proposal's origin Bridge contract.\",\"originChainID\":\"Chain ID deposit originated from.\"},\"returns\":{\"_0\":\"Proposal which consists of: - _dataHash Hash of data to be provided when deposit proposal is executed. - _yesVotes Number of votes in favor of proposal. - _noVotes Number of votes against proposal. - _status Current status of proposal.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isRelayer(address)\":{\"params\":{\"relayer\":\"Address to check.\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceAdmin(address)\":{\"params\":{\"newAdmin\":\"Address that admin role will be granted to.\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferFunds(address[],uint256[])\":{\"params\":{\"addrs\":\"Array of addresses to transfer {amounts} to.\",\"amounts\":\"Array of amonuts to transfer to {addrs}.\"}},\"voteProposal(uint8,uint64,bytes32,bytes32)\":{\"params\":{\"chainID\":\"ID of chain deposit originated from.\",\"dataHash\":\"Hash of data provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\"}}},\"title\":\"Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"adminAddRelayer(address)\":{\"notice\":\"Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.Only callable by an address that currently has the admin role.Emits {RelayerAdded} event.\"},\"adminChangeFee(uint256)\":{\"notice\":\"Changes deposit fee.Only callable by admin.\"},\"adminChangeRelayerThreshold(uint256)\":{\"notice\":\"Modifies the number of votes required for a proposal to be considered passed.Only callable by an address that currently has the admin role.Emits {RelayerThresholdChanged} event.\"},\"adminPauseTransfers()\":{\"notice\":\"Pauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role.\"},\"adminRemoveRelayer(address)\":{\"notice\":\"Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.Only callable by an address that currently has the admin role.Emits {RelayerRemoved} event.\"},\"adminSetBurnable(address,address)\":{\"notice\":\"Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role.\"},\"adminSetGenericResource(address,bytes32,address,bytes4,bytes4)\":{\"notice\":\"Sets a new resource for handler contracts that use the IGenericHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role.\"},\"adminSetResource(address,bytes32,address)\":{\"notice\":\"Sets a new resource for handler contracts that use the IERCHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role.\"},\"adminUnpauseTransfers()\":{\"notice\":\"Unpauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role.\"},\"adminWithdraw(address,address,address,uint256)\":{\"notice\":\"Used to manually withdraw funds from ERC safes.\"},\"cancelProposal(uint8,uint64,bytes32)\":{\"notice\":\"Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must be past expiry threshold.Emits {ProposalEvent} event with status {Cancelled}.\"},\"constructor\":{\"notice\":\"Initializes Bridge, creates and grants {msg.sender} the admin role, creates and grants {initialRelayers} the relayer role.\"},\"deposit(uint8,bytes32,bytes)\":{\"notice\":\"Initiates a transfer using a specified handler contract.Only callable when Bridge is not paused.Emits {Deposit} event.\"},\"executeProposal(uint8,uint64,bytes,bytes32)\":{\"notice\":\"Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must have Passed status.Hash of {data} must equal proposal's {dataHash}.Emits {ProposalEvent} event with status {Executed}.\"},\"getProposal(uint8,uint64,bytes32)\":{\"notice\":\"Returns a proposal.\"},\"isRelayer(address)\":{\"notice\":\"Returns true if {relayer} has the relayer role.\"},\"renounceAdmin(address)\":{\"notice\":\"Removes admin role from {msg.sender} and grants it to {newAdmin}.Only callable by an address that currently has the admin role.\"},\"transferFunds(address[],uint256[])\":{\"notice\":\"Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1. This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\"},\"voteProposal(uint8,uint64,bytes32,bytes32)\":{\"notice\":\"When called, {msg.sender} will be marked as voting in favor of proposal.Only callable by relayers when Bridge is not paused.Proposal must not have already been passed or executed.{msg.sender} must not have already voted on proposal.Emits {ProposalEvent} event with status indicating the proposal status.Emits {ProposalVote} event.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/chainbridge/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\nimport \\\"../utils/Strings.sol\\\";\\nimport \\\"../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev External interface of AccessControl declared to support ERC165 detection.\\n */\\ninterface IAccessControl {\\n    function hasRole(bytes32 role, address account) external view returns (bool);\\n    function getRoleAdmin(bytes32 role) external view returns (bytes32);\\n    function grantRole(bytes32 role, address account) external;\\n    function revokeRole(bytes32 role, address account) external;\\n    function renounceRole(bytes32 role, address account) external;\\n}\\n\\n/**\\n * @dev Contract module that allows children to implement role-based access\\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\\n * members except through off-chain means by accessing the contract event logs. Some\\n * applications may benefit from on-chain enumerability, for those cases see\\n * {AccessControlEnumerable}.\\n *\\n * Roles are referred to by their `bytes32` identifier. These should be exposed\\n * in the external API and be unique. The best way to achieve this is by\\n * using `public constant` hash digests:\\n *\\n * ```\\n * bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\");\\n * ```\\n *\\n * Roles can be used to represent a set of permissions. To restrict access to a\\n * function call, use {hasRole}:\\n *\\n * ```\\n * function foo() public {\\n *     require(hasRole(MY_ROLE, msg.sender));\\n *     ...\\n * }\\n * ```\\n *\\n * Roles can be granted and revoked dynamically via the {grantRole} and\\n * {revokeRole} functions. Each role has an associated admin role, and only\\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\\n *\\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\\n * that only accounts with this role will be able to grant or revoke other\\n * roles. More complex role relationships can be created by using\\n * {_setRoleAdmin}.\\n *\\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\\n * grant and revoke this role. Extra precautions should be taken to secure\\n * accounts that have been granted it.\\n */\\nabstract contract AccessControl is Context, IAccessControl, ERC165 {\\n    struct RoleData {\\n        mapping (address => bool) members;\\n        bytes32 adminRole;\\n    }\\n\\n    mapping (bytes32 => RoleData) private _roles;\\n\\n    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\\n\\n    /**\\n     * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\\n     *\\n     * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\\n     * {RoleAdminChanged} not being emitted signaling this.\\n     *\\n     * _Available since v3.1._\\n     */\\n    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\\n\\n    /**\\n     * @dev Emitted when `account` is granted `role`.\\n     *\\n     * `sender` is the account that originated the contract call, an admin role\\n     * bearer except when using {_setupRole}.\\n     */\\n    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Emitted when `account` is revoked `role`.\\n     *\\n     * `sender` is the account that originated the contract call:\\n     *   - if using `revokeRole`, it is the admin role bearer\\n     *   - if using `renounceRole`, it is the role bearer (i.e. `account`)\\n     */\\n    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\\n\\n    /**\\n     * @dev Modifier that checks that an account has a specific role. Reverts\\n     * with a standardized message including the required role.\\n     *\\n     * The format of the revert reason is given by the following regular expression:\\n     *\\n     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\\n     *\\n     * _Available since v4.1._\\n     */\\n    modifier onlyRole(bytes32 role) {\\n        _checkRole(role, _msgSender());\\n        _;\\n    }\\n\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IAccessControl).interfaceId\\n            || super.supportsInterface(interfaceId);\\n    }\\n\\n    /**\\n     * @dev Returns `true` if `account` has been granted `role`.\\n     */\\n    function hasRole(bytes32 role, address account) public view override returns (bool) {\\n        return _roles[role].members[account];\\n    }\\n\\n    /**\\n     * @dev Revert with a standard message if `account` is missing `role`.\\n     *\\n     * The format of the revert reason is given by the following regular expression:\\n     *\\n     *  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\\n     */\\n    function _checkRole(bytes32 role, address account) internal view {\\n        if(!hasRole(role, account)) {\\n            revert(string(abi.encodePacked(\\n                \\\"AccessControl: account \\\",\\n                Strings.toHexString(uint160(account), 20),\\n                \\\" is missing role \\\",\\n                Strings.toHexString(uint256(role), 32)\\n            )));\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the admin role that controls `role`. See {grantRole} and\\n     * {revokeRole}.\\n     *\\n     * To change a role's admin, use {_setRoleAdmin}.\\n     */\\n    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {\\n        return _roles[role].adminRole;\\n    }\\n\\n    /**\\n     * @dev Grants `role` to `account`.\\n     *\\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n        _grantRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Revokes `role` from `account`.\\n     *\\n     * If `account` had been granted `role`, emits a {RoleRevoked} event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must have ``role``'s admin role.\\n     */\\n    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {\\n        _revokeRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Revokes `role` from the calling account.\\n     *\\n     * Roles are often managed via {grantRole} and {revokeRole}: this function's\\n     * purpose is to provide a mechanism for accounts to lose their privileges\\n     * if they are compromised (such as when a trusted device is misplaced).\\n     *\\n     * If the calling account had been granted `role`, emits a {RoleRevoked}\\n     * event.\\n     *\\n     * Requirements:\\n     *\\n     * - the caller must be `account`.\\n     */\\n    function renounceRole(bytes32 role, address account) public virtual override {\\n        require(account == _msgSender(), \\\"AccessControl: can only renounce roles for self\\\");\\n\\n        _revokeRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Grants `role` to `account`.\\n     *\\n     * If `account` had not been already granted `role`, emits a {RoleGranted}\\n     * event. Note that unlike {grantRole}, this function doesn't perform any\\n     * checks on the calling account.\\n     *\\n     * [WARNING]\\n     * ====\\n     * This function should only be called from the constructor when setting\\n     * up the initial roles for the system.\\n     *\\n     * Using this function in any other way is effectively circumventing the admin\\n     * system imposed by {AccessControl}.\\n     * ====\\n     */\\n    function _setupRole(bytes32 role, address account) internal virtual {\\n        _grantRole(role, account);\\n    }\\n\\n    /**\\n     * @dev Sets `adminRole` as ``role``'s admin role.\\n     *\\n     * Emits a {RoleAdminChanged} event.\\n     */\\n    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\\n        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);\\n        _roles[role].adminRole = adminRole;\\n    }\\n\\n    function _grantRole(bytes32 role, address account) private {\\n        if (!hasRole(role, account)) {\\n            _roles[role].members[account] = true;\\n            emit RoleGranted(role, account, _msgSender());\\n        }\\n    }\\n\\n    function _revokeRole(bytes32 role, address account) private {\\n        if (hasRole(role, account)) {\\n            _roles[role].members[account] = false;\\n            emit RoleRevoked(role, account, _msgSender());\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x98fac37221212c8f126f198d262a4df86394bd1a9969f61e40739fe8ac013dd8\",\"license\":\"MIT\"},\"@openzeppelin/contracts/security/Pausable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which allows children to implement an emergency stop\\n * mechanism that can be triggered by an authorized account.\\n *\\n * This module is used through inheritance. It will make available the\\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\\n * the functions of your contract. Note that they will not be pausable by\\n * simply including this module, only once the modifiers are put in place.\\n */\\nabstract contract Pausable is Context {\\n    /**\\n     * @dev Emitted when the pause is triggered by `account`.\\n     */\\n    event Paused(address account);\\n\\n    /**\\n     * @dev Emitted when the pause is lifted by `account`.\\n     */\\n    event Unpaused(address account);\\n\\n    bool private _paused;\\n\\n    /**\\n     * @dev Initializes the contract in unpaused state.\\n     */\\n    constructor () {\\n        _paused = false;\\n    }\\n\\n    /**\\n     * @dev Returns true if the contract is paused, and false otherwise.\\n     */\\n    function paused() public view virtual returns (bool) {\\n        return _paused;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is not paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    modifier whenNotPaused() {\\n        require(!paused(), \\\"Pausable: paused\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Modifier to make a function callable only when the contract is paused.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    modifier whenPaused() {\\n        require(paused(), \\\"Pausable: not paused\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Triggers stopped state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must not be paused.\\n     */\\n    function _pause() internal virtual whenNotPaused {\\n        _paused = true;\\n        emit Paused(_msgSender());\\n    }\\n\\n    /**\\n     * @dev Returns to normal state.\\n     *\\n     * Requirements:\\n     *\\n     * - The contract must be paused.\\n     */\\n    function _unpause() internal virtual whenPaused {\\n        _paused = false;\\n        emit Unpaused(_msgSender());\\n    }\\n}\\n\",\"keccak256\":\"0xab1f67e4c96dfe0e3875d22883c3dee5411914f40ce0c54ef407f030d803512e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n    bytes16 private constant alphabet = \\\"0123456789abcdef\\\";\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n     */\\n    function toString(uint256 value) internal pure returns (string memory) {\\n        // Inspired by OraclizeAPI's implementation - MIT licence\\n        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\\n\\n        if (value == 0) {\\n            return \\\"0\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 digits;\\n        while (temp != 0) {\\n            digits++;\\n            temp /= 10;\\n        }\\n        bytes memory buffer = new bytes(digits);\\n        while (value != 0) {\\n            digits -= 1;\\n            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));\\n            value /= 10;\\n        }\\n        return string(buffer);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n     */\\n    function toHexString(uint256 value) internal pure returns (string memory) {\\n        if (value == 0) {\\n            return \\\"0x00\\\";\\n        }\\n        uint256 temp = value;\\n        uint256 length = 0;\\n        while (temp != 0) {\\n            length++;\\n            temp >>= 8;\\n        }\\n        return toHexString(value, length);\\n    }\\n\\n    /**\\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n     */\\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n        bytes memory buffer = new bytes(2 * length + 2);\\n        buffer[0] = \\\"0\\\";\\n        buffer[1] = \\\"x\\\";\\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\\n            buffer[i] = alphabet[value & 0xf];\\n            value >>= 4;\\n        }\\n        require(value == 0, \\\"Strings: hex length insufficient\\\");\\n        return string(buffer);\\n    }\\n\\n}\\n\",\"keccak256\":\"0x456e9b3a2bfe189b5249857f624f4139e59331db518483b456c4e587a20552e0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n    /**\\n     * @dev See {IERC165-supportsInterface}.\\n     */\\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n        return interfaceId == type(IERC165).interfaceId;\\n    }\\n}\\n\",\"keccak256\":\"0x5718c5df9bd67ac68a796961df938821bb5dc0cd4c6118d77e9145afb187409b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n    /**\\n     * @dev Returns true if this contract implements the interface defined by\\n     * `interfaceId`. See the corresponding\\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n     * to learn more about how these ids are created.\\n     *\\n     * This function call must use less than 30 000 gas.\\n     */\\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0xa28007762d9da9db878dd421960c8cb9a10471f47ab5c1b3309bfe48e9e79ff4\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            uint256 c = a + b;\\n            if (c < a) return (false, 0);\\n            return (true, c);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b > a) return (false, 0);\\n            return (true, a - b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n            // benefit is lost if 'b' is also tested.\\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n            if (a == 0) return (true, 0);\\n            uint256 c = a * b;\\n            if (c / a != b) return (false, 0);\\n            return (true, c);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b == 0) return (false, 0);\\n            return (true, a / b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b == 0) return (false, 0);\\n            return (true, a % b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a + b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting on\\n     * overflow (when the result is negative).\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a - b;\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a * b;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a / b;\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting when dividing by zero.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a % b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n     * overflow (when the result is negative).\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {trySub}.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b <= a, errorMessage);\\n            return a - b;\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b > 0, errorMessage);\\n            return a / b;\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting with custom message when dividing by zero.\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {tryMod}.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b > 0, errorMessage);\\n            return a % b;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\"},\"contracts/external/chainbridge/Bridge.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/access/AccessControl.sol\\\";\\nimport \\\"@openzeppelin/contracts/security/Pausable.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport \\\"./interfaces/IDepositExecute.sol\\\";\\nimport \\\"./interfaces/IBridge.sol\\\";\\nimport \\\"./interfaces/IERCHandler.sol\\\";\\nimport \\\"./interfaces/IGenericHandler.sol\\\";\\n\\n/**\\n    @title Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\\n    @author ChainSafe Systems.\\n */\\ncontract Bridge is Pausable, AccessControl {\\n    using SafeMath for uint256;\\n\\n    uint8 public _chainID;\\n    uint256 public _relayerThreshold;\\n    uint256 public _totalRelayers;\\n    uint256 public _totalProposals;\\n    uint256 public _fee;\\n    uint256 public _expiry;\\n\\n    enum Vote { No, Yes }\\n\\n    enum ProposalStatus { Inactive, Active, Passed, Executed, Cancelled }\\n\\n    struct Proposal {\\n        bytes32 _resourceID;\\n        bytes32 _dataHash;\\n        address[] _yesVotes;\\n        address[] _noVotes;\\n        ProposalStatus _status;\\n        uint256 _proposedBlock;\\n    }\\n\\n    // destinationChainID => number of deposits\\n    mapping(uint8 => uint64) public _depositCounts;\\n    // resourceID => handler address\\n    mapping(bytes32 => address) public _resourceIDToHandlerAddress;\\n    // depositNonce => destinationChainID => bytes\\n    mapping(uint64 => mapping(uint8 => bytes)) public _depositRecords;\\n    // destinationChainID + depositNonce => dataHash => Proposal\\n    mapping(uint72 => mapping(bytes32 => Proposal)) public _proposals;\\n    // destinationChainID + depositNonce => dataHash => relayerAddress => bool\\n    mapping(uint72 => mapping(bytes32 => mapping(address => bool))) public _hasVotedOnProposal;\\n\\n    event RelayerThresholdChanged(uint256 indexed newThreshold);\\n    event RelayerAdded(address indexed relayer);\\n    event RelayerRemoved(address indexed relayer);\\n    event Deposit(uint8 indexed destinationChainID, bytes32 indexed resourceID, uint64 indexed depositNonce);\\n    event ProposalEvent(\\n        uint8 indexed originChainID,\\n        uint64 indexed depositNonce,\\n        ProposalStatus indexed status,\\n        bytes32 resourceID,\\n        bytes32 dataHash\\n    );\\n\\n    event ProposalVote(\\n        uint8 indexed originChainID,\\n        uint64 indexed depositNonce,\\n        ProposalStatus indexed status,\\n        bytes32 resourceID\\n    );\\n\\n    bytes32 public constant RELAYER_ROLE = keccak256(\\\"RELAYER_ROLE\\\");\\n\\n    modifier onlyAdmin() {\\n        _onlyAdmin();\\n        _;\\n    }\\n\\n    modifier onlyAdminOrRelayer() {\\n        _onlyAdminOrRelayer();\\n        _;\\n    }\\n\\n    modifier onlyRelayers() {\\n        _onlyRelayers();\\n        _;\\n    }\\n\\n    function _onlyAdminOrRelayer() private view {\\n        require(\\n            hasRole(DEFAULT_ADMIN_ROLE, msg.sender) || hasRole(RELAYER_ROLE, msg.sender),\\n            \\\"sender is not relayer or admin\\\"\\n        );\\n    }\\n\\n    function _onlyAdmin() private view {\\n        require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), \\\"sender doesn't have admin role\\\");\\n    }\\n\\n    function _onlyRelayers() private view {\\n        require(hasRole(RELAYER_ROLE, msg.sender), \\\"sender doesn't have relayer role\\\");\\n    }\\n\\n    /**\\n        @notice Initializes Bridge, creates and grants {msg.sender} the admin role,\\n        creates and grants {initialRelayers} the relayer role.\\n        @param chainID ID of chain the Bridge contract exists on.\\n        @param initialRelayers Addresses that should be initially granted the relayer role.\\n        @param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed.\\n     */\\n    constructor(\\n        uint8 chainID,\\n        address[] memory initialRelayers,\\n        uint256 initialRelayerThreshold,\\n        uint256 fee,\\n        uint256 expiry\\n    ) {\\n        _chainID = chainID;\\n        _relayerThreshold = initialRelayerThreshold;\\n        _fee = fee;\\n        _expiry = expiry;\\n\\n        _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\\n        _setRoleAdmin(RELAYER_ROLE, DEFAULT_ADMIN_ROLE);\\n\\n        for (uint256 i; i < initialRelayers.length; i++) {\\n            grantRole(RELAYER_ROLE, initialRelayers[i]);\\n            _totalRelayers++;\\n        }\\n    }\\n\\n    /**\\n        @notice Returns true if {relayer} has the relayer role.\\n        @param relayer Address to check.\\n     */\\n    function isRelayer(address relayer) external view returns (bool) {\\n        return hasRole(RELAYER_ROLE, relayer);\\n    }\\n\\n    /**\\n        @notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\\n        @notice Only callable by an address that currently has the admin role.\\n        @param newAdmin Address that admin role will be granted to.\\n     */\\n    function renounceAdmin(address newAdmin) external onlyAdmin {\\n        grantRole(DEFAULT_ADMIN_ROLE, newAdmin);\\n        renounceRole(DEFAULT_ADMIN_ROLE, msg.sender);\\n    }\\n\\n    /**\\n        @notice Pauses deposits, proposal creation and voting, and deposit executions.\\n        @notice Only callable by an address that currently has the admin role.\\n     */\\n    function adminPauseTransfers() external onlyAdmin {\\n        _pause();\\n    }\\n\\n    /**\\n        @notice Unpauses deposits, proposal creation and voting, and deposit executions.\\n        @notice Only callable by an address that currently has the admin role.\\n     */\\n    function adminUnpauseTransfers() external onlyAdmin {\\n        _unpause();\\n    }\\n\\n    /**\\n        @notice Modifies the number of votes required for a proposal to be considered passed.\\n        @notice Only callable by an address that currently has the admin role.\\n        @param newThreshold Value {_relayerThreshold} will be changed to.\\n        @notice Emits {RelayerThresholdChanged} event.\\n     */\\n    function adminChangeRelayerThreshold(uint256 newThreshold) external onlyAdmin {\\n        _relayerThreshold = newThreshold;\\n        emit RelayerThresholdChanged(newThreshold);\\n    }\\n\\n    /**\\n        @notice Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.\\n        @notice Only callable by an address that currently has the admin role.\\n        @param relayerAddress Address of relayer to be added.\\n        @notice Emits {RelayerAdded} event.\\n     */\\n    function adminAddRelayer(address relayerAddress) external onlyAdmin {\\n        require(!hasRole(RELAYER_ROLE, relayerAddress), \\\"addr already has relayer role!\\\");\\n        grantRole(RELAYER_ROLE, relayerAddress);\\n        emit RelayerAdded(relayerAddress);\\n        _totalRelayers++;\\n    }\\n\\n    /**\\n        @notice Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.\\n        @notice Only callable by an address that currently has the admin role.\\n        @param relayerAddress Address of relayer to be removed.\\n        @notice Emits {RelayerRemoved} event.\\n     */\\n    function adminRemoveRelayer(address relayerAddress) external onlyAdmin {\\n        require(hasRole(RELAYER_ROLE, relayerAddress), \\\"addr doesn't have relayer role!\\\");\\n        revokeRole(RELAYER_ROLE, relayerAddress);\\n        emit RelayerRemoved(relayerAddress);\\n        _totalRelayers--;\\n    }\\n\\n    /**\\n        @notice Sets a new resource for handler contracts that use the IERCHandler interface,\\n        and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\\n        @notice Only callable by an address that currently has the admin role.\\n        @param handlerAddress Address of handler resource will be set for.\\n        @param resourceID ResourceID to be used when making deposits.\\n        @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\\n     */\\n    function adminSetResource(\\n        address handlerAddress,\\n        bytes32 resourceID,\\n        address tokenAddress\\n    ) external onlyAdmin {\\n        _resourceIDToHandlerAddress[resourceID] = handlerAddress;\\n        IERCHandler handler = IERCHandler(handlerAddress);\\n        handler.setResource(resourceID, tokenAddress);\\n    }\\n\\n    /**\\n        @notice Sets a new resource for handler contracts that use the IGenericHandler interface,\\n        and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\\n        @notice Only callable by an address that currently has the admin role.\\n        @param handlerAddress Address of handler resource will be set for.\\n        @param resourceID ResourceID to be used when making deposits.\\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\\n     */\\n    function adminSetGenericResource(\\n        address handlerAddress,\\n        bytes32 resourceID,\\n        address contractAddress,\\n        bytes4 depositFunctionSig,\\n        bytes4 executeFunctionSig\\n    ) external onlyAdmin {\\n        _resourceIDToHandlerAddress[resourceID] = handlerAddress;\\n        IGenericHandler handler = IGenericHandler(handlerAddress);\\n        handler.setResource(resourceID, contractAddress, depositFunctionSig, executeFunctionSig);\\n    }\\n\\n    /**\\n        @notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\\n        @notice Only callable by an address that currently has the admin role.\\n        @param handlerAddress Address of handler resource will be set for.\\n        @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\\n     */\\n    function adminSetBurnable(address handlerAddress, address tokenAddress) external onlyAdmin {\\n        IERCHandler handler = IERCHandler(handlerAddress);\\n        handler.setBurnable(tokenAddress);\\n    }\\n\\n    /**\\n        @notice Returns a proposal.\\n        @param originChainID Chain ID deposit originated from.\\n        @param depositNonce ID of proposal generated by proposal's origin Bridge contract.\\n        @param dataHash Hash of data to be provided when deposit proposal is executed.\\n        @return Proposal which consists of:\\n        - _dataHash Hash of data to be provided when deposit proposal is executed.\\n        - _yesVotes Number of votes in favor of proposal.\\n        - _noVotes Number of votes against proposal.\\n        - _status Current status of proposal.\\n     */\\n    function getProposal(\\n        uint8 originChainID,\\n        uint64 depositNonce,\\n        bytes32 dataHash\\n    ) external view returns (Proposal memory) {\\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(originChainID);\\n        return _proposals[nonceAndID][dataHash];\\n    }\\n\\n    /**\\n        @notice Changes deposit fee.\\n        @notice Only callable by admin.\\n        @param newFee Value {_fee} will be updated to.\\n     */\\n    function adminChangeFee(uint256 newFee) external onlyAdmin {\\n        require(_fee != newFee, \\\"Current fee is equal to new fee\\\");\\n        _fee = newFee;\\n    }\\n\\n    /**\\n        @notice Used to manually withdraw funds from ERC safes.\\n        @param handlerAddress Address of handler to withdraw from.\\n        @param tokenAddress Address of token to withdraw.\\n        @param recipient Address to withdraw tokens to.\\n        @param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to withdraw.\\n     */\\n    function adminWithdraw(\\n        address handlerAddress,\\n        address tokenAddress,\\n        address recipient,\\n        uint256 amountOrTokenID\\n    ) external onlyAdmin {\\n        IERCHandler handler = IERCHandler(handlerAddress);\\n        handler.withdraw(tokenAddress, recipient, amountOrTokenID);\\n    }\\n\\n    /**\\n        @notice Initiates a transfer using a specified handler contract.\\n        @notice Only callable when Bridge is not paused.\\n        @param destinationChainID ID of chain deposit will be bridged to.\\n        @param resourceID ResourceID used to find address of handler to be used for deposit.\\n        @param data Additional data to be passed to specified handler.\\n        @notice Emits {Deposit} event.\\n     */\\n    function deposit(\\n        uint8 destinationChainID,\\n        bytes32 resourceID,\\n        bytes calldata data\\n    ) external payable whenNotPaused {\\n        require(msg.value == _fee, \\\"Incorrect fee supplied\\\");\\n\\n        address handler = _resourceIDToHandlerAddress[resourceID];\\n        require(handler != address(0), \\\"resourceID not mapped to handler\\\");\\n\\n        uint64 depositNonce = ++_depositCounts[destinationChainID];\\n        _depositRecords[depositNonce][destinationChainID] = data;\\n\\n        IDepositExecute depositHandler = IDepositExecute(handler);\\n        depositHandler.deposit(resourceID, destinationChainID, depositNonce, msg.sender, data);\\n\\n        emit Deposit(destinationChainID, resourceID, depositNonce);\\n    }\\n\\n    /**\\n        @notice When called, {msg.sender} will be marked as voting in favor of proposal.\\n        @notice Only callable by relayers when Bridge is not paused.\\n        @param chainID ID of chain deposit originated from.\\n        @param depositNonce ID of deposited generated by origin Bridge contract.\\n        @param dataHash Hash of data provided when deposit was made.\\n        @notice Proposal must not have already been passed or executed.\\n        @notice {msg.sender} must not have already voted on proposal.\\n        @notice Emits {ProposalEvent} event with status indicating the proposal status.\\n        @notice Emits {ProposalVote} event.\\n     */\\n    function voteProposal(\\n        uint8 chainID,\\n        uint64 depositNonce,\\n        bytes32 resourceID,\\n        bytes32 dataHash\\n    ) external onlyRelayers whenNotPaused {\\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\\n        Proposal storage proposal = _proposals[nonceAndID][dataHash];\\n\\n        require(_resourceIDToHandlerAddress[resourceID] != address(0), \\\"no handler for resourceID\\\");\\n        require(uint256(proposal._status) <= 1, \\\"proposal already passed/executed/cancelled\\\");\\n        require(!_hasVotedOnProposal[nonceAndID][dataHash][msg.sender], \\\"relayer already voted\\\");\\n\\n        if (uint256(proposal._status) == 0) {\\n            ++_totalProposals;\\n            _proposals[nonceAndID][dataHash] = Proposal({\\n                _resourceID: resourceID,\\n                _dataHash: dataHash,\\n                _yesVotes: new address[](1),\\n                _noVotes: new address[](0),\\n                _status: ProposalStatus.Active,\\n                _proposedBlock: block.number\\n            });\\n\\n            proposal._yesVotes[0] = msg.sender;\\n            emit ProposalEvent(chainID, depositNonce, ProposalStatus.Active, resourceID, dataHash);\\n        } else {\\n            if (block.number.sub(proposal._proposedBlock) > _expiry) {\\n                // if the number of blocks that has passed since this proposal was\\n                // submitted exceeds the expiry threshold set, cancel the proposal\\n                proposal._status = ProposalStatus.Cancelled;\\n                emit ProposalEvent(chainID, depositNonce, ProposalStatus.Cancelled, resourceID, dataHash);\\n            } else {\\n                require(dataHash == proposal._dataHash, \\\"datahash mismatch\\\");\\n                proposal._yesVotes.push(msg.sender);\\n            }\\n        }\\n        if (proposal._status != ProposalStatus.Cancelled) {\\n            _hasVotedOnProposal[nonceAndID][dataHash][msg.sender] = true;\\n            emit ProposalVote(chainID, depositNonce, proposal._status, resourceID);\\n\\n            // If _depositThreshold is set to 1, then auto finalize\\n            // or if _relayerThreshold has been exceeded\\n            if (_relayerThreshold <= 1 || proposal._yesVotes.length >= _relayerThreshold) {\\n                proposal._status = ProposalStatus.Passed;\\n\\n                emit ProposalEvent(chainID, depositNonce, ProposalStatus.Passed, resourceID, dataHash);\\n            }\\n        }\\n    }\\n\\n    /**\\n        @notice Executes a deposit proposal that is considered passed using a specified handler contract.\\n        @notice Only callable by relayers when Bridge is not paused.\\n        @param chainID ID of chain deposit originated from.\\n        @param depositNonce ID of deposited generated by origin Bridge contract.\\n        @param dataHash Hash of data originally provided when deposit was made.\\n        @notice Proposal must be past expiry threshold.\\n        @notice Emits {ProposalEvent} event with status {Cancelled}.\\n     */\\n    function cancelProposal(\\n        uint8 chainID,\\n        uint64 depositNonce,\\n        bytes32 dataHash\\n    ) public onlyAdminOrRelayer {\\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\\n        Proposal storage proposal = _proposals[nonceAndID][dataHash];\\n\\n        require(proposal._status != ProposalStatus.Cancelled, \\\"Proposal already cancelled\\\");\\n        require(block.number.sub(proposal._proposedBlock) > _expiry, \\\"Proposal not at expiry threshold\\\");\\n\\n        proposal._status = ProposalStatus.Cancelled;\\n        emit ProposalEvent(chainID, depositNonce, ProposalStatus.Cancelled, proposal._resourceID, proposal._dataHash);\\n    }\\n\\n    /**\\n        @notice Executes a deposit proposal that is considered passed using a specified handler contract.\\n        @notice Only callable by relayers when Bridge is not paused.\\n        @param chainID ID of chain deposit originated from.\\n        @param resourceID ResourceID to be used when making deposits.\\n        @param depositNonce ID of deposited generated by origin Bridge contract.\\n        @param data Data originally provided when deposit was made.\\n        @notice Proposal must have Passed status.\\n        @notice Hash of {data} must equal proposal's {dataHash}.\\n        @notice Emits {ProposalEvent} event with status {Executed}.\\n     */\\n    function executeProposal(\\n        uint8 chainID,\\n        uint64 depositNonce,\\n        bytes calldata data,\\n        bytes32 resourceID\\n    ) external onlyRelayers whenNotPaused {\\n        address handler = _resourceIDToHandlerAddress[resourceID];\\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(chainID);\\n        bytes32 dataHash = keccak256(abi.encodePacked(handler, data));\\n        Proposal storage proposal = _proposals[nonceAndID][dataHash];\\n\\n        require(proposal._status != ProposalStatus.Inactive, \\\"proposal is not active\\\");\\n        require(proposal._status == ProposalStatus.Passed, \\\"proposal already transferred\\\");\\n        require(dataHash == proposal._dataHash, \\\"data doesn't match datahash\\\");\\n\\n        proposal._status = ProposalStatus.Executed;\\n\\n        IDepositExecute depositHandler = IDepositExecute(_resourceIDToHandlerAddress[proposal._resourceID]);\\n        depositHandler.executeProposal(proposal._resourceID, data);\\n\\n        emit ProposalEvent(chainID, depositNonce, proposal._status, proposal._resourceID, proposal._dataHash);\\n    }\\n\\n    /**\\n        @notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\\n        This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\\n        @param addrs Array of addresses to transfer {amounts} to.\\n        @param amounts Array of amonuts to transfer to {addrs}.\\n     */\\n    function transferFunds(address payable[] calldata addrs, uint256[] calldata amounts) external onlyAdmin {\\n        for (uint256 i = 0; i < addrs.length; i++) {\\n            addrs[i].transfer(amounts[i]);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x4bdb83569bb7b2b4cc5a34cdd832d7edec2ee939d32378c7564b645499958306\",\"license\":\"AGPL-3.0-only\"},\"contracts/external/chainbridge/interfaces/IBridge.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n    @title Interface for Bridge contract.\\n    @author ChainSafe Systems.\\n */\\ninterface IBridge {\\n    /**\\n        @notice Exposing getter for {_chainID} instead of forcing the use of call.\\n        @return uint8 The {_chainID} that is currently set for the Bridge contract.\\n     */\\n    function _chainID() external returns (uint8);\\n\\n    function deposit(\\n        uint8 destinationChainID,\\n        bytes32 resourceID,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x1ae929d9397f7ebab64c3bcc43440804d908a7cae9310296905c06c26beea033\",\"license\":\"AGPL-3.0-only\"},\"contracts/external/chainbridge/interfaces/IDepositExecute.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n    @title Interface for handler contracts that support deposits and deposit executions.\\n    @author ChainSafe Systems.\\n */\\ninterface IDepositExecute {\\n    /**\\n        @notice It is intended that deposit are made using the Bridge contract.\\n        @param destinationChainID Chain ID deposit is expected to be bridged to.\\n        @param depositNonce This value is generated as an ID by the Bridge contract.\\n        @param depositer Address of account making the deposit in the Bridge contract.\\n        @param data Consists of additional data needed for a specific deposit.\\n     */\\n    function deposit(\\n        bytes32 resourceID,\\n        uint8 destinationChainID,\\n        uint64 depositNonce,\\n        address depositer,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n        @notice It is intended that proposals are executed by the Bridge contract.\\n        @param data Consists of additional data needed for a specific deposit execution.\\n     */\\n    function executeProposal(bytes32 resourceID, bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x8196830d9d2bf625d58ae61faa1bb3fc2187f617f7d100ddd679ed4479e20786\",\"license\":\"AGPL-3.0-only\"},\"contracts/external/chainbridge/interfaces/IERCHandler.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n    @title Interface to be used with handlers that support ERC20s and ERC721s.\\n    @author ChainSafe Systems.\\n */\\ninterface IERCHandler {\\n    /**\\n        @notice Correlates {resourceID} with {contractAddress}.\\n        @param resourceID ResourceID to be used when making deposits.\\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\\n     */\\n    function setResource(bytes32 resourceID, address contractAddress) external;\\n\\n    /**\\n        @notice Marks {contractAddress} as mintable/burnable.\\n        @param contractAddress Address of contract to be used when making or executing deposits.\\n     */\\n    function setBurnable(address contractAddress) external;\\n\\n    /**\\n        @notice Used to manually release funds from ERC safes.\\n        @param tokenAddress Address of token contract to release.\\n        @param recipient Address to release tokens to.\\n        @param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to release.\\n     */\\n    function withdraw(\\n        address tokenAddress,\\n        address recipient,\\n        uint256 amountOrTokenID\\n    ) external;\\n}\\n\",\"keccak256\":\"0x4cb963987737ffcf36cfb2c0f9e035854f42f3868f0c55f81c4d447be80b7f16\",\"license\":\"AGPL-3.0-only\"},\"contracts/external/chainbridge/interfaces/IGenericHandler.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n    @title Interface for handler that handles generic deposits and deposit executions.\\n    @dev Copied directly from here: https://github.com/ChainSafe/chainbridge-solidity/releases/tag/v1.0.0.\\n    @author ChainSafe Systems.\\n */\\ninterface IGenericHandler {\\n    /**\\n        @notice Correlates {resourceID} with {contractAddress}, {depositFunctionSig}, and {executeFunctionSig}.\\n        @param resourceID ResourceID to be used when making deposits.\\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\\n        @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\\n        @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.\\n     */\\n    function setResource(\\n        bytes32 resourceID,\\n        address contractAddress,\\n        bytes4 depositFunctionSig,\\n        bytes4 executeFunctionSig\\n    ) external;\\n}\\n\",\"keccak256\":\"0x1f3932a12cb48b423ffb3d1a79a5869293991599e7c4be7eb3294aeb9b632d43\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 747,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_paused",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_bool"
                            },
                            {
                                "astId": 314,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_roles",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_mapping(t_bytes32,t_struct(RoleData)309_storage)"
                            },
                            {
                                "astId": 5901,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_chainID",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_uint8"
                            },
                            {
                                "astId": 5903,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_relayerThreshold",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 5905,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_totalRelayers",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 5907,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_totalProposals",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 5909,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_fee",
                                "offset": 0,
                                "slot": "6",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 5911,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_expiry",
                                "offset": 0,
                                "slot": "7",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 5940,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_depositCounts",
                                "offset": 0,
                                "slot": "8",
                                "type": "t_mapping(t_uint8,t_uint64)"
                            },
                            {
                                "astId": 5944,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_resourceIDToHandlerAddress",
                                "offset": 0,
                                "slot": "9",
                                "type": "t_mapping(t_bytes32,t_address)"
                            },
                            {
                                "astId": 5950,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_depositRecords",
                                "offset": 0,
                                "slot": "10",
                                "type": "t_mapping(t_uint64,t_mapping(t_uint8,t_bytes_storage))"
                            },
                            {
                                "astId": 5957,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_proposals",
                                "offset": 0,
                                "slot": "11",
                                "type": "t_mapping(t_uint72,t_mapping(t_bytes32,t_struct(Proposal)5936_storage))"
                            },
                            {
                                "astId": 5965,
                                "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                "label": "_hasVotedOnProposal",
                                "offset": 0,
                                "slot": "12",
                                "type": "t_mapping(t_uint72,t_mapping(t_bytes32,t_mapping(t_address,t_bool)))"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_array(t_address)dyn_storage": {
                                "base": "t_address",
                                "encoding": "dynamic_array",
                                "label": "address[]",
                                "numberOfBytes": "32"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_bytes32": {
                                "encoding": "inplace",
                                "label": "bytes32",
                                "numberOfBytes": "32"
                            },
                            "t_bytes_storage": {
                                "encoding": "bytes",
                                "label": "bytes",
                                "numberOfBytes": "32"
                            },
                            "t_enum(ProposalStatus)5920": {
                                "encoding": "inplace",
                                "label": "enum Bridge.ProposalStatus",
                                "numberOfBytes": "1"
                            },
                            "t_mapping(t_address,t_bool)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => bool)",
                                "numberOfBytes": "32",
                                "value": "t_bool"
                            },
                            "t_mapping(t_bytes32,t_address)": {
                                "encoding": "mapping",
                                "key": "t_bytes32",
                                "label": "mapping(bytes32 => address)",
                                "numberOfBytes": "32",
                                "value": "t_address"
                            },
                            "t_mapping(t_bytes32,t_mapping(t_address,t_bool))": {
                                "encoding": "mapping",
                                "key": "t_bytes32",
                                "label": "mapping(bytes32 => mapping(address => bool))",
                                "numberOfBytes": "32",
                                "value": "t_mapping(t_address,t_bool)"
                            },
                            "t_mapping(t_bytes32,t_struct(Proposal)5936_storage)": {
                                "encoding": "mapping",
                                "key": "t_bytes32",
                                "label": "mapping(bytes32 => struct Bridge.Proposal)",
                                "numberOfBytes": "32",
                                "value": "t_struct(Proposal)5936_storage"
                            },
                            "t_mapping(t_bytes32,t_struct(RoleData)309_storage)": {
                                "encoding": "mapping",
                                "key": "t_bytes32",
                                "label": "mapping(bytes32 => struct AccessControl.RoleData)",
                                "numberOfBytes": "32",
                                "value": "t_struct(RoleData)309_storage"
                            },
                            "t_mapping(t_uint64,t_mapping(t_uint8,t_bytes_storage))": {
                                "encoding": "mapping",
                                "key": "t_uint64",
                                "label": "mapping(uint64 => mapping(uint8 => bytes))",
                                "numberOfBytes": "32",
                                "value": "t_mapping(t_uint8,t_bytes_storage)"
                            },
                            "t_mapping(t_uint72,t_mapping(t_bytes32,t_mapping(t_address,t_bool)))": {
                                "encoding": "mapping",
                                "key": "t_uint72",
                                "label": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))",
                                "numberOfBytes": "32",
                                "value": "t_mapping(t_bytes32,t_mapping(t_address,t_bool))"
                            },
                            "t_mapping(t_uint72,t_mapping(t_bytes32,t_struct(Proposal)5936_storage))": {
                                "encoding": "mapping",
                                "key": "t_uint72",
                                "label": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))",
                                "numberOfBytes": "32",
                                "value": "t_mapping(t_bytes32,t_struct(Proposal)5936_storage)"
                            },
                            "t_mapping(t_uint8,t_bytes_storage)": {
                                "encoding": "mapping",
                                "key": "t_uint8",
                                "label": "mapping(uint8 => bytes)",
                                "numberOfBytes": "32",
                                "value": "t_bytes_storage"
                            },
                            "t_mapping(t_uint8,t_uint64)": {
                                "encoding": "mapping",
                                "key": "t_uint8",
                                "label": "mapping(uint8 => uint64)",
                                "numberOfBytes": "32",
                                "value": "t_uint64"
                            },
                            "t_struct(Proposal)5936_storage": {
                                "encoding": "inplace",
                                "label": "struct Bridge.Proposal",
                                "members": [
                                    {
                                        "astId": 5922,
                                        "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                        "label": "_resourceID",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_bytes32"
                                    },
                                    {
                                        "astId": 5924,
                                        "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                        "label": "_dataHash",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_bytes32"
                                    },
                                    {
                                        "astId": 5927,
                                        "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                        "label": "_yesVotes",
                                        "offset": 0,
                                        "slot": "2",
                                        "type": "t_array(t_address)dyn_storage"
                                    },
                                    {
                                        "astId": 5930,
                                        "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                        "label": "_noVotes",
                                        "offset": 0,
                                        "slot": "3",
                                        "type": "t_array(t_address)dyn_storage"
                                    },
                                    {
                                        "astId": 5933,
                                        "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                        "label": "_status",
                                        "offset": 0,
                                        "slot": "4",
                                        "type": "t_enum(ProposalStatus)5920"
                                    },
                                    {
                                        "astId": 5935,
                                        "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                        "label": "_proposedBlock",
                                        "offset": 0,
                                        "slot": "5",
                                        "type": "t_uint256"
                                    }
                                ],
                                "numberOfBytes": "192"
                            },
                            "t_struct(RoleData)309_storage": {
                                "encoding": "inplace",
                                "label": "struct AccessControl.RoleData",
                                "members": [
                                    {
                                        "astId": 306,
                                        "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                        "label": "members",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_mapping(t_address,t_bool)"
                                    },
                                    {
                                        "astId": 308,
                                        "contract": "contracts/external/chainbridge/Bridge.sol:Bridge",
                                        "label": "adminRole",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_bytes32"
                                    }
                                ],
                                "numberOfBytes": "64"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            },
                            "t_uint64": {
                                "encoding": "inplace",
                                "label": "uint64",
                                "numberOfBytes": "8"
                            },
                            "t_uint72": {
                                "encoding": "inplace",
                                "label": "uint72",
                                "numberOfBytes": "9"
                            },
                            "t_uint8": {
                                "encoding": "inplace",
                                "label": "uint8",
                                "numberOfBytes": "1"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "adminAddRelayer(address)": {
                                "notice": "Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.Only callable by an address that currently has the admin role.Emits {RelayerAdded} event."
                            },
                            "adminChangeFee(uint256)": {
                                "notice": "Changes deposit fee.Only callable by admin."
                            },
                            "adminChangeRelayerThreshold(uint256)": {
                                "notice": "Modifies the number of votes required for a proposal to be considered passed.Only callable by an address that currently has the admin role.Emits {RelayerThresholdChanged} event."
                            },
                            "adminPauseTransfers()": {
                                "notice": "Pauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role."
                            },
                            "adminRemoveRelayer(address)": {
                                "notice": "Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.Only callable by an address that currently has the admin role.Emits {RelayerRemoved} event."
                            },
                            "adminSetBurnable(address,address)": {
                                "notice": "Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role."
                            },
                            "adminSetGenericResource(address,bytes32,address,bytes4,bytes4)": {
                                "notice": "Sets a new resource for handler contracts that use the IGenericHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role."
                            },
                            "adminSetResource(address,bytes32,address)": {
                                "notice": "Sets a new resource for handler contracts that use the IERCHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role."
                            },
                            "adminUnpauseTransfers()": {
                                "notice": "Unpauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role."
                            },
                            "adminWithdraw(address,address,address,uint256)": {
                                "notice": "Used to manually withdraw funds from ERC safes."
                            },
                            "cancelProposal(uint8,uint64,bytes32)": {
                                "notice": "Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must be past expiry threshold.Emits {ProposalEvent} event with status {Cancelled}."
                            },
                            "constructor": {
                                "notice": "Initializes Bridge, creates and grants {msg.sender} the admin role, creates and grants {initialRelayers} the relayer role."
                            },
                            "deposit(uint8,bytes32,bytes)": {
                                "notice": "Initiates a transfer using a specified handler contract.Only callable when Bridge is not paused.Emits {Deposit} event."
                            },
                            "executeProposal(uint8,uint64,bytes,bytes32)": {
                                "notice": "Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must have Passed status.Hash of {data} must equal proposal's {dataHash}.Emits {ProposalEvent} event with status {Executed}."
                            },
                            "getProposal(uint8,uint64,bytes32)": {
                                "notice": "Returns a proposal."
                            },
                            "isRelayer(address)": {
                                "notice": "Returns true if {relayer} has the relayer role."
                            },
                            "renounceAdmin(address)": {
                                "notice": "Removes admin role from {msg.sender} and grants it to {newAdmin}.Only callable by an address that currently has the admin role."
                            },
                            "transferFunds(address[],uint256[])": {
                                "notice": "Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1. This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0."
                            },
                            "voteProposal(uint8,uint64,bytes32,bytes32)": {
                                "notice": "When called, {msg.sender} will be marked as voting in favor of proposal.Only callable by relayers when Bridge is not paused.Proposal must not have already been passed or executed.{msg.sender} must not have already voted on proposal.Emits {ProposalEvent} event with status indicating the proposal status.Emits {ProposalVote} event."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/external/chainbridge/handlers/GenericHandler.sol": {
                "GenericHandler": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "bridgeAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32[]",
                                    "name": "initialResourceIDs",
                                    "type": "bytes32[]"
                                },
                                {
                                    "internalType": "address[]",
                                    "name": "initialContractAddresses",
                                    "type": "address[]"
                                },
                                {
                                    "internalType": "bytes4[]",
                                    "name": "initialDepositFunctionSignatures",
                                    "type": "bytes4[]"
                                },
                                {
                                    "internalType": "bytes4[]",
                                    "name": "initialExecuteFunctionSignatures",
                                    "type": "bytes4[]"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "inputs": [],
                            "name": "_bridgeAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "_contractAddressToDepositFunctionSignature",
                            "outputs": [
                                {
                                    "internalType": "bytes4",
                                    "name": "",
                                    "type": "bytes4"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "_contractAddressToExecuteFunctionSignature",
                            "outputs": [
                                {
                                    "internalType": "bytes4",
                                    "name": "",
                                    "type": "bytes4"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "_contractAddressToResourceID",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "_contractWhitelist",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "name": "_depositRecords",
                            "outputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "_destinationChainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_depositer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "_resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "_metaData",
                                    "type": "bytes"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "_resourceIDToContractAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint8",
                                    "name": "destinationChainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "address",
                                    "name": "depositer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "name": "executeProposal",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint8",
                                    "name": "destId",
                                    "type": "uint8"
                                }
                            ],
                            "name": "getDepositRecord",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint8",
                                            "name": "_destinationChainID",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "_depositer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bytes32",
                                            "name": "_resourceID",
                                            "type": "bytes32"
                                        },
                                        {
                                            "internalType": "bytes",
                                            "name": "_metaData",
                                            "type": "bytes"
                                        }
                                    ],
                                    "internalType": "struct GenericHandler.DepositRecord",
                                    "name": "",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "contractAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes4",
                                    "name": "depositFunctionSig",
                                    "type": "bytes4"
                                },
                                {
                                    "internalType": "bytes4",
                                    "name": "executeFunctionSig",
                                    "type": "bytes4"
                                }
                            ],
                            "name": "setResource",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "author": "ChainSafe Systems.",
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "details": "{initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures}, and {initialExecuteFunctionSignatures} must all have the same length. Also, values must be ordered in the way that that index x of any mentioned array must be intended for value x of any other array, e.g. {initialContractAddresses}[0] is the intended address for {initialDepositFunctionSignatures}[0].",
                                "params": {
                                    "bridgeAddress": "Contract address of previously deployed Bridge.",
                                    "initialContractAddresses": "These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform deposit and execution calls.",
                                    "initialDepositFunctionSignatures": "These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {deposit}",
                                    "initialExecuteFunctionSignatures": "These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {executeProposal}",
                                    "initialResourceIDs": "Resource IDs used to identify a specific contract address. These are the Resource IDs this contract will initially support."
                                }
                            },
                            "deposit(bytes32,uint8,uint64,address,bytes)": {
                                "params": {
                                    "depositNonce": "This value is generated as an ID by the Bridge contract.",
                                    "depositer": "Address of account making the deposit in the Bridge contract.",
                                    "destinationChainID": "Chain ID deposit is expected to be bridged to."
                                }
                            },
                            "getDepositRecord(uint64,uint8)": {
                                "params": {
                                    "depositNonce": "This ID will have been generated by the Bridge contract.",
                                    "destId": "ID of chain deposit will be bridged to."
                                },
                                "returns": {
                                    "_0": "DepositRecord which consists of: - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _depositer Address that initially called {deposit} in the Bridge contract. - _metaData Data to be passed to method executed in corresponding {resourceID} contract."
                                }
                            },
                            "setResource(bytes32,address,bytes4,bytes4)": {
                                "params": {
                                    "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.",
                                    "depositFunctionSig": "Function signature of method to be called in {contractAddress} when a deposit is made.",
                                    "executeFunctionSig": "Function signature of method to be called in {contractAddress} when a deposit is executed.",
                                    "resourceID": "ResourceID to be used when making deposits."
                                }
                            }
                        },
                        "title": "Handles generic deposits and deposit executions.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_7134": {
                                    "entryPoint": null,
                                    "id": 7134,
                                    "parameterSlots": 5,
                                    "returnSlots": 0
                                },
                                "@_setResource_7363": {
                                    "entryPoint": 624,
                                    "id": 7363,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "abi_decode_address_fromMemory": {
                                    "entryPoint": 753,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_array_address_dyn_fromMemory": {
                                    "entryPoint": 893,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_array_bytes4_dyn_fromMemory": {
                                    "entryPoint": 1017,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_array$_t_bytes32_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptr_fromMemory": {
                                    "entryPoint": 1139,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 5
                                },
                                "abi_encode_tuple_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "allocate_memory": {
                                    "entryPoint": 804,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "array_allocation_size_array_bytes32_dyn": {
                                    "entryPoint": 855,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "increment_t_uint256": {
                                    "entryPoint": 1460,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x32": {
                                    "entryPoint": 1438,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 782,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:5670:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "74:117:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "84:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "99:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "93:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "93:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "84:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "169:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "178:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "181:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "171:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "171:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "171:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "128:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "139:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "154:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "159:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "150:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "150:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "163:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "146:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "146:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "135:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "135:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "125:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "125:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "118:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "118:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "115:70:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "53:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "64:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "228:95:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "245:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "252:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "257:10:66",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "248:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "248:20:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "238:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "238:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "238:31:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "285:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "288:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "278:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "278:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "278:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "309:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "312:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "302:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "302:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "302:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "196:127:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "373:230:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "383:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "399:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "393:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "393:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "383:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "411:58:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "433:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "size",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "449:4:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "455:2:66",
                                                                                        "type": "",
                                                                                        "value": "31"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "445:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "445:13:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "464:2:66",
                                                                                        "type": "",
                                                                                        "value": "31"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "not",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "460:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "460:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "441:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "441:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "429:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "429:40:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "415:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "544:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "546:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "546:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "546:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "487:10:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "507:2:66",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "511:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "503:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "503:10:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "515:1:66",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "499:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "499:18:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "484:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "484:34:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "523:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "535:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "520:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "520:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "481:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "481:62:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "478:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "582:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "586:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "575:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "575:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "575:22:66"
                                                        }
                                                    ]
                                                },
                                                "name": "allocate_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "size",
                                                        "nodeType": "YulTypedName",
                                                        "src": "353:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "362:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "328:275:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "677:114:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "721:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "723:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "723:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "723:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "693:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "709:2:66",
                                                                                        "type": "",
                                                                                        "value": "64"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "713:1:66",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "705:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "705:10:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "717:1:66",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "701:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "701:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "690:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "690:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "687:56:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "752:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "768:1:66",
                                                                                "type": "",
                                                                                "value": "5"
                                                                            },
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "771:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "764:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "764:14:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "780:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "760:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "760:25:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "size",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "752:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "array_allocation_size_array_bytes32_dyn",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "657:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "size",
                                                        "nodeType": "YulTypedName",
                                                        "src": "668:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "608:183:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "871:608:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "920:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "929:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "932:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "922:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "922:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "922:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "899:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "907:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "895:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "895:17:66"
                                                                            },
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "914:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "891:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "891:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "884:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "884:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "881:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "945:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "961:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "955:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "955:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "949:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "977:14:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "987:4:66",
                                                                "type": "",
                                                                "value": "0x20"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "981:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1000:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1067:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "array_allocation_size_array_bytes32_dyn",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1027:39:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1027:43:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "allocate_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1011:15:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1011:60:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1004:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1080:16:66",
                                                            "value": {
                                                                "name": "dst",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1093:3:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "dst_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1084:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "dst",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1112:3:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1117:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1105:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1105:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1105:15:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1129:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "dst",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1140:3:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1145:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1136:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1136:12:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1129:3:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1157:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1179:6:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1191:1:66",
                                                                                        "type": "",
                                                                                        "value": "5"
                                                                                    },
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1194:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1187:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1187:10:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1175:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1175:23:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1200:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1171:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1171:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcEnd",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1161:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1231:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1240:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1243:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1233:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1233:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1233:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1218:6:66"
                                                                    },
                                                                    {
                                                                        "name": "end",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1226:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1215:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1215:15:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1212:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1256:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1271:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1279:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1267:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1267:15:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "src",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1260:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1347:103:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1368:3:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "src",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1403:3:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "abi_decode_address_fromMemory",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1373:29:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1373:34:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1361:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1361:47:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1361:47:66"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1421:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1432:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1437:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1428:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1428:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "dst",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1421:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "src",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1302:3:66"
                                                                    },
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1307:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1299:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1299:15:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1315:23:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1317:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "src",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1328:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1333:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1324:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1324:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "src",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1317:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1295:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "1291:159:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1459:14:66",
                                                            "value": {
                                                                "name": "dst_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1468:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "array",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1459:5:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_array_address_dyn_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "845:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "853:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "array",
                                                        "nodeType": "YulTypedName",
                                                        "src": "861:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "796:683:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1558:769:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1607:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1616:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1619:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1609:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1609:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1609:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1586:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1594:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1582:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1582:17:66"
                                                                            },
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1601:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1578:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1578:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1571:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1571:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1568:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1632:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1648:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1642:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1642:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1636:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1664:14:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1674:4:66",
                                                                "type": "",
                                                                "value": "0x20"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1668:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1687:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1754:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "array_allocation_size_array_bytes32_dyn",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1714:39:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1714:43:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "allocate_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1698:15:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1698:60:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1691:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1767:16:66",
                                                            "value": {
                                                                "name": "dst",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1780:3:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "dst_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1771:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "dst",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1799:3:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1804:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1792:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1792:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1792:15:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1816:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "dst",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1827:3:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1832:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1823:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1823:12:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1816:3:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1844:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1866:6:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1878:1:66",
                                                                                        "type": "",
                                                                                        "value": "5"
                                                                                    },
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1881:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1874:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1874:10:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1862:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1862:23:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1887:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1858:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1858:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcEnd",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1848:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1918:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1927:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1930:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1920:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1920:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1920:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1905:6:66"
                                                                    },
                                                                    {
                                                                        "name": "end",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1913:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1902:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1902:15:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1899:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1943:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1958:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1966:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1954:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1954:15:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "src",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1947:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2034:264:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulVariableDeclaration",
                                                                        "src": "2048:23:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "src",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2067:3:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mload",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2061:5:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2061:10:66"
                                                                        },
                                                                        "variables": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulTypedName",
                                                                                "src": "2052:5:66",
                                                                                "type": ""
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "body": {
                                                                            "nodeType": "YulBlock",
                                                                            "src": "2151:74:66",
                                                                            "statements": [
                                                                                {
                                                                                    "nodeType": "YulVariableDeclaration",
                                                                                    "src": "2169:11:66",
                                                                                    "value": {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2179:1:66",
                                                                                        "type": "",
                                                                                        "value": "0"
                                                                                    },
                                                                                    "variables": [
                                                                                        {
                                                                                            "name": "_3",
                                                                                            "nodeType": "YulTypedName",
                                                                                            "src": "2173:2:66",
                                                                                            "type": ""
                                                                                        }
                                                                                    ]
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "_3",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2204:2:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "_3",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2208:2:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "revert",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2197:6:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2197:14:66"
                                                                                    },
                                                                                    "nodeType": "YulExpressionStatement",
                                                                                    "src": "2197:14:66"
                                                                                }
                                                                            ]
                                                                        },
                                                                        "condition": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "value",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2097:5:66"
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "value",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2108:5:66"
                                                                                                },
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "kind": "number",
                                                                                                            "nodeType": "YulLiteral",
                                                                                                            "src": "2119:3:66",
                                                                                                            "type": "",
                                                                                                            "value": "224"
                                                                                                        },
                                                                                                        {
                                                                                                            "kind": "number",
                                                                                                            "nodeType": "YulLiteral",
                                                                                                            "src": "2124:10:66",
                                                                                                            "type": "",
                                                                                                            "value": "0xffffffff"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "shl",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "2115:3:66"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "2115:20:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "and",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2104:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2104:32:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "eq",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2094:2:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2094:43:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "iszero",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2087:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2087:51:66"
                                                                        },
                                                                        "nodeType": "YulIf",
                                                                        "src": "2084:141:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2245:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "value",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2250:5:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2238:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2238:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2238:18:66"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2269:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2280:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2285:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2276:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2276:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "dst",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2269:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "src",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1989:3:66"
                                                                    },
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1994:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1986:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1986:15:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2002:23:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2004:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "src",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2015:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2020:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2011:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2011:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "src",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2004:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1982:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "1978:320:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2307:14:66",
                                                            "value": {
                                                                "name": "dst_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2316:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "array",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2307:5:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_array_bytes4_dyn_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1532:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1540:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "array",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1548:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1484:843:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2579:1428:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2626:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2635:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2638:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2628:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2628:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2628:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2600:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2609:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2596:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2596:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2621:3:66",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2592:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2592:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2589:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2651:50:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2691:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2661:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2661:40:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2651:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2710:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2720:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2714:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2731:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2755:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2766:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2751:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2751:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2745:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2745:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2735:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2779:28:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2797:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2801:1:66",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2793:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2793:10:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2805:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2789:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2789:18:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2783:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2834:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2843:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2846:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2836:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2836:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2836:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2822:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2830:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2819:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2819:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2816:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2859:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2873:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2884:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2869:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2869:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2863:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2939:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2948:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2951:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2941:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2941:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2941:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2918:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2922:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2914:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2914:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2929:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2910:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2910:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2903:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2903:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2900:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2964:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2980:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2974:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2974:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2968:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2992:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3059:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "array_allocation_size_array_bytes32_dyn",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3019:39:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3019:43:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "allocate_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3003:15:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3003:60:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2996:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3072:16:66",
                                                            "value": {
                                                                "name": "dst",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3085:3:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "dst_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3076:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "dst",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3104:3:66"
                                                                    },
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3109:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3097:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3097:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3097:15:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3121:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "dst",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3132:3:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3137:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3128:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3128:12:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3121:3:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3149:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3171:2:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3179:1:66",
                                                                                        "type": "",
                                                                                        "value": "5"
                                                                                    },
                                                                                    {
                                                                                        "name": "_4",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3182:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3175:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3175:10:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3167:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3167:19:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3188:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3163:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3163:28:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcEnd",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3153:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3223:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3232:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3235:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3225:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3225:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3225:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3206:6:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3214:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3203:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3203:19:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3200:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3248:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3263:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3267:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3259:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3259:11:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "src",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3252:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3335:79:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3356:3:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "src",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3367:3:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3361:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3361:10:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3349:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3349:23:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3349:23:66"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "3385:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3396:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3401:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3392:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3392:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "dst",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3385:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "src",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3290:3:66"
                                                                    },
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3295:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3287:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3287:15:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3303:23:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "3305:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "src",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3316:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3321:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3312:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3312:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "src",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3305:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3283:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "3279:135:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3423:15:66",
                                                            "value": {
                                                                "name": "dst_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3433:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3423:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3447:41:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3473:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3484:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3469:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3469:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3463:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3463:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3451:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3517:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3526:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3529:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3519:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3519:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3519:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3503:8:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3513:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3500:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3500:16:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3497:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3542:84:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3596:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3607:8:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3592:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3592:24:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3618:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_array_address_dyn_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3552:39:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3552:74:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3542:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3635:41:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3661:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3672:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3657:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3657:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3651:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3651:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3639:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3705:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3714:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3717:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3707:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3707:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3707:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3691:8:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3701:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3688:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3688:16:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3685:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3730:83:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3783:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3794:8:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3779:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3779:24:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3805:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_array_bytes4_dyn_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3740:38:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3740:73:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3730:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3822:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3848:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3859:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3844:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3844:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3838:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3838:26:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3826:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3893:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3902:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3905:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3895:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3895:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3895:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3879:8:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3889:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3876:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3876:16:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3873:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3918:83:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3971:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3982:8:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3967:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3967:24:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3993:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_array_bytes4_dyn_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3928:38:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3928:73:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3918:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_array$_t_bytes32_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2513:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2524:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2536:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2544:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2552:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2560:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2568:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2332:1675:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4186:250:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4203:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4214:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4196:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4196:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4196:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4237:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4248:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4233:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4233:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4253:2:66",
                                                                        "type": "",
                                                                        "value": "60"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4226:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4226:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4226:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4276:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4287:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4272:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4272:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4292:34:66",
                                                                        "type": "",
                                                                        "value": "initialResourceIDs and initialCo"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4265:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4265:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4265:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4347:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4358:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4343:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4343:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6e7472616374416464726573736573206c656e206d69736d61746368",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4363:30:66",
                                                                        "type": "",
                                                                        "value": "ntractAddresses len mismatch"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4336:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4336:58:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4336:58:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4403:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4415:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4426:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4411:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4411:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4403:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4163:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4177:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4012:424:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4615:254:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4632:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4643:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4625:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4625:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4625:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4666:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4677:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4662:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4662:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4682:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4655:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4655:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4655:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4705:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4716:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4701:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4701:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "70726f766964656420636f6e74726163742061646472657373657320616e6420",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4721:34:66",
                                                                        "type": "",
                                                                        "value": "provided contract addresses and "
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4694:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4694:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4694:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4776:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4787:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4772:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4772:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "66756e6374696f6e207369676e617475726573206c656e206d69736d61746368",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4792:34:66",
                                                                        "type": "",
                                                                        "value": "function signatures len mismatch"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4765:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4765:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4765:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4836:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4848:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4859:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4844:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4844:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4836:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4592:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4606:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4441:428:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5048:251:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5065:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5076:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5058:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5058:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5058:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5099:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5110:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5095:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5095:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5115:2:66",
                                                                        "type": "",
                                                                        "value": "61"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5088:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5088:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5088:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5138:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5149:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5134:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5134:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "70726f7669646564206465706f73697420616e6420657865637574652066756e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5154:34:66",
                                                                        "type": "",
                                                                        "value": "provided deposit and execute fun"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5127:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5127:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5127:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5209:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5220:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5205:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5205:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6374696f6e207369676e617475726573206c656e206d69736d61746368",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5225:31:66",
                                                                        "type": "",
                                                                        "value": "ction signatures len mismatch"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5198:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5198:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5198:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5266:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5278:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5289:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5274:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5274:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5266:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5025:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5039:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4874:425:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5336:95:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5353:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5360:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5365:10:66",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5356:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5356:20:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5346:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5346:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5346:31:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5393:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5396:4:66",
                                                                        "type": "",
                                                                        "value": "0x32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5386:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5386:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5386:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5417:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5420:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5410:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5410:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5410:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x32",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "5304:127:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5483:185:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5522:111:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5543:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "5550:3:66",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "5555:10:66",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5546:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "5546:20:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5536:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5536:31:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5536:31:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5587:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5590:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x11"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5580:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5580:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5580:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5615:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5618:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5608:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5608:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5608:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5499:5:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5510:1:66",
                                                                                "type": "",
                                                                                "value": "0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5506:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5506:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5496:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5496:17:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5493:140:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5642:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5653:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5660:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5649:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5649:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5642:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5465:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5475:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5436:232:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_bytes32_dyn(length) -> size\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_array_address_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_bytes32_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            mstore(dst, abi_decode_address_fromMemory(src))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_array_bytes4_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_bytes32_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            let value := mload(src)\n            if iszero(eq(value, and(value, shl(224, 0xffffffff))))\n            {\n                let _3 := 0\n                revert(_3, _3)\n            }\n            mstore(dst, value)\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_addresst_array$_t_bytes32_$dyn_memory_ptrt_array$_t_address_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptrt_array$_t_bytes4_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        let _1 := 32\n        let offset := mload(add(headStart, _1))\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        let dst := allocate_memory(array_allocation_size_array_bytes32_dyn(_4))\n        let dst_1 := dst\n        mstore(dst, _4)\n        dst := add(dst, _1)\n        let srcEnd := add(add(_3, shl(5, _4)), _1)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_3, _1)\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _1)\n        }\n        value1 := dst_1\n        let offset_1 := mload(add(headStart, 64))\n        if gt(offset_1, _2) { revert(0, 0) }\n        value2 := abi_decode_array_address_dyn_fromMemory(add(headStart, offset_1), dataEnd)\n        let offset_2 := mload(add(headStart, 96))\n        if gt(offset_2, _2) { revert(0, 0) }\n        value3 := abi_decode_array_bytes4_dyn_fromMemory(add(headStart, offset_2), dataEnd)\n        let offset_3 := mload(add(headStart, 128))\n        if gt(offset_3, _2) { revert(0, 0) }\n        value4 := abi_decode_array_bytes4_dyn_fromMemory(add(headStart, offset_3), dataEnd)\n    }\n    function abi_encode_tuple_t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 60)\n        mstore(add(headStart, 64), \"initialResourceIDs and initialCo\")\n        mstore(add(headStart, 96), \"ntractAddresses len mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), \"provided contract addresses and \")\n        mstore(add(headStart, 96), \"function signatures len mismatch\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 61)\n        mstore(add(headStart, 64), \"provided deposit and execute fun\")\n        mstore(add(headStart, 96), \"ction signatures len mismatch\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60806040523480156200001157600080fd5b506040516200170c3803806200170c833981016040819052620000349162000473565b8251845114620000b15760405162461bcd60e51b815260206004820152603c60248201527f696e697469616c5265736f7572636549447320616e6420696e697469616c436f60448201527f6e7472616374416464726573736573206c656e206d69736d617463680000000060648201526084015b60405180910390fd5b81518351146200012c576040805162461bcd60e51b81526020600482015260248101919091527f70726f766964656420636f6e74726163742061646472657373657320616e642060448201527f66756e6374696f6e207369676e617475726573206c656e206d69736d617463686064820152608401620000a8565b8051825114620001a55760405162461bcd60e51b815260206004820152603d60248201527f70726f7669646564206465706f73697420616e6420657865637574652066756e60448201527f6374696f6e207369676e617475726573206c656e206d69736d617463680000006064820152608401620000a8565b600080546001600160a01b0319166001600160a01b0387161781555b845181101562000264576200024f858281518110620001e457620001e46200059e565b60200260200101518583815181106200020157620002016200059e565b60200260200101518584815181106200021e576200021e6200059e565b60200260200101518585815181106200023b576200023b6200059e565b60200260200101516200027060201b60201c565b806200025b81620005b4565b915050620001c1565b505050505050620005de565b600084815260026020908152604080832080546001600160a01b039097166001600160a01b031990971687179055948252600381528482209590955560048552838120805460e094851c63ffffffff19918216179091556005865284822080549390941c92169190911790915560069092529020805460ff19166001179055565b80516001600160a01b03811681146200030957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200034f576200034f6200030e565b604052919050565b60006001600160401b038211156200037357620003736200030e565b5060051b60200190565b600082601f8301126200038f57600080fd5b81516020620003a8620003a28362000357565b62000324565b82815260059290921b84018101918181019086841115620003c857600080fd5b8286015b84811015620003ee57620003e081620002f1565b8352918301918301620003cc565b509695505050505050565b600082601f8301126200040b57600080fd5b815160206200041e620003a28362000357565b82815260059290921b840181019181810190868411156200043e57600080fd5b8286015b84811015620003ee5780516001600160e01b031981168114620004655760008081fd5b835291830191830162000442565b600080600080600060a086880312156200048c57600080fd5b6200049786620002f1565b602087810151919650906001600160401b0380821115620004b757600080fd5b818901915089601f830112620004cc57600080fd5b8151620004dd620003a28262000357565b81815260059190911b8301840190848101908c831115620004fd57600080fd5b938501935b828510156200051d5784518252938501939085019062000502565b60408c015190995094505050808311156200053757600080fd5b620005458a848b016200037d565b955060608901519250808311156200055c57600080fd5b6200056a8a848b01620003f9565b945060808901519250808311156200058157600080fd5b50506200059188828901620003f9565b9150509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6000600019821415620005d757634e487b7160e01b600052601160045260246000fd5b5060010190565b61111e80620005ee6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063ba484c0911610081578063cb6244631161005b578063cb62446314610240578063e248cff214610263578063ec97d3b41461027657600080fd5b8063ba484c09146101d7578063bba8185a146101f7578063c54c2a111461020a57600080fd5b80634402027f116100b25780634402027f1461012d5780637f79bea814610150578063a5c3a9851461018357600080fd5b8063318c136e146100ce57806338995da914610118575b600080fd5b6000546100ee9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61012b610126366004610d38565b6102a4565b005b61014061013b366004610db7565b61061c565b60405161010f9493929190610e60565b61017361015e366004610ea8565b60066020526000908152604090205460ff1681565b604051901515815260200161010f565b6101a6610191366004610ea8565b60056020526000908152604090205460e01b81565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161010f565b6101ea6101e5366004610eca565b6106f0565b60405161010f9190610ef4565b61012b610205366004610f7e565b610818565b6100ee610218366004610fcb565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101a661024e366004610ea8565b60046020526000908152604090205460e01b81565b61012b610271366004610fe4565b610903565b610296610284366004610ea8565b60036020526000908152604090205481565b60405190815260200161010f565b6102ac610b81565b6000606060c4359150604051905081810160200160405260c4360360c4823760008881526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff1680845260069092529091205460ff16610393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f70726f766964656420636f6e747261637441646472657373206973206e6f742060448201527f77686974656c697374656400000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205460e01b7fffffffff0000000000000000000000000000000000000000000000000000000081161561050757600081846040516020016103f9929190611030565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16826040516104319190611078565b6000604051808303816000865af19150503d806000811461046e576040519150601f19603f3d011682016040523d82523d6000602084013e610473565b606091505b5050905080610504576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f64656c656761746563616c6c20746f20636f6e7472616374416464726573732060448201527f6661696c65640000000000000000000000000000000000000000000000000000606482015260840161038a565b50505b60405180608001604052808a60ff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b815260200184815250600160008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155606082015181600201908051906020019061060d929190610c04565b50505050505050505050505050565b6001602081815260009384526040808520909152918352912080549181015460028201805460ff851694610100900473ffffffffffffffffffffffffffffffffffffffff1693919061066d90611094565b80601f016020809104026020016040519081016040528092919081815260200182805461069990611094565b80156106e65780601f106106bb576101008083540402835291602001916106e6565b820191906000526020600020905b8154815290600101906020018083116106c957829003601f168201915b5050505050905084565b604080516080810182526000808252602082018190529181019190915260608082015260ff828116600090815260016020818152604080842067ffffffffffffffff8916855282529283902083516080810185528154958616815261010090950473ffffffffffffffffffffffffffffffffffffffff1691850191909152908101549183019190915260028101805460608401919061078e90611094565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba90611094565b80156108075780601f106107dc57610100808354040283529160200191610807565b820191906000526020600020905b8154815290600101906020018083116107ea57829003601f168201915b505050505081525050905092915050565b610820610b81565b6000848152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff88167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915583526003825280832087905560048252808320805460e087811c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000928316179092556005845282852080549287901c929091169190911790556006909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b50505050565b61090b610b81565b60408051606480358201606001909252907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c360190823760008481526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff1680845260069092529091205460ff16610a05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f70726f766964656420636f6e747261637441646472657373206973206e6f742060448201527f77686974656c6973746564000000000000000000000000000000000000000000606482015260840161038a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460e01b7fffffffff00000000000000000000000000000000000000000000000000000000811615610b795760008184604051602001610a6b929190611030565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff1682604051610aa39190611078565b6000604051808303816000865af19150503d8060008114610ae0576040519150601f19603f3d011682016040523d82523d6000602084013e610ae5565b606091505b5050905080610b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f64656c656761746563616c6c20746f20636f6e7472616374416464726573732060448201527f6661696c65640000000000000000000000000000000000000000000000000000606482015260840161038a565b50505b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e74726163740000604482015260640161038a565b565b828054610c1090611094565b90600052602060002090601f016020900481019282610c325760008555610c78565b82601f10610c4b57805160ff1916838001178555610c78565b82800160010185558215610c78579182015b82811115610c78578251825591602001919060010190610c5d565b50610c84929150610c88565b5090565b5b80821115610c845760008155600101610c89565b803560ff81168114610cae57600080fd5b919050565b803567ffffffffffffffff81168114610cae57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610cae57600080fd5b60008083601f840112610d0157600080fd5b50813567ffffffffffffffff811115610d1957600080fd5b602083019150836020828501011115610d3157600080fd5b9250929050565b60008060008060008060a08789031215610d5157600080fd5b86359550610d6160208801610c9d565b9450610d6f60408801610cb3565b9350610d7d60608801610ccb565b9250608087013567ffffffffffffffff811115610d9957600080fd5b610da589828a01610cef565b979a9699509497509295939492505050565b60008060408385031215610dca57600080fd5b610dd383610c9d565b9150610de160208401610cb3565b90509250929050565b60005b83811015610e05578181015183820152602001610ded565b838111156108fd5750506000910152565b60008151808452610e2e816020860160208601610dea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60ff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201526000610e9e6080830184610e16565b9695505050505050565b600060208284031215610eba57600080fd5b610ec382610ccb565b9392505050565b60008060408385031215610edd57600080fd5b610ee683610cb3565b9150610de160208401610c9d565b6020815260ff825116602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201526040820151606082015260006060830151608080840152610f4660a0840182610e16565b949350505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cae57600080fd5b60008060008060808587031215610f9457600080fd5b84359350610fa460208601610ccb565b9250610fb260408601610f4e565b9150610fc060608601610f4e565b905092959194509250565b600060208284031215610fdd57600080fd5b5035919050565b600080600060408486031215610ff957600080fd5b83359250602084013567ffffffffffffffff81111561101757600080fd5b61102386828701610cef565b9497909650939450505050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825161106a816004850160208701610dea565b919091016004019392505050565b6000825161108a818460208701610dea565b9190910192915050565b600181811c908216806110a857607f821691505b602082108114156110e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea26469706673582212202aa80fce7fc080846fcad41504e42be256a77682cdf18c978749662e3d99cc3864736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x170C CODESIZE SUB DUP1 PUSH3 0x170C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x473 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD EQ PUSH3 0xB1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E697469616C5265736F7572636549447320616E6420696E697469616C436F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E7472616374416464726573736573206C656E206D69736D6174636800000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH3 0x12C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x70726F766964656420636F6E74726163742061646472657373657320616E6420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x66756E6374696F6E207369676E617475726573206C656E206D69736D61746368 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0xA8 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH3 0x1A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F7669646564206465706F73697420616E6420657865637574652066756E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6374696F6E207369676E617475726573206C656E206D69736D61746368000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH3 0xA8 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND OR DUP2 SSTORE JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH3 0x264 JUMPI PUSH3 0x24F DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x1E4 JUMPI PUSH3 0x1E4 PUSH3 0x59E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x201 JUMPI PUSH3 0x201 PUSH3 0x59E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x21E JUMPI PUSH3 0x21E PUSH3 0x59E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH3 0x23B JUMPI PUSH3 0x23B PUSH3 0x59E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH3 0x270 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP1 PUSH3 0x25B DUP2 PUSH3 0x5B4 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x1C1 JUMP JUMPDEST POP POP POP POP POP POP PUSH3 0x5DE JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP8 AND DUP8 OR SWAP1 SSTORE SWAP5 DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE DUP5 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE PUSH1 0x4 DUP6 MSTORE DUP4 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0xE0 SWAP5 DUP6 SHR PUSH4 0xFFFFFFFF NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x5 DUP7 MSTORE DUP5 DUP3 KECCAK256 DUP1 SLOAD SWAP4 SWAP1 SWAP5 SHR SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 SWAP1 SWAP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x34F JUMPI PUSH3 0x34F PUSH3 0x30E JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH3 0x373 JUMPI PUSH3 0x373 PUSH3 0x30E JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x3A8 PUSH3 0x3A2 DUP4 PUSH3 0x357 JUMP JUMPDEST PUSH3 0x324 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH3 0x3C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH3 0x3EE JUMPI PUSH3 0x3E0 DUP2 PUSH3 0x2F1 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0x3CC JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x40B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x41E PUSH3 0x3A2 DUP4 PUSH3 0x357 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH3 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH3 0x3EE JUMPI DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x465 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0x442 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x497 DUP7 PUSH3 0x2F1 JUMP JUMPDEST PUSH1 0x20 DUP8 DUP2 ADD MLOAD SWAP2 SWAP7 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x4B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x4CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x4DD PUSH3 0x3A2 DUP3 PUSH3 0x357 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x5 SWAP2 SWAP1 SWAP2 SHL DUP4 ADD DUP5 ADD SWAP1 DUP5 DUP2 ADD SWAP1 DUP13 DUP4 GT ISZERO PUSH3 0x4FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 DUP6 ADD SWAP4 JUMPDEST DUP3 DUP6 LT ISZERO PUSH3 0x51D JUMPI DUP5 MLOAD DUP3 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP1 DUP6 ADD SWAP1 PUSH3 0x502 JUMP JUMPDEST PUSH1 0x40 DUP13 ADD MLOAD SWAP1 SWAP10 POP SWAP5 POP POP POP DUP1 DUP4 GT ISZERO PUSH3 0x537 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x545 DUP11 DUP5 DUP12 ADD PUSH3 0x37D JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD MLOAD SWAP3 POP DUP1 DUP4 GT ISZERO PUSH3 0x55C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x56A DUP11 DUP5 DUP12 ADD PUSH3 0x3F9 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD MLOAD SWAP3 POP DUP1 DUP4 GT ISZERO PUSH3 0x581 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH3 0x591 DUP9 DUP3 DUP10 ADD PUSH3 0x3F9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH3 0x5D7 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH2 0x111E DUP1 PUSH3 0x5EE PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBA484C09 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCB624463 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCB624463 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xE248CFF2 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0xEC97D3B4 EQ PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBA484C09 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0xBBA8185A EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0xC54C2A11 EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4402027F GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x4402027F EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x7F79BEA8 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0xA5C3A985 EQ PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x318C136E EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x38995DA9 EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xEE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0xD38 JUMP JUMPDEST PUSH2 0x2A4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x140 PUSH2 0x13B CALLDATASIZE PUSH1 0x4 PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x61C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE60 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x15E CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x191 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xE0 SHL DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1EA PUSH2 0x1E5 CALLDATASIZE PUSH1 0x4 PUSH2 0xECA JUMP JUMPDEST PUSH2 0x6F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0xEF4 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xF7E JUMP JUMPDEST PUSH2 0x818 JUMP JUMPDEST PUSH2 0xEE PUSH2 0x218 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xE0 SHL DUP2 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x903 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x284 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x2AC PUSH2 0xB81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0xC4 CALLDATALOAD SWAP2 POP PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0xC4 CALLDATASIZE SUB PUSH1 0xC4 DUP3 CALLDATACOPY PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP5 MSTORE PUSH1 0x6 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x393 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F766964656420636F6E747261637441646472657373206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x77686974656C6973746564000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xE0 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0x507 JUMPI PUSH1 0x0 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3F9 SWAP3 SWAP2 SWAP1 PUSH2 0x1030 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x431 SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x46E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x473 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x504 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64656C656761746563616C6C20746F20636F6E74726163744164647265737320 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6661696C65640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x38A JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP PUSH1 0x1 PUSH1 0x0 DUP12 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x60D SWAP3 SWAP2 SWAP1 PUSH2 0xC04 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SWAP1 SWAP2 MSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD SWAP2 DUP2 ADD SLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF DUP6 AND SWAP5 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP2 SWAP1 PUSH2 0x66D SWAP1 PUSH2 0x1094 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 0x699 SWAP1 PUSH2 0x1094 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6E6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6BB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6E6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6C9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH1 0xFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH8 0xFFFFFFFFFFFFFFFF DUP10 AND DUP6 MSTORE DUP3 MSTORE SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH1 0x80 DUP2 ADD DUP6 MSTORE DUP2 SLOAD SWAP6 DUP7 AND DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP6 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP2 ADD SLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 PUSH2 0x78E SWAP1 PUSH2 0x1094 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 0x7BA SWAP1 PUSH2 0x1094 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x807 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7DC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x807 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7EA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x820 PUSH2 0xB81 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 SWAP1 SSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xE0 DUP8 DUP2 SHR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP3 DUP8 SWAP1 SHR SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x6 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x90B PUSH2 0xB81 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x64 DUP1 CALLDATALOAD DUP3 ADD PUSH1 0x60 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CALLDATASIZE ADD SWAP1 DUP3 CALLDATACOPY PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP5 MSTORE PUSH1 0x6 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xA05 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F766964656420636F6E747261637441646472657373206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x77686974656C6973746564000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x38A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xE0 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0xB79 JUMPI PUSH1 0x0 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA6B SWAP3 SWAP2 SWAP1 PUSH2 0x1030 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0xAA3 SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAE0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAE5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xB76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64656C656761746563616C6C20746F20636F6E74726163744164647265737320 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6661696C65640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x38A JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xC02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206D7573742062652062726964676520636F6E74726163740000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x38A JUMP JUMPDEST JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0xC10 SWAP1 PUSH2 0x1094 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0xC32 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0xC78 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0xC4B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xC78 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xC78 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xC78 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC5D JUMP JUMPDEST POP PUSH2 0xC84 SWAP3 SWAP2 POP PUSH2 0xC88 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xC89 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xD01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xD51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH2 0xD61 PUSH1 0x20 DUP9 ADD PUSH2 0xC9D JUMP JUMPDEST SWAP5 POP PUSH2 0xD6F PUSH1 0x40 DUP9 ADD PUSH2 0xCB3 JUMP JUMPDEST SWAP4 POP PUSH2 0xD7D PUSH1 0x60 DUP9 ADD PUSH2 0xCCB JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA5 DUP10 DUP3 DUP11 ADD PUSH2 0xCEF JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDD3 DUP4 PUSH2 0xC9D JUMP JUMPDEST SWAP2 POP PUSH2 0xDE1 PUSH1 0x20 DUP5 ADD PUSH2 0xCB3 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE05 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDED JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8FD JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xE2E DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xFF DUP6 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xE9E PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xE16 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC3 DUP3 PUSH2 0xCCB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE6 DUP4 PUSH2 0xCB3 JUMP JUMPDEST SWAP2 POP PUSH2 0xDE1 PUSH1 0x20 DUP5 ADD PUSH2 0xC9D JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0xFF DUP3 MLOAD AND PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP1 DUP5 ADD MSTORE PUSH2 0xF46 PUSH1 0xA0 DUP5 ADD DUP3 PUSH2 0xE16 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0xFA4 PUSH1 0x20 DUP7 ADD PUSH2 0xCCB JUMP JUMPDEST SWAP3 POP PUSH2 0xFB2 PUSH1 0x40 DUP7 ADD PUSH2 0xF4E JUMP JUMPDEST SWAP2 POP PUSH2 0xFC0 PUSH1 0x60 DUP7 ADD PUSH2 0xF4E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1023 DUP7 DUP3 DUP8 ADD PUSH2 0xCEF JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x106A DUP2 PUSH1 0x4 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xDEA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x108A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xDEA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x10A8 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x10E2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A 0xA8 0xF 0xCE PUSH32 0xC080846FCAD41504E42BE256A77682CDF18C978749662E3D99CC3864736F6C63 NUMBER STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "286:10115:38:-:0;;;2734:1190;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3055:24;:31;3026:18;:25;:60;3005:167;;;;-1:-1:-1;;;3005:167:38;;4214:2:66;3005:167:38;;;4196:21:66;4253:2;4233:18;;;4226:30;4292:34;4272:18;;;4265:62;4363:30;4343:18;;;4336:58;4411:19;;3005:167:38;;;;;;;;;3239:32;:39;3204:24;:31;:74;3183:185;;;;;-1:-1:-1;;;3183:185:38;;4643:2:66;3183:185:38;;;4625:21:66;4662:18;;;4655:30;;;;4721:34;4701:18;;;4694:62;4792:34;4772:18;;;4765:62;4844:19;;3183:185:38;4441:428:66;3183:185:38;3443:32;:39;3400:32;:39;:82;3379:190;;;;-1:-1:-1;;;3379:190:38;;5076:2:66;3379:190:38;;;5058:21:66;5115:2;5095:18;;;5088:30;5154:34;5134:18;;;5127:62;5225:31;5205:18;;;5198:59;5274:19;;3379:190:38;4874:425:66;3379:190:38;3580:14;:30;;-1:-1:-1;;;;;;3580:30:38;-1:-1:-1;;;;;3580:30:38;;;;;3621:297;3645:18;:25;3641:1;:29;3621:297;;;3691:216;3721:18;3740:1;3721:21;;;;;;;;:::i;:::-;;;;;;;3760:24;3785:1;3760:27;;;;;;;;:::i;:::-;;;;;;;3805:32;3838:1;3805:35;;;;;;;;:::i;:::-;;;;;;;3858:32;3891:1;3858:35;;;;;;;;:::i;:::-;;;;;;;3691:12;;;:216;;:::i;:::-;3672:3;;;;:::i;:::-;;;;3621:297;;;;2734:1190;;;;;286:10115;;9855:544;10033:40;;;;:28;:40;;;;;;;;:58;;-1:-1:-1;;;;;10033:58:38;;;-1:-1:-1;;;;;;10033:58:38;;;;;;;10101:45;;;:28;:45;;;;;:58;;;;10169:42;:59;;;;;:80;;;;;;-1:-1:-1;;10169:80:38;;;;;;;10259:42;:59;;;;;:80;;;;;;;;;;;;;;;10350:18;:35;;;;;:42;;-1:-1:-1;;10350:42:38;10033:58;10350:42;;;9855:544::o;14:177:66:-;93:13;;-1:-1:-1;;;;;135:31:66;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:275;399:2;393:9;464:2;445:13;;-1:-1:-1;;441:27:66;429:40;;-1:-1:-1;;;;;484:34:66;;520:22;;;481:62;478:88;;;546:18;;:::i;:::-;582:2;575:22;328:275;;-1:-1:-1;328:275:66:o;608:183::-;668:4;-1:-1:-1;;;;;690:30:66;;687:56;;;723:18;;:::i;:::-;-1:-1:-1;768:1:66;764:14;780:4;760:25;;608:183::o;796:683::-;861:5;914:3;907:4;899:6;895:17;891:27;881:55;;932:1;929;922:12;881:55;961:6;955:13;987:4;1011:60;1027:43;1067:2;1027:43;:::i;:::-;1011:60;:::i;:::-;1105:15;;;1191:1;1187:10;;;;1175:23;;1171:32;;;1136:12;;;;1215:15;;;1212:35;;;1243:1;1240;1233:12;1212:35;1279:2;1271:6;1267:15;1291:159;1307:6;1302:3;1299:15;1291:159;;;1373:34;1403:3;1373:34;:::i;:::-;1361:47;;1428:12;;;;1324;;1291:159;;;-1:-1:-1;1468:5:66;796:683;-1:-1:-1;;;;;;796:683:66:o;1484:843::-;1548:5;1601:3;1594:4;1586:6;1582:17;1578:27;1568:55;;1619:1;1616;1609:12;1568:55;1648:6;1642:13;1674:4;1698:60;1714:43;1754:2;1714:43;:::i;1698:60::-;1792:15;;;1878:1;1874:10;;;;1862:23;;1858:32;;;1823:12;;;;1902:15;;;1899:35;;;1930:1;1927;1920:12;1899:35;1966:2;1958:6;1954:15;1978:320;1994:6;1989:3;1986:15;1978:320;;;2061:10;;-1:-1:-1;;;;;;2104:32:66;;2094:43;;2084:141;;2179:1;2208:2;2204;2197:14;2084:141;2238:18;;2276:12;;;;2011;;1978:320;;2332:1675;2536:6;2544;2552;2560;2568;2621:3;2609:9;2600:7;2596:23;2592:33;2589:53;;;2638:1;2635;2628:12;2589:53;2661:40;2691:9;2661:40;:::i;:::-;2720:2;2751:18;;;2745:25;2651:50;;-1:-1:-1;2720:2:66;-1:-1:-1;;;;;2819:14:66;;;2816:34;;;2846:1;2843;2836:12;2816:34;2884:6;2873:9;2869:22;2859:32;;2929:7;2922:4;2918:2;2914:13;2910:27;2900:55;;2951:1;2948;2941:12;2900:55;2980:2;2974:9;3003:60;3019:43;3059:2;3019:43;:::i;3003:60::-;3097:15;;;3179:1;3175:10;;;;3167:19;;3163:28;;;3128:12;;;;3203:19;;;3200:39;;;3235:1;3232;3225:12;3200:39;3259:11;;;;3279:135;3295:6;3290:3;3287:15;3279:135;;;3361:10;;3349:23;;3312:12;;;;3392;;;;3279:135;;;3484:2;3469:18;;3463:25;3433:5;;-1:-1:-1;3463:25:66;-1:-1:-1;;;3500:16:66;;;3497:36;;;3529:1;3526;3519:12;3497:36;3552:74;3618:7;3607:8;3596:9;3592:24;3552:74;:::i;:::-;3542:84;;3672:2;3661:9;3657:18;3651:25;3635:41;;3701:2;3691:8;3688:16;3685:36;;;3717:1;3714;3707:12;3685:36;3740:73;3805:7;3794:8;3783:9;3779:24;3740:73;:::i;:::-;3730:83;;3859:3;3848:9;3844:19;3838:26;3822:42;;3889:2;3879:8;3876:16;3873:36;;;3905:1;3902;3895:12;3873:36;;;3928:73;3993:7;3982:8;3971:9;3967:24;3928:73;:::i;:::-;3918:83;;;2332:1675;;;;;;;;:::o;5304:127::-;5365:10;5360:3;5356:20;5353:1;5346:31;5396:4;5393:1;5386:15;5420:4;5417:1;5410:15;5436:232;5475:3;-1:-1:-1;;5496:17:66;;5493:140;;;5555:10;5550:3;5546:20;5543:1;5536:31;5590:4;5587:1;5580:15;5618:4;5615:1;5608:15;5493:140;-1:-1:-1;5660:1:66;5649:13;;5436:232::o;:::-;286:10115:38;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_bridgeAddress_7001": {
                                    "entryPoint": null,
                                    "id": 7001,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_contractAddressToDepositFunctionSignature_7029": {
                                    "entryPoint": null,
                                    "id": 7029,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_contractAddressToExecuteFunctionSignature_7033": {
                                    "entryPoint": null,
                                    "id": 7033,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_contractAddressToResourceID_7025": {
                                    "entryPoint": null,
                                    "id": 7025,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_contractWhitelist_7037": {
                                    "entryPoint": null,
                                    "id": 7037,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_depositRecords_7017": {
                                    "entryPoint": 1564,
                                    "id": 7017,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_onlyBridge_7056": {
                                    "entryPoint": 2945,
                                    "id": 7056,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_resourceIDToContractAddress_7021": {
                                    "entryPoint": null,
                                    "id": 7021,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_setResource_7363": {
                                    "entryPoint": null,
                                    "id": 7363,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@deposit_7259": {
                                    "entryPoint": 676,
                                    "id": 7259,
                                    "parameterSlots": 6,
                                    "returnSlots": 0
                                },
                                "@executeProposal_7321": {
                                    "entryPoint": 2307,
                                    "id": 7321,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@getDepositRecord_7152": {
                                    "entryPoint": 1776,
                                    "id": 7152,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@setResource_7175": {
                                    "entryPoint": 2072,
                                    "id": 7175,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "abi_decode_address": {
                                    "entryPoint": 3275,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_bytes4": {
                                    "entryPoint": 3918,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_bytes_calldata": {
                                    "entryPoint": 3311,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 3752,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32": {
                                    "entryPoint": 4043,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32t_addresst_bytes4t_bytes4": {
                                    "entryPoint": 3966,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 4
                                },
                                "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr": {
                                    "entryPoint": 4068,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_bytes32t_uint8t_uint64t_addresst_bytes_calldata_ptr": {
                                    "entryPoint": 3384,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 6
                                },
                                "abi_decode_tuple_t_uint64t_uint8": {
                                    "entryPoint": 3786,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_uint8t_uint64": {
                                    "entryPoint": 3511,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_uint64": {
                                    "entryPoint": 3251,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint8": {
                                    "entryPoint": 3229,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_bytes": {
                                    "entryPoint": 3606,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes4_t_bytes_memory_ptr__to_t_bytes4_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 4144,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 4216,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_DepositRecord_$7010_memory_ptr__to_t_struct$_DepositRecord_$7010_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 3828,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__to_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 3680,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 3562,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 4244,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:8456:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "182:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "190:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "178:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "292:109:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "302:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "324:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "311:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "311:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "302:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "379:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "388:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "391:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "381:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "381:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "381:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "353:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "364:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "371:4:66",
                                                                                        "type": "",
                                                                                        "value": "0xff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "360:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "360:16:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "350:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "350:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "343:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "343:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "340:55:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint8",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "271:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "282:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "245:156:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "454:123:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "464:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "486:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "473:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "473:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "464:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "555:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "564:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "567:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "557:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "557:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "557:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "515:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "526:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "533:18:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "522:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "522:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "512:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "512:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "505:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "505:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "502:69:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "433:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "444:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "406:171:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "631:147:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "641:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "663:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "650:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "650:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "641:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "756:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "765:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "768:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "758:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "758:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "758:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "692:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "703:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "710:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "699:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "699:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "689:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "689:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "682:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "682:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "679:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "610:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "621:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "582:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "855:275:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "904:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "913:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "916:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "906:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "906:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "906:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "883:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "891:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "879:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "879:17:66"
                                                                            },
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "898:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "875:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "875:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "868:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "868:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "865:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "929:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "952:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "939:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "939:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "929:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1002:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1011:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1014:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1004:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1004:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1004:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "974:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "982:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "971:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "971:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "968:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1027:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1043:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1051:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1039:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1039:17:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "arrayPos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1027:8:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1108:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1117:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1120:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1110:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1110:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1110:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1079:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1087:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1075:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1075:19:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1096:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1071:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1071:30:66"
                                                                    },
                                                                    {
                                                                        "name": "end",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1103:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1068:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1068:39:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1065:59:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_bytes_calldata",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "818:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "826:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "arrayPos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "834:8:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "844:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "783:347:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1289:541:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1336:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1345:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1348:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1338:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1338:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1338:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1310:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1319:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1306:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1306:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1331:3:66",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1302:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1302:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1299:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1361:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1384:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1371:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1371:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1361:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1403:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1434:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1445:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1430:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1430:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1413:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1413:36:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1403:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1458:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1490:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1501:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1486:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1486:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1468:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1468:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1458:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1514:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1547:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1558:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1543:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1543:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1524:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1524:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1514:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1571:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1602:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1613:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1598:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1598:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1585:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1585:33:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1575:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1661:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1670:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1673:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1663:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1663:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1663:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1633:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1641:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1630:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1630:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1627:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1686:84:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1742:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1753:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1738:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1738:22:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1762:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_bytes_calldata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1712:25:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1712:58:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value4_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1690:8:66",
                                                                    "type": ""
                                                                },
                                                                {
                                                                    "name": "value5_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1700:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1779:18:66",
                                                            "value": {
                                                                "name": "value4_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1789:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1779:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1806:18:66",
                                                            "value": {
                                                                "name": "value5_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1816:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1806:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32t_uint8t_uint64t_addresst_bytes_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1215:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1226:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1238:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1246:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1254:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1262:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1270:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1278:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1135:695:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1919:170:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1965:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1974:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1977:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1967:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1967:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1967:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1940:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1949:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1936:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1936:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1961:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1932:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1932:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1929:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1990:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2017:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2000:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2000:27:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1990:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2036:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2068:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2079:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2064:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2064:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2046:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2046:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2036:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint8t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1877:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1888:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1900:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1908:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1835:254:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2147:205:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2157:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2166:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2161:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2226:63:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2251:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2256:1:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2247:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2247:11:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2270:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2275:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2266:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2266:11:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2260:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2260:18:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2240:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2240:39:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2240:39:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2187:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2190:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2184:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2184:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2198:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2200:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2209:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2212:2:66",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2205:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2205:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2200:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2180:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "2176:113:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2315:31:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2328:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2333:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2324:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2324:16:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2342:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2317:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2317:27:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2317:27:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2304:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2307:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2301:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2301:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2298:48:66"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2125:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2130:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2135:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2094:258:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2406:267:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2416:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2436:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2430:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2430:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2420:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2458:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2463:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2451:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2451:19:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2451:19:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2505:5:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2512:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2501:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2501:16:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2523:3:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2528:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2519:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2519:14:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2535:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2479:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2479:63:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2479:63:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2551:116:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2566:3:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2579:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "2587:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2575:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2575:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2592:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2571:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2571:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2562:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2562:98:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2662:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2558:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2558:109:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2551:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_bytes",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2383:5:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2390:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2398:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2357:316:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2877:289:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2894:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2909:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2917:4:66",
                                                                                "type": "",
                                                                                "value": "0xff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2905:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2905:17:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2887:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2887:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2887:36:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2943:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2954:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2939:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2939:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2963:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2971:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2959:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2959:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2932:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2932:83:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2932:83:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3035:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3046:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3031:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3031:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3051:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3024:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3024:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3024:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3078:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3089:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3074:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3074:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3094:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3067:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3067:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3067:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3107:53:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3132:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3144:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3155:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3140:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3140:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3115:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3115:45:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3107:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__to_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2822:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2833:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2841:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2849:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2857:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2868:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2678:488:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3241:116:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3287:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3296:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3299:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3289:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3289:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3289:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3262:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3271:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3258:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3258:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3283:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3254:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3254:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3251:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3312:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3341:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3322:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3322:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3312:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3207:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3218:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3230:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3171:186:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3457:92:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3467:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3479:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3490:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3475:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3475:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3467:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3509:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3534:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3527:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3527:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3520:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3520:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3502:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3502:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3502:41:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3426:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3437:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3448:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3362:187:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3653:149:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3663:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3675:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3686:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3671:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3671:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3663:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3705:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3720:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3728:66:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3716:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3716:79:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3698:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3698:98:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3698:98:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3622:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3633:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3644:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3554:248:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3891:170:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3937:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3946:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3949:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3939:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3939:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3939:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3912:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3921:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3908:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3908:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3933:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3904:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3904:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3901:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3962:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3990:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3972:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3972:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3962:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4009:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4040:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4051:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4036:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4036:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4019:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4019:36:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4009:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64t_uint8",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3849:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3860:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3872:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3880:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3807:254:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4229:427:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4246:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4257:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4239:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4239:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4239:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4280:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4291:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4276:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4276:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4306:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4300:5:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4300:13:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4315:4:66",
                                                                                "type": "",
                                                                                "value": "0xff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4296:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4296:24:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4269:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4269:52:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4269:52:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4341:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4352:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4337:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4337:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value0",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4371:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "4379:2:66",
                                                                                                "type": "",
                                                                                                "value": "32"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4367:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4367:15:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4361:5:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4361:22:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4385:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4357:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4357:71:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4330:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4330:99:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4330:99:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4449:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4460:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4445:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4445:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4475:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4483:2:66",
                                                                                        "type": "",
                                                                                        "value": "64"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4471:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4471:15:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4465:5:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4465:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4438:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4438:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4438:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4497:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4527:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4535:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4523:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4523:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4517:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4517:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4501:12:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4559:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4570:4:66",
                                                                                "type": "",
                                                                                "value": "0x80"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4555:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4555:20:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4577:4:66",
                                                                        "type": "",
                                                                        "value": "0x80"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4548:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4548:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4548:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4591:59:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4616:12:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4634:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4645:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4630:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4630:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4599:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4599:51:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4591:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_DepositRecord_$7010_memory_ptr__to_t_struct$_DepositRecord_$7010_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4198:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4209:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4220:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4066:590:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4709:171:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4719:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4741:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4728:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4728:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4719:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4858:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4867:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4870:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4860:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4860:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4860:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4770:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4781:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4788:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4777:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4777:78:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4767:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4767:89:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4760:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4760:97:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4757:117:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_bytes4",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4688:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4699:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4661:219:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5004:280:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5051:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5060:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5063:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5053:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5053:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5053:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5025:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5034:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5021:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5021:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5046:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5017:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5017:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5014:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5076:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5099:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5086:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5086:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5076:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5118:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5151:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5162:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5147:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5147:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5128:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5128:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5118:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5175:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5207:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5218:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5203:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5203:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_bytes4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5185:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5185:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5175:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5231:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5263:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5274:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5259:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5259:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_bytes4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5241:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5241:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5231:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32t_addresst_bytes4t_bytes4",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4946:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4957:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4969:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4977:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4985:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4993:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4885:399:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5359:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5405:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5414:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5417:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5407:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5407:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5407:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5380:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5389:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5376:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5376:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5401:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5372:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5372:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5369:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5430:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5453:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5440:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5440:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5430:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5325:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5336:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5348:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5289:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5580:371:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5626:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5635:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5638:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5628:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5628:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5628:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5601:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5610:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5597:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5597:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5622:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5593:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5593:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5590:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5651:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5674:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5661:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5661:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5651:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5693:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5724:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5735:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5720:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5720:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5707:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5707:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5697:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5782:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5791:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5794:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5784:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5784:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5784:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5754:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5762:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5751:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5751:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5748:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5807:84:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5863:9:66"
                                                                            },
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5874:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5859:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5859:22:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5883:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_bytes_calldata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5833:25:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5833:58:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value1_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5811:8:66",
                                                                    "type": ""
                                                                },
                                                                {
                                                                    "name": "value2_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5821:8:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5900:18:66",
                                                            "value": {
                                                                "name": "value1_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5910:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5900:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5927:18:66",
                                                            "value": {
                                                                "name": "value2_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5937:8:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5927:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32t_bytes_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5530:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5541:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5553:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5561:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5569:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5474:477:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6057:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6067:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6079:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6090:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6075:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6075:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6067:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6109:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6120:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6102:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6102:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6102:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6026:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6037:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6048:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5956:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6312:233:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6329:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6340:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6322:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6322:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6322:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6363:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6374:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6359:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6359:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6379:2:66",
                                                                        "type": "",
                                                                        "value": "43"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6352:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6352:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6352:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6402:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6413:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6398:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6398:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "70726f766964656420636f6e747261637441646472657373206973206e6f7420",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6418:34:66",
                                                                        "type": "",
                                                                        "value": "provided contractAddress is not "
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6391:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6391:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6391:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6473:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6484:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6469:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6469:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "77686974656c6973746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6489:13:66",
                                                                        "type": "",
                                                                        "value": "whitelisted"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6462:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6462:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6462:41:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6512:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6524:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6535:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6520:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6520:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6512:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6289:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6303:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6138:407:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6713:254:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6730:3:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6739:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6747:66:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6735:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6735:79:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6723:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6723:92:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6723:92:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6824:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6844:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6838:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6838:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6828:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6886:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6894:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6882:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6882:17:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6905:3:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6910:1:66",
                                                                                "type": "",
                                                                                "value": "4"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6901:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6901:11:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6914:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6860:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6860:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6860:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6930:31:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6945:3:66"
                                                                            },
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6950:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6941:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6941:16:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6959:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6937:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6937:24:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6930:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes4_t_bytes_memory_ptr__to_t_bytes4_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6681:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6686:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6694:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6705:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6550:417:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7109:137:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7119:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7139:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7133:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7133:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7123:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7181:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7189:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7177:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7177:17:66"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7196:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7201:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7155:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7155:53:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7155:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7217:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7228:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7233:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7224:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7224:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7217:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7085:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7090:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7101:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6972:274:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7425:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7442:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7453:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7435:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7435:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7435:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7476:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7487:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7472:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7472:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7492:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7465:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7465:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7465:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7515:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7526:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7511:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7511:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "64656c656761746563616c6c20746f20636f6e74726163744164647265737320",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7531:34:66",
                                                                        "type": "",
                                                                        "value": "delegatecall to contractAddress "
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7504:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7504:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7504:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7586:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7597:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7582:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7582:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6661696c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7602:8:66",
                                                                        "type": "",
                                                                        "value": "failed"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7575:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7575:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7575:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7620:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7632:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7643:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7628:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7628:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7620:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7402:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7416:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7251:402:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7713:382:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7723:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7737:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7740:4:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7733:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7733:12:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7723:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7754:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7784:4:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7790:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7780:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7780:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7758:18:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7831:31:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "7833:27:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "7847:6:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7855:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7843:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7843:17:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7833:6:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7811:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7804:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7804:26:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7801:61:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7921:168:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7942:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7945:77:66",
                                                                                    "type": "",
                                                                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7935:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7935:88:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7935:88:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8043:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8046:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8036:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "8036:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "8036:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8071:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8074:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8064:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "8064:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "8064:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7877:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7900:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7908:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7897:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7897:14:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7874:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7874:38:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7871:218:66"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7693:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7702:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7658:437:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8274:180:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8291:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8302:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8284:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8284:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8284:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8325:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8336:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8321:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8321:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8341:2:66",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8314:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8314:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8314:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8364:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8375:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8360:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8360:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8380:32:66",
                                                                        "type": "",
                                                                        "value": "sender must be bridge contract"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8353:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8353:60:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8353:60:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8422:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8434:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8445:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8430:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8430:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8422:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8251:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8265:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8100:354:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_uint8(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_uint8t_uint64t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint8(add(headStart, 32))\n        value2 := abi_decode_uint64(add(headStart, 64))\n        value3 := abi_decode_address(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_decode_tuple_t_uint8t_uint64(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := abi_decode_uint64(add(headStart, 32))\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__to_t_uint8_t_address_t_bytes32_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_bytes(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_decode_tuple_t_uint64t_uint8(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n        value1 := abi_decode_uint8(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_struct$_DepositRecord_$7010_memory_ptr__to_t_struct$_DepositRecord_$7010_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), and(mload(value0), 0xff))\n        mstore(add(headStart, 64), and(mload(add(value0, 32)), 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 96), mload(add(value0, 64)))\n        let memberValue0 := mload(add(value0, 96))\n        mstore(add(headStart, 0x80), 0x80)\n        tail := abi_encode_bytes(memberValue0, add(headStart, 160))\n    }\n    function abi_decode_bytes4(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_bytes4t_bytes4(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := abi_decode_bytes4(add(headStart, 64))\n        value3 := abi_decode_bytes4(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes32t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"provided contractAddress is not \")\n        mstore(add(headStart, 96), \"whitelisted\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes4_t_bytes_memory_ptr__to_t_bytes4_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n        let length := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), add(pos, 4), length)\n        end := add(add(pos, length), 4)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"delegatecall to contractAddress \")\n        mstore(add(headStart, 96), \"failed\")\n        tail := add(headStart, 128)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"sender must be bridge contract\")\n        tail := add(headStart, 96)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c8063ba484c0911610081578063cb6244631161005b578063cb62446314610240578063e248cff214610263578063ec97d3b41461027657600080fd5b8063ba484c09146101d7578063bba8185a146101f7578063c54c2a111461020a57600080fd5b80634402027f116100b25780634402027f1461012d5780637f79bea814610150578063a5c3a9851461018357600080fd5b8063318c136e146100ce57806338995da914610118575b600080fd5b6000546100ee9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61012b610126366004610d38565b6102a4565b005b61014061013b366004610db7565b61061c565b60405161010f9493929190610e60565b61017361015e366004610ea8565b60066020526000908152604090205460ff1681565b604051901515815260200161010f565b6101a6610191366004610ea8565b60056020526000908152604090205460e01b81565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161010f565b6101ea6101e5366004610eca565b6106f0565b60405161010f9190610ef4565b61012b610205366004610f7e565b610818565b6100ee610218366004610fcb565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101a661024e366004610ea8565b60046020526000908152604090205460e01b81565b61012b610271366004610fe4565b610903565b610296610284366004610ea8565b60036020526000908152604090205481565b60405190815260200161010f565b6102ac610b81565b6000606060c4359150604051905081810160200160405260c4360360c4823760008881526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff1680845260069092529091205460ff16610393576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f70726f766964656420636f6e747261637441646472657373206973206e6f742060448201527f77686974656c697374656400000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604090205460e01b7fffffffff0000000000000000000000000000000000000000000000000000000081161561050757600081846040516020016103f9929190611030565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff16826040516104319190611078565b6000604051808303816000865af19150503d806000811461046e576040519150601f19603f3d011682016040523d82523d6000602084013e610473565b606091505b5050905080610504576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f64656c656761746563616c6c20746f20636f6e7472616374416464726573732060448201527f6661696c65640000000000000000000000000000000000000000000000000000606482015260840161038a565b50505b60405180608001604052808a60ff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018b815260200184815250600160008b60ff1660ff16815260200190815260200160002060008a67ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010155606082015181600201908051906020019061060d929190610c04565b50505050505050505050505050565b6001602081815260009384526040808520909152918352912080549181015460028201805460ff851694610100900473ffffffffffffffffffffffffffffffffffffffff1693919061066d90611094565b80601f016020809104026020016040519081016040528092919081815260200182805461069990611094565b80156106e65780601f106106bb576101008083540402835291602001916106e6565b820191906000526020600020905b8154815290600101906020018083116106c957829003601f168201915b5050505050905084565b604080516080810182526000808252602082018190529181019190915260608082015260ff828116600090815260016020818152604080842067ffffffffffffffff8916855282529283902083516080810185528154958616815261010090950473ffffffffffffffffffffffffffffffffffffffff1691850191909152908101549183019190915260028101805460608401919061078e90611094565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba90611094565b80156108075780601f106107dc57610100808354040283529160200191610807565b820191906000526020600020905b8154815290600101906020018083116107ea57829003601f168201915b505050505081525050905092915050565b610820610b81565b6000848152600260209081526040808320805473ffffffffffffffffffffffffffffffffffffffff88167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915583526003825280832087905560048252808320805460e087811c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000928316179092556005845282852080549287901c929091169190911790556006909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b50505050565b61090b610b81565b60408051606480358201606001909252907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9c360190823760008481526002602090815260408083205473ffffffffffffffffffffffffffffffffffffffff1680845260069092529091205460ff16610a05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f70726f766964656420636f6e747261637441646472657373206973206e6f742060448201527f77686974656c6973746564000000000000000000000000000000000000000000606482015260840161038a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090205460e01b7fffffffff00000000000000000000000000000000000000000000000000000000811615610b795760008184604051602001610a6b929190611030565b604051602081830303815290604052905060008373ffffffffffffffffffffffffffffffffffffffff1682604051610aa39190611078565b6000604051808303816000865af19150503d8060008114610ae0576040519150601f19603f3d011682016040523d82523d6000602084013e610ae5565b606091505b5050905080610b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f64656c656761746563616c6c20746f20636f6e7472616374416464726573732060448201527f6661696c65640000000000000000000000000000000000000000000000000000606482015260840161038a565b50505b505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f73656e646572206d7573742062652062726964676520636f6e74726163740000604482015260640161038a565b565b828054610c1090611094565b90600052602060002090601f016020900481019282610c325760008555610c78565b82601f10610c4b57805160ff1916838001178555610c78565b82800160010185558215610c78579182015b82811115610c78578251825591602001919060010190610c5d565b50610c84929150610c88565b5090565b5b80821115610c845760008155600101610c89565b803560ff81168114610cae57600080fd5b919050565b803567ffffffffffffffff81168114610cae57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610cae57600080fd5b60008083601f840112610d0157600080fd5b50813567ffffffffffffffff811115610d1957600080fd5b602083019150836020828501011115610d3157600080fd5b9250929050565b60008060008060008060a08789031215610d5157600080fd5b86359550610d6160208801610c9d565b9450610d6f60408801610cb3565b9350610d7d60608801610ccb565b9250608087013567ffffffffffffffff811115610d9957600080fd5b610da589828a01610cef565b979a9699509497509295939492505050565b60008060408385031215610dca57600080fd5b610dd383610c9d565b9150610de160208401610cb3565b90509250929050565b60005b83811015610e05578181015183820152602001610ded565b838111156108fd5750506000910152565b60008151808452610e2e816020860160208601610dea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60ff8516815273ffffffffffffffffffffffffffffffffffffffff84166020820152826040820152608060608201526000610e9e6080830184610e16565b9695505050505050565b600060208284031215610eba57600080fd5b610ec382610ccb565b9392505050565b60008060408385031215610edd57600080fd5b610ee683610cb3565b9150610de160208401610c9d565b6020815260ff825116602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201526040820151606082015260006060830151608080840152610f4660a0840182610e16565b949350505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cae57600080fd5b60008060008060808587031215610f9457600080fd5b84359350610fa460208601610ccb565b9250610fb260408601610f4e565b9150610fc060608601610f4e565b905092959194509250565b600060208284031215610fdd57600080fd5b5035919050565b600080600060408486031215610ff957600080fd5b83359250602084013567ffffffffffffffff81111561101757600080fd5b61102386828701610cef565b9497909650939450505050565b7fffffffff00000000000000000000000000000000000000000000000000000000831681526000825161106a816004850160208701610dea565b919091016004019392505050565b6000825161108a818460208701610dea565b9190910192915050565b600181811c908216806110a857607f821691505b602082108114156110e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea26469706673582212202aa80fce7fc080846fcad41504e42be256a77682cdf18c978749662e3d99cc3864736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBA484C09 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCB624463 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCB624463 EQ PUSH2 0x240 JUMPI DUP1 PUSH4 0xE248CFF2 EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0xEC97D3B4 EQ PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBA484C09 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0xBBA8185A EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0xC54C2A11 EQ PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4402027F GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x4402027F EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x7F79BEA8 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0xA5C3A985 EQ PUSH2 0x183 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x318C136E EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x38995DA9 EQ PUSH2 0x118 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xEE SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x12B PUSH2 0x126 CALLDATASIZE PUSH1 0x4 PUSH2 0xD38 JUMP JUMPDEST PUSH2 0x2A4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x140 PUSH2 0x13B CALLDATASIZE PUSH1 0x4 PUSH2 0xDB7 JUMP JUMPDEST PUSH2 0x61C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xE60 JUMP JUMPDEST PUSH2 0x173 PUSH2 0x15E CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x191 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xE0 SHL DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1EA PUSH2 0x1E5 CALLDATASIZE PUSH1 0x4 PUSH2 0xECA JUMP JUMPDEST PUSH2 0x6F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0xEF4 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x205 CALLDATASIZE PUSH1 0x4 PUSH2 0xF7E JUMP JUMPDEST PUSH2 0x818 JUMP JUMPDEST PUSH2 0xEE PUSH2 0x218 CALLDATASIZE PUSH1 0x4 PUSH2 0xFCB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1A6 PUSH2 0x24E CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xE0 SHL DUP2 JUMP JUMPDEST PUSH2 0x12B PUSH2 0x271 CALLDATASIZE PUSH1 0x4 PUSH2 0xFE4 JUMP JUMPDEST PUSH2 0x903 JUMP JUMPDEST PUSH2 0x296 PUSH2 0x284 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA8 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x2AC PUSH2 0xB81 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0xC4 CALLDATALOAD SWAP2 POP PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0xC4 CALLDATASIZE SUB PUSH1 0xC4 DUP3 CALLDATACOPY PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP5 MSTORE PUSH1 0x6 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x393 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F766964656420636F6E747261637441646472657373206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x77686974656C6973746564000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xE0 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0x507 JUMPI PUSH1 0x0 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3F9 SWAP3 SWAP2 SWAP1 PUSH2 0x1030 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x431 SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x46E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x473 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x504 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64656C656761746563616C6C20746F20636F6E74726163744164647265737320 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6661696C65640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x38A JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP PUSH1 0x1 PUSH1 0x0 DUP12 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x60D SWAP3 SWAP2 SWAP1 PUSH2 0xC04 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SWAP1 SWAP2 MSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD SWAP2 DUP2 ADD SLOAD PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF DUP6 AND SWAP5 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP2 SWAP1 PUSH2 0x66D SWAP1 PUSH2 0x1094 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 0x699 SWAP1 PUSH2 0x1094 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x6E6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6BB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x6E6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6C9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP1 DUP3 ADD MSTORE PUSH1 0xFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 PUSH8 0xFFFFFFFFFFFFFFFF DUP10 AND DUP6 MSTORE DUP3 MSTORE SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH1 0x80 DUP2 ADD DUP6 MSTORE DUP2 SLOAD SWAP6 DUP7 AND DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP6 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 DUP2 ADD SLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 PUSH2 0x78E SWAP1 PUSH2 0x1094 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 0x7BA SWAP1 PUSH2 0x1094 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x807 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x7DC JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x807 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7EA JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x820 PUSH2 0xB81 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE PUSH1 0x3 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP8 SWAP1 SSTORE PUSH1 0x4 DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xE0 DUP8 DUP2 SHR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP3 DUP8 SWAP1 SHR SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x6 SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x90B PUSH2 0xB81 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x64 DUP1 CALLDATALOAD DUP3 ADD PUSH1 0x60 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C CALLDATASIZE ADD SWAP1 DUP3 CALLDATACOPY PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP5 MSTORE PUSH1 0x6 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xA05 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x70726F766964656420636F6E747261637441646472657373206973206E6F7420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x77686974656C6973746564000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x38A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xE0 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND ISZERO PUSH2 0xB79 JUMPI PUSH1 0x0 DUP2 DUP5 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA6B SWAP3 SWAP2 SWAP1 PUSH2 0x1030 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0xAA3 SWAP2 SWAP1 PUSH2 0x1078 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAE0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xAE5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xB76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64656C656761746563616C6C20746F20636F6E74726163744164647265737320 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6661696C65640000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x38A JUMP JUMPDEST POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xC02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x73656E646572206D7573742062652062726964676520636F6E74726163740000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x38A JUMP JUMPDEST JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0xC10 SWAP1 PUSH2 0x1094 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0xC32 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0xC78 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0xC4B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xC78 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xC78 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xC78 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xC5D JUMP JUMPDEST POP PUSH2 0xC84 SWAP3 SWAP2 POP PUSH2 0xC88 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xC84 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xC89 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xD01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xD51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH2 0xD61 PUSH1 0x20 DUP9 ADD PUSH2 0xC9D JUMP JUMPDEST SWAP5 POP PUSH2 0xD6F PUSH1 0x40 DUP9 ADD PUSH2 0xCB3 JUMP JUMPDEST SWAP4 POP PUSH2 0xD7D PUSH1 0x60 DUP9 ADD PUSH2 0xCCB JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDA5 DUP10 DUP3 DUP11 ADD PUSH2 0xCEF JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDCA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDD3 DUP4 PUSH2 0xC9D JUMP JUMPDEST SWAP2 POP PUSH2 0xDE1 PUSH1 0x20 DUP5 ADD PUSH2 0xCB3 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE05 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDED JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x8FD JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xE2E DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xFF DUP6 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xE9E PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xE16 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC3 DUP3 PUSH2 0xCCB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE6 DUP4 PUSH2 0xCB3 JUMP JUMPDEST SWAP2 POP PUSH2 0xDE1 PUSH1 0x20 DUP5 ADD PUSH2 0xC9D JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0xFF DUP3 MLOAD AND PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP4 ADD MLOAD AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x80 DUP1 DUP5 ADD MSTORE PUSH2 0xF46 PUSH1 0xA0 DUP5 ADD DUP3 PUSH2 0xE16 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xCAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xF94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0xFA4 PUSH1 0x20 DUP7 ADD PUSH2 0xCCB JUMP JUMPDEST SWAP3 POP PUSH2 0xFB2 PUSH1 0x40 DUP7 ADD PUSH2 0xF4E JUMP JUMPDEST SWAP2 POP PUSH2 0xFC0 PUSH1 0x60 DUP7 ADD PUSH2 0xF4E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1023 DUP7 DUP3 DUP8 ADD PUSH2 0xCEF JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x106A DUP2 PUSH1 0x4 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xDEA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD PUSH1 0x4 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x108A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xDEA JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x10A8 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x10E2 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2A 0xA8 0xF 0xCE PUSH32 0xC080846FCAD41504E42BE256A77682CDF18C978749662E3D99CC3864736F6C63 NUMBER STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "286:10115:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;335:29;;;;;;;;;;;;190:42:66;178:55;;;160:74;;148:2;133:18;335:29:38;;;;;;;;6478:1673;;;;;;:::i;:::-;;:::i;:::-;;560:73;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;1187:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3527:14:66;;3520:22;3502:41;;3490:2;3475:18;1187:50:38;3362:187:66;1056:76:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3728:66:66;3716:79;;;3698:98;;3686:2;3671:18;1056:76:38;3554:248:66;4472:167:38;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5607:285::-;;;;;;:::i;:::-;;:::i;678:63::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;910:76;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8508:1341;;;;;;:::i;:::-;;:::i;786:63::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;6102:25:66;;;6090:2;6075:18;786:63:38;5956:177:66;6478:1673:38;1276:13;:11;:13::i;:::-;6673:19:::1;6702:21;6839:4;6826:18;6811:33;;6915:4;6909:11;6897:23;;6971:11;6961:8;6957:26;6951:4;6947:37;6941:4;6934:51;7355:4;7339:14;7335:25;7251:4;7205:8;7175:266;7461:23;7487:40:::0;;;:28:::1;:40;::::0;;;;;;;;::::1;;7545:35:::0;;;:18:::1;:35:::0;;;;;;;::::1;;7537:91;;;::::0;::::1;::::0;;6340:2:66;7537:91:38::1;::::0;::::1;6322:21:66::0;6379:2;6359:18;;;6352:30;6418:34;6398:18;;;6391:62;6489:13;6469:18;;;6462:41;6520:19;;7537:91:38::1;;;;;;;;;7652:59;::::0;::::1;7639:10;7652:59:::0;;;:42:::1;:59;::::0;;;;;::::1;;7725:16:::0;;::::1;::::0;7721:237:::1;;7757:21;7798:3;7803:8;7781:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7757:55;;7827:12;7845:15;:20;;7866:8;7845:30;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7826:49;;;7897:7;7889:58;;;::::0;::::1;::::0;;7453:2:66;7889:58:38::1;::::0;::::1;7435:21:66::0;7492:2;7472:18;;;7465:30;7531:34;7511:18;;;7504:62;7602:8;7582:18;;;7575:36;7628:19;;7889:58:38::1;7251:402:66::0;7889:58:38::1;7743:215;;7721:237;8020:124;;;;;;;;8047:18;8020:124;;;;;;8079:9;8020:124;;;;;;8102:10;8020:124;;;;8126:8;8020:124;;::::0;7968:15:::1;:35;7984:18;7968:35;;;;;;;;;;;;;;;:49;8004:12;7968:49;;;;;;;;;;;;;;;:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;;;;;;;6478:1673:38:o;560:73::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4472:167::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4595:23:38;;;;;;;;:15;:23;;;;;;;;:37;;;;;;;;;;;4588:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4472:167;;;;:::o;5607:285::-;1276:13;:11;:13::i;:::-;10033:40;;;;:28;:40;;;;;;;;:58;;;;;;;;;;;;;;10101:45;;:28;:45;;;;;:58;;;10169:42;:59;;;;;:80;;;;;;;;;;;;;;10259:42;:59;;;;;:80;;;;;;;;;;;;;;;;10350:18;:35;;;;;:42;;;;-1:-1:-1;10350:42:38;;;5804:81:::1;5607:285:::0;;;;:::o;8508:1341::-;1276:13;:11;:13::i;:::-;8773:4:::1;8767:11:::0;;8895:4:::1;8882:18:::0;::::1;8936:22:::0;::::1;8599:21;8926:33;8913:47:::0;;;8767:11;9252:25;9256:14:::1;9252:25:::0;;8767:11;9094:232:::1;9346:23;9372:40:::0;;;:28:::1;:40;::::0;;;;;;;;::::1;;9430:35:::0;;;:18:::1;:35:::0;;;;;;;::::1;;9422:91;;;::::0;::::1;::::0;;6340:2:66;9422:91:38::1;::::0;::::1;6322:21:66::0;6379:2;6359:18;;;6352:30;6418:34;6398:18;;;6391:62;6489:13;6469:18;;;6462:41;6520:19;;9422:91:38::1;6138:407:66::0;9422:91:38::1;9537:59;::::0;::::1;9524:10;9537:59:::0;;;:42:::1;:59;::::0;;;;;::::1;;9610:16:::0;;::::1;::::0;9606:237:::1;;9642:21;9683:3;9688:8;9666:31;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9642:55;;9712:12;9730:15;:20;;9751:8;9730:30;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9711:49;;;9782:7;9774:58;;;::::0;::::1;::::0;;7453:2:66;9774:58:38::1;::::0;::::1;7435:21:66::0;7492:2;7472:18;;;7465:30;7531:34;7511:18;;;7504:62;7602:8;7582:18;;;7575:36;7628:19;;9774:58:38::1;7251:402:66::0;9774:58:38::1;9628:215;;9606:237;8589:1260;;;8508:1341:::0;;;:::o;1313:124::-;1381:14;;;;1367:10;:28;1359:71;;;;;;;8302:2:66;1359:71:38;;;8284:21:66;8341:2;8321:18;;;8314:30;8380:32;8360:18;;;8353:60;8430:18;;1359:71:38;8100:354:66;1359:71:38;1313:124::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;245:156:66;311:20;;371:4;360:16;;350:27;;340:55;;391:1;388;381:12;340:55;245:156;;;:::o;406:171::-;473:20;;533:18;522:30;;512:41;;502:69;;567:1;564;557:12;582:196;650:20;;710:42;699:54;;689:65;;679:93;;768:1;765;758:12;783:347;834:8;844:6;898:3;891:4;883:6;879:17;875:27;865:55;;916:1;913;906:12;865:55;-1:-1:-1;939:20:66;;982:18;971:30;;968:50;;;1014:1;1011;1004:12;968:50;1051:4;1043:6;1039:17;1027:29;;1103:3;1096:4;1087:6;1079;1075:19;1071:30;1068:39;1065:59;;;1120:1;1117;1110:12;1065:59;783:347;;;;;:::o;1135:695::-;1238:6;1246;1254;1262;1270;1278;1331:3;1319:9;1310:7;1306:23;1302:33;1299:53;;;1348:1;1345;1338:12;1299:53;1384:9;1371:23;1361:33;;1413:36;1445:2;1434:9;1430:18;1413:36;:::i;:::-;1403:46;;1468:37;1501:2;1490:9;1486:18;1468:37;:::i;:::-;1458:47;;1524:38;1558:2;1547:9;1543:18;1524:38;:::i;:::-;1514:48;;1613:3;1602:9;1598:19;1585:33;1641:18;1633:6;1630:30;1627:50;;;1673:1;1670;1663:12;1627:50;1712:58;1762:7;1753:6;1742:9;1738:22;1712:58;:::i;:::-;1135:695;;;;-1:-1:-1;1135:695:66;;-1:-1:-1;1135:695:66;;1789:8;;1135:695;-1:-1:-1;;;1135:695:66:o;1835:254::-;1900:6;1908;1961:2;1949:9;1940:7;1936:23;1932:32;1929:52;;;1977:1;1974;1967:12;1929:52;2000:27;2017:9;2000:27;:::i;:::-;1990:37;;2046;2079:2;2068:9;2064:18;2046:37;:::i;:::-;2036:47;;1835:254;;;;;:::o;2094:258::-;2166:1;2176:113;2190:6;2187:1;2184:13;2176:113;;;2266:11;;;2260:18;2247:11;;;2240:39;2212:2;2205:10;2176:113;;;2307:6;2304:1;2301:13;2298:48;;;-1:-1:-1;;2342:1:66;2324:16;;2317:27;2094:258::o;2357:316::-;2398:3;2436:5;2430:12;2463:6;2458:3;2451:19;2479:63;2535:6;2528:4;2523:3;2519:14;2512:4;2505:5;2501:16;2479:63;:::i;:::-;2587:2;2575:15;2592:66;2571:88;2562:98;;;;2662:4;2558:109;;2357:316;-1:-1:-1;;2357:316:66:o;2678:488::-;2917:4;2909:6;2905:17;2894:9;2887:36;2971:42;2963:6;2959:55;2954:2;2943:9;2939:18;2932:83;3051:6;3046:2;3035:9;3031:18;3024:34;3094:3;3089:2;3078:9;3074:18;3067:31;2868:4;3115:45;3155:3;3144:9;3140:19;3132:6;3115:45;:::i;:::-;3107:53;2678:488;-1:-1:-1;;;;;;2678:488:66:o;3171:186::-;3230:6;3283:2;3271:9;3262:7;3258:23;3254:32;3251:52;;;3299:1;3296;3289:12;3251:52;3322:29;3341:9;3322:29;:::i;:::-;3312:39;3171:186;-1:-1:-1;;;3171:186:66:o;3807:254::-;3872:6;3880;3933:2;3921:9;3912:7;3908:23;3904:32;3901:52;;;3949:1;3946;3939:12;3901:52;3972:28;3990:9;3972:28;:::i;:::-;3962:38;;4019:36;4051:2;4040:9;4036:18;4019:36;:::i;4066:590::-;4257:2;4246:9;4239:21;4315:4;4306:6;4300:13;4296:24;4291:2;4280:9;4276:18;4269:52;4385:42;4379:2;4371:6;4367:15;4361:22;4357:71;4352:2;4341:9;4337:18;4330:99;4483:2;4475:6;4471:15;4465:22;4460:2;4449:9;4445:18;4438:50;4220:4;4535:2;4527:6;4523:15;4517:22;4577:4;4570;4559:9;4555:20;4548:34;4599:51;4645:3;4634:9;4630:19;4616:12;4599:51;:::i;:::-;4591:59;4066:590;-1:-1:-1;;;;4066:590:66:o;4661:219::-;4728:20;;4788:66;4777:78;;4767:89;;4757:117;;4870:1;4867;4860:12;4885:399;4969:6;4977;4985;4993;5046:3;5034:9;5025:7;5021:23;5017:33;5014:53;;;5063:1;5060;5053:12;5014:53;5099:9;5086:23;5076:33;;5128:38;5162:2;5151:9;5147:18;5128:38;:::i;:::-;5118:48;;5185:37;5218:2;5207:9;5203:18;5185:37;:::i;:::-;5175:47;;5241:37;5274:2;5263:9;5259:18;5241:37;:::i;:::-;5231:47;;4885:399;;;;;;;:::o;5289:180::-;5348:6;5401:2;5389:9;5380:7;5376:23;5372:32;5369:52;;;5417:1;5414;5407:12;5369:52;-1:-1:-1;5440:23:66;;5289:180;-1:-1:-1;5289:180:66:o;5474:477::-;5553:6;5561;5569;5622:2;5610:9;5601:7;5597:23;5593:32;5590:52;;;5638:1;5635;5628:12;5590:52;5674:9;5661:23;5651:33;;5735:2;5724:9;5720:18;5707:32;5762:18;5754:6;5751:30;5748:50;;;5794:1;5791;5784:12;5748:50;5833:58;5883:7;5874:6;5863:9;5859:22;5833:58;:::i;:::-;5474:477;;5910:8;;-1:-1:-1;5807:84:66;;-1:-1:-1;;;;5474:477:66:o;6550:417::-;6747:66;6739:6;6735:79;6730:3;6723:92;6705:3;6844:6;6838:13;6860:61;6914:6;6910:1;6905:3;6901:11;6894:4;6886:6;6882:17;6860:61;:::i;:::-;6941:16;;;;6959:1;6937:24;;6550:417;-1:-1:-1;;;6550:417:66:o;6972:274::-;7101:3;7139:6;7133:13;7155:53;7201:6;7196:3;7189:4;7181:6;7177:17;7155:53;:::i;:::-;7224:16;;;;;6972:274;-1:-1:-1;;6972:274:66:o;7658:437::-;7737:1;7733:12;;;;7780;;;7801:61;;7855:4;7847:6;7843:17;7833:27;;7801:61;7908:2;7900:6;7897:14;7877:18;7874:38;7871:218;;;7945:77;7942:1;7935:88;8046:4;8043:1;8036:15;8074:4;8071:1;8064:15;7871:218;;7658:437;;;:::o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "876400",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "_bridgeAddress()": "2326",
                                "_contractAddressToDepositFunctionSignature(address)": "2544",
                                "_contractAddressToExecuteFunctionSignature(address)": "2589",
                                "_contractAddressToResourceID(address)": "2573",
                                "_contractWhitelist(address)": "2564",
                                "_depositRecords(uint8,uint64)": "infinite",
                                "_resourceIDToContractAddress(bytes32)": "2509",
                                "deposit(bytes32,uint8,uint64,address,bytes)": "infinite",
                                "executeProposal(bytes32,bytes)": "infinite",
                                "getDepositRecord(uint64,uint8)": "infinite",
                                "setResource(bytes32,address,bytes4,bytes4)": "infinite"
                            },
                            "internal": {
                                "_onlyBridge()": "infinite",
                                "_setResource(bytes32,address,bytes4,bytes4)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "_bridgeAddress()": "318c136e",
                            "_contractAddressToDepositFunctionSignature(address)": "cb624463",
                            "_contractAddressToExecuteFunctionSignature(address)": "a5c3a985",
                            "_contractAddressToResourceID(address)": "ec97d3b4",
                            "_contractWhitelist(address)": "7f79bea8",
                            "_depositRecords(uint8,uint64)": "4402027f",
                            "_resourceIDToContractAddress(bytes32)": "c54c2a11",
                            "deposit(bytes32,uint8,uint64,address,bytes)": "38995da9",
                            "executeProposal(bytes32,bytes)": "e248cff2",
                            "getDepositRecord(uint64,uint8)": "ba484c09",
                            "setResource(bytes32,address,bytes4,bytes4)": "bba8185a"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"initialResourceIDs\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"initialContractAddresses\",\"type\":\"address[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"initialDepositFunctionSignatures\",\"type\":\"bytes4[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"initialExecuteFunctionSignatures\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"_bridgeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractAddressToDepositFunctionSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractAddressToExecuteFunctionSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractAddressToResourceID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"_contractWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"_depositRecords\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"destId\",\"type\":\"uint8\"}],\"name\":\"getDepositRecord\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"_destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"_depositer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_metaData\",\"type\":\"bytes\"}],\"internalType\":\"struct GenericHandler.DepositRecord\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"{initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures}, and {initialExecuteFunctionSignatures} must all have the same length. Also, values must be ordered in the way that that index x of any mentioned array must be intended for value x of any other array, e.g. {initialContractAddresses}[0] is the intended address for {initialDepositFunctionSignatures}[0].\",\"params\":{\"bridgeAddress\":\"Contract address of previously deployed Bridge.\",\"initialContractAddresses\":\"These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be called to perform deposit and execution calls.\",\"initialDepositFunctionSignatures\":\"These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {deposit}\",\"initialExecuteFunctionSignatures\":\"These are the function signatures {initialContractAddresses} will point to, and are the function that will be called when executing {executeProposal}\",\"initialResourceIDs\":\"Resource IDs used to identify a specific contract address. These are the Resource IDs this contract will initially support.\"}},\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"params\":{\"depositNonce\":\"This value is generated as an ID by the Bridge contract.\",\"depositer\":\"Address of account making the deposit in the Bridge contract.\",\"destinationChainID\":\"Chain ID deposit is expected to be bridged to.\"}},\"getDepositRecord(uint64,uint8)\":{\"params\":{\"depositNonce\":\"This ID will have been generated by the Bridge contract.\",\"destId\":\"ID of chain deposit will be bridged to.\"},\"returns\":{\"_0\":\"DepositRecord which consists of: - _destinationChainID ChainID deposited tokens are intended to end up on. - _resourceID ResourceID used when {deposit} was executed. - _depositer Address that initially called {deposit} in the Bridge contract. - _metaData Data to be passed to method executed in corresponding {resourceID} contract.\"}},\"setResource(bytes32,address,bytes4,bytes4)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"depositFunctionSig\":\"Function signature of method to be called in {contractAddress} when a deposit is made.\",\"executeFunctionSig\":\"Function signature of method to be called in {contractAddress} when a deposit is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}}},\"title\":\"Handles generic deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"notice\":\"A deposit is initiatied by making a deposit in the Bridge contract.{contractAddress} is required to be whitelistedIf {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments.\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"Proposal execution should be initiated when a proposal is finalized in the Bridge contract.{contractAddress} is required to be whitelistedIf {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments.\"},\"setResource(bytes32,address,bytes4,bytes4)\":{\"notice\":\"First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, {_contractAddressToDepositFunctionSignature} with {depositFunctionSig}, {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig}, and {_contractWhitelist} to true for {contractAddress}.\"}},\"notice\":\"This contract is intended to be used with the Bridge contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/chainbridge/handlers/GenericHandler.sol\":\"GenericHandler\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/chainbridge/handlers/GenericHandler.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../interfaces/IGenericHandler.sol\\\";\\n\\n/**\\n    @title Handles generic deposits and deposit executions.\\n    @author ChainSafe Systems.\\n    @notice This contract is intended to be used with the Bridge contract.\\n */\\ncontract GenericHandler is IGenericHandler {\\n    address public _bridgeAddress;\\n\\n    struct DepositRecord {\\n        uint8 _destinationChainID;\\n        address _depositer;\\n        bytes32 _resourceID;\\n        bytes _metaData;\\n    }\\n\\n    // depositNonce => Deposit Record\\n    mapping(uint8 => mapping(uint64 => DepositRecord)) public _depositRecords;\\n\\n    // resourceID => contract address\\n    mapping(bytes32 => address) public _resourceIDToContractAddress;\\n\\n    // contract address => resourceID\\n    mapping(address => bytes32) public _contractAddressToResourceID;\\n\\n    // contract address => deposit function signature\\n    mapping(address => bytes4) public _contractAddressToDepositFunctionSignature;\\n\\n    // contract address => execute proposal function signature\\n    mapping(address => bytes4) public _contractAddressToExecuteFunctionSignature;\\n\\n    // token contract address => is whitelisted\\n    mapping(address => bool) public _contractWhitelist;\\n\\n    modifier onlyBridge() {\\n        _onlyBridge();\\n        _;\\n    }\\n\\n    function _onlyBridge() private view {\\n        require(msg.sender == _bridgeAddress, \\\"sender must be bridge contract\\\");\\n    }\\n\\n    /**\\n        @param bridgeAddress Contract address of previously deployed Bridge.\\n        @param initialResourceIDs Resource IDs used to identify a specific contract address.\\n        These are the Resource IDs this contract will initially support.\\n        @param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\\n        called to perform deposit and execution calls.\\n        @param initialDepositFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\\n        and are the function that will be called when executing {deposit}\\n        @param initialExecuteFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\\n        and are the function that will be called when executing {executeProposal}\\n\\n        @dev {initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures},\\n        and {initialExecuteFunctionSignatures} must all have the same length. Also,\\n        values must be ordered in the way that that index x of any mentioned array\\n        must be intended for value x of any other array, e.g. {initialContractAddresses}[0]\\n        is the intended address for {initialDepositFunctionSignatures}[0].\\n     */\\n    constructor(\\n        address bridgeAddress,\\n        bytes32[] memory initialResourceIDs,\\n        address[] memory initialContractAddresses,\\n        bytes4[] memory initialDepositFunctionSignatures,\\n        bytes4[] memory initialExecuteFunctionSignatures\\n    ) {\\n        require(\\n            initialResourceIDs.length == initialContractAddresses.length,\\n            \\\"initialResourceIDs and initialContractAddresses len mismatch\\\"\\n        );\\n\\n        require(\\n            initialContractAddresses.length == initialDepositFunctionSignatures.length,\\n            \\\"provided contract addresses and function signatures len mismatch\\\"\\n        );\\n\\n        require(\\n            initialDepositFunctionSignatures.length == initialExecuteFunctionSignatures.length,\\n            \\\"provided deposit and execute function signatures len mismatch\\\"\\n        );\\n\\n        _bridgeAddress = bridgeAddress;\\n\\n        for (uint256 i = 0; i < initialResourceIDs.length; i++) {\\n            _setResource(\\n                initialResourceIDs[i],\\n                initialContractAddresses[i],\\n                initialDepositFunctionSignatures[i],\\n                initialExecuteFunctionSignatures[i]\\n            );\\n        }\\n    }\\n\\n    /**\\n        @param depositNonce This ID will have been generated by the Bridge contract.\\n        @param destId ID of chain deposit will be bridged to.\\n        @return DepositRecord which consists of:\\n        - _destinationChainID ChainID deposited tokens are intended to end up on.\\n        - _resourceID ResourceID used when {deposit} was executed.\\n        - _depositer Address that initially called {deposit} in the Bridge contract.\\n        - _metaData Data to be passed to method executed in corresponding {resourceID} contract.\\n    */\\n    function getDepositRecord(uint64 depositNonce, uint8 destId) external view returns (DepositRecord memory) {\\n        return _depositRecords[destId][depositNonce];\\n    }\\n\\n    /**\\n        @notice First verifies {_resourceIDToContractAddress}[{resourceID}] and\\n        {_contractAddressToResourceID}[{contractAddress}] are not already set,\\n        then sets {_resourceIDToContractAddress} with {contractAddress},\\n        {_contractAddressToResourceID} with {resourceID},\\n        {_contractAddressToDepositFunctionSignature} with {depositFunctionSig},\\n        {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig},\\n        and {_contractWhitelist} to true for {contractAddress}.\\n        @param resourceID ResourceID to be used when making deposits.\\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\\n        @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\\n        @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.\\n     */\\n    function setResource(\\n        bytes32 resourceID,\\n        address contractAddress,\\n        bytes4 depositFunctionSig,\\n        bytes4 executeFunctionSig\\n    ) external override onlyBridge {\\n        _setResource(resourceID, contractAddress, depositFunctionSig, executeFunctionSig);\\n    }\\n\\n    /**\\n        @notice A deposit is initiatied by making a deposit in the Bridge contract.\\n        @param destinationChainID Chain ID deposit is expected to be bridged to.\\n        @param depositNonce This value is generated as an ID by the Bridge contract.\\n        @param depositer Address of account making the deposit in the Bridge contract.\\n        @notice {contractAddress} is required to be whitelisted\\n        @notice If {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set,\\n        {metaData} is expected to consist of needed function arguments.\\n     */\\n    function deposit(\\n        bytes32 resourceID,\\n        uint8 destinationChainID,\\n        uint64 depositNonce,\\n        address depositer,\\n        bytes calldata\\n    ) external onlyBridge {\\n        bytes32 lenMetadata;\\n        bytes memory metadata;\\n\\n        assembly {\\n            // Load length of metadata from data + 64\\n            lenMetadata := calldataload(0xC4)\\n            // Load free memory pointer\\n            metadata := mload(0x40)\\n\\n            mstore(0x40, add(0x20, add(metadata, lenMetadata)))\\n\\n            // func sig (4) + destinationChainId (padded to 32) + depositNonce (32) + depositor (32) +\\n            // bytes length (32) + resourceId (32) + length (32) = 0xC4\\n\\n            calldatacopy(\\n                metadata, // copy to metadata\\n                0xC4, // copy from calldata after metadata length declaration @0xC4\\n                sub(calldatasize(), 0xC4) // copy size (calldatasize - (0xC4 + the space metaData takes up))\\n            )\\n        }\\n\\n        address contractAddress = _resourceIDToContractAddress[resourceID];\\n        require(_contractWhitelist[contractAddress], \\\"provided contractAddress is not whitelisted\\\");\\n\\n        bytes4 sig = _contractAddressToDepositFunctionSignature[contractAddress];\\n        if (sig != bytes4(0)) {\\n            bytes memory callData = abi.encodePacked(sig, metadata);\\n            (bool success, ) = contractAddress.call(callData);\\n            require(success, \\\"delegatecall to contractAddress failed\\\");\\n        }\\n\\n        _depositRecords[destinationChainID][depositNonce] = DepositRecord(\\n            destinationChainID,\\n            depositer,\\n            resourceID,\\n            metadata\\n        );\\n    }\\n\\n    /**\\n        @notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\\n        @notice {contractAddress} is required to be whitelisted\\n        @notice If {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set,\\n        {metaData} is expected to consist of needed function arguments.\\n     */\\n    function executeProposal(bytes32 resourceID, bytes calldata) external onlyBridge {\\n        bytes memory metaData;\\n        assembly {\\n            // metadata has variable length\\n            // load free memory pointer to store metadata\\n            metaData := mload(0x40)\\n            // first 32 bytes of variable length in storage refer to length\\n            let lenMeta := calldataload(0x64)\\n            mstore(0x40, add(0x60, add(metaData, lenMeta)))\\n\\n            // in the calldata, metadata is stored @0x64 after accounting for function signature, and 2 previous params\\n            calldatacopy(\\n                metaData, // copy to metaData\\n                0x64, // copy from calldata after data length declaration at 0x64\\n                sub(calldatasize(), 0x64) // copy size (calldatasize - 0x64)\\n            )\\n        }\\n\\n        address contractAddress = _resourceIDToContractAddress[resourceID];\\n        require(_contractWhitelist[contractAddress], \\\"provided contractAddress is not whitelisted\\\");\\n\\n        bytes4 sig = _contractAddressToExecuteFunctionSignature[contractAddress];\\n        if (sig != bytes4(0)) {\\n            bytes memory callData = abi.encodePacked(sig, metaData);\\n            (bool success, ) = contractAddress.call(callData);\\n            require(success, \\\"delegatecall to contractAddress failed\\\");\\n        }\\n    }\\n\\n    function _setResource(\\n        bytes32 resourceID,\\n        address contractAddress,\\n        bytes4 depositFunctionSig,\\n        bytes4 executeFunctionSig\\n    ) internal {\\n        _resourceIDToContractAddress[resourceID] = contractAddress;\\n        _contractAddressToResourceID[contractAddress] = resourceID;\\n        _contractAddressToDepositFunctionSignature[contractAddress] = depositFunctionSig;\\n        _contractAddressToExecuteFunctionSignature[contractAddress] = executeFunctionSig;\\n\\n        _contractWhitelist[contractAddress] = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcca2ff68380958304e7a54e5ddc69a548a7c7e0c220d7efdbd36bb45772eea7b\",\"license\":\"AGPL-3.0-only\"},\"contracts/external/chainbridge/interfaces/IGenericHandler.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n    @title Interface for handler that handles generic deposits and deposit executions.\\n    @dev Copied directly from here: https://github.com/ChainSafe/chainbridge-solidity/releases/tag/v1.0.0.\\n    @author ChainSafe Systems.\\n */\\ninterface IGenericHandler {\\n    /**\\n        @notice Correlates {resourceID} with {contractAddress}, {depositFunctionSig}, and {executeFunctionSig}.\\n        @param resourceID ResourceID to be used when making deposits.\\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\\n        @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\\n        @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.\\n     */\\n    function setResource(\\n        bytes32 resourceID,\\n        address contractAddress,\\n        bytes4 depositFunctionSig,\\n        bytes4 executeFunctionSig\\n    ) external;\\n}\\n\",\"keccak256\":\"0x1f3932a12cb48b423ffb3d1a79a5869293991599e7c4be7eb3294aeb9b632d43\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 7001,
                                "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                "label": "_bridgeAddress",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 7017,
                                "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                "label": "_depositRecords",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_mapping(t_uint8,t_mapping(t_uint64,t_struct(DepositRecord)7010_storage))"
                            },
                            {
                                "astId": 7021,
                                "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                "label": "_resourceIDToContractAddress",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_mapping(t_bytes32,t_address)"
                            },
                            {
                                "astId": 7025,
                                "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                "label": "_contractAddressToResourceID",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_mapping(t_address,t_bytes32)"
                            },
                            {
                                "astId": 7029,
                                "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                "label": "_contractAddressToDepositFunctionSignature",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_mapping(t_address,t_bytes4)"
                            },
                            {
                                "astId": 7033,
                                "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                "label": "_contractAddressToExecuteFunctionSignature",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_mapping(t_address,t_bytes4)"
                            },
                            {
                                "astId": 7037,
                                "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                "label": "_contractWhitelist",
                                "offset": 0,
                                "slot": "6",
                                "type": "t_mapping(t_address,t_bool)"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_bytes32": {
                                "encoding": "inplace",
                                "label": "bytes32",
                                "numberOfBytes": "32"
                            },
                            "t_bytes4": {
                                "encoding": "inplace",
                                "label": "bytes4",
                                "numberOfBytes": "4"
                            },
                            "t_bytes_storage": {
                                "encoding": "bytes",
                                "label": "bytes",
                                "numberOfBytes": "32"
                            },
                            "t_mapping(t_address,t_bool)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => bool)",
                                "numberOfBytes": "32",
                                "value": "t_bool"
                            },
                            "t_mapping(t_address,t_bytes32)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => bytes32)",
                                "numberOfBytes": "32",
                                "value": "t_bytes32"
                            },
                            "t_mapping(t_address,t_bytes4)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => bytes4)",
                                "numberOfBytes": "32",
                                "value": "t_bytes4"
                            },
                            "t_mapping(t_bytes32,t_address)": {
                                "encoding": "mapping",
                                "key": "t_bytes32",
                                "label": "mapping(bytes32 => address)",
                                "numberOfBytes": "32",
                                "value": "t_address"
                            },
                            "t_mapping(t_uint64,t_struct(DepositRecord)7010_storage)": {
                                "encoding": "mapping",
                                "key": "t_uint64",
                                "label": "mapping(uint64 => struct GenericHandler.DepositRecord)",
                                "numberOfBytes": "32",
                                "value": "t_struct(DepositRecord)7010_storage"
                            },
                            "t_mapping(t_uint8,t_mapping(t_uint64,t_struct(DepositRecord)7010_storage))": {
                                "encoding": "mapping",
                                "key": "t_uint8",
                                "label": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord))",
                                "numberOfBytes": "32",
                                "value": "t_mapping(t_uint64,t_struct(DepositRecord)7010_storage)"
                            },
                            "t_struct(DepositRecord)7010_storage": {
                                "encoding": "inplace",
                                "label": "struct GenericHandler.DepositRecord",
                                "members": [
                                    {
                                        "astId": 7003,
                                        "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                        "label": "_destinationChainID",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_uint8"
                                    },
                                    {
                                        "astId": 7005,
                                        "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                        "label": "_depositer",
                                        "offset": 1,
                                        "slot": "0",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 7007,
                                        "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                        "label": "_resourceID",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_bytes32"
                                    },
                                    {
                                        "astId": 7009,
                                        "contract": "contracts/external/chainbridge/handlers/GenericHandler.sol:GenericHandler",
                                        "label": "_metaData",
                                        "offset": 0,
                                        "slot": "2",
                                        "type": "t_bytes_storage"
                                    }
                                ],
                                "numberOfBytes": "96"
                            },
                            "t_uint64": {
                                "encoding": "inplace",
                                "label": "uint64",
                                "numberOfBytes": "8"
                            },
                            "t_uint8": {
                                "encoding": "inplace",
                                "label": "uint8",
                                "numberOfBytes": "1"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "deposit(bytes32,uint8,uint64,address,bytes)": {
                                "notice": "A deposit is initiatied by making a deposit in the Bridge contract.{contractAddress} is required to be whitelistedIf {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments."
                            },
                            "executeProposal(bytes32,bytes)": {
                                "notice": "Proposal execution should be initiated when a proposal is finalized in the Bridge contract.{contractAddress} is required to be whitelistedIf {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set, {metaData} is expected to consist of needed function arguments."
                            },
                            "setResource(bytes32,address,bytes4,bytes4)": {
                                "notice": "First verifies {_resourceIDToContractAddress}[{resourceID}] and {_contractAddressToResourceID}[{contractAddress}] are not already set, then sets {_resourceIDToContractAddress} with {contractAddress}, {_contractAddressToResourceID} with {resourceID}, {_contractAddressToDepositFunctionSignature} with {depositFunctionSig}, {_contractAddressToExecuteFunctionSignature} with {executeFunctionSig}, and {_contractWhitelist} to true for {contractAddress}."
                            }
                        },
                        "notice": "This contract is intended to be used with the Bridge contract.",
                        "version": 1
                    }
                }
            },
            "contracts/external/chainbridge/interfaces/IBridge.sol": {
                "IBridge": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "_chainID",
                            "outputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "destinationChainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "author": "ChainSafe Systems.",
                        "kind": "dev",
                        "methods": {
                            "_chainID()": {
                                "returns": {
                                    "_0": "uint8 The {_chainID} that is currently set for the Bridge contract."
                                }
                            }
                        },
                        "title": "Interface for Bridge contract.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "_chainID()": "beab7131",
                            "deposit(uint8,bytes32,bytes)": "05e2ca17"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"_chainID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"_chainID()\":{\"returns\":{\"_0\":\"uint8 The {_chainID} that is currently set for the Bridge contract.\"}}},\"title\":\"Interface for Bridge contract.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"_chainID()\":{\"notice\":\"Exposing getter for {_chainID} instead of forcing the use of call.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/chainbridge/interfaces/IBridge.sol\":\"IBridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/chainbridge/interfaces/IBridge.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n    @title Interface for Bridge contract.\\n    @author ChainSafe Systems.\\n */\\ninterface IBridge {\\n    /**\\n        @notice Exposing getter for {_chainID} instead of forcing the use of call.\\n        @return uint8 The {_chainID} that is currently set for the Bridge contract.\\n     */\\n    function _chainID() external returns (uint8);\\n\\n    function deposit(\\n        uint8 destinationChainID,\\n        bytes32 resourceID,\\n        bytes calldata data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x1ae929d9397f7ebab64c3bcc43440804d908a7cae9310296905c06c26beea033\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "_chainID()": {
                                "notice": "Exposing getter for {_chainID} instead of forcing the use of call."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/external/chainbridge/interfaces/IDepositExecute.sol": {
                "IDepositExecute": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint8",
                                    "name": "destinationChainID",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "depositNonce",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "address",
                                    "name": "depositer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "executeProposal",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "author": "ChainSafe Systems.",
                        "kind": "dev",
                        "methods": {
                            "deposit(bytes32,uint8,uint64,address,bytes)": {
                                "params": {
                                    "data": "Consists of additional data needed for a specific deposit.",
                                    "depositNonce": "This value is generated as an ID by the Bridge contract.",
                                    "depositer": "Address of account making the deposit in the Bridge contract.",
                                    "destinationChainID": "Chain ID deposit is expected to be bridged to."
                                }
                            },
                            "executeProposal(bytes32,bytes)": {
                                "params": {
                                    "data": "Consists of additional data needed for a specific deposit execution."
                                }
                            }
                        },
                        "title": "Interface for handler contracts that support deposits and deposit executions.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "deposit(bytes32,uint8,uint64,address,bytes)": "38995da9",
                            "executeProposal(bytes32,bytes)": "e248cff2"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"destinationChainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"depositer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"params\":{\"data\":\"Consists of additional data needed for a specific deposit.\",\"depositNonce\":\"This value is generated as an ID by the Bridge contract.\",\"depositer\":\"Address of account making the deposit in the Bridge contract.\",\"destinationChainID\":\"Chain ID deposit is expected to be bridged to.\"}},\"executeProposal(bytes32,bytes)\":{\"params\":{\"data\":\"Consists of additional data needed for a specific deposit execution.\"}}},\"title\":\"Interface for handler contracts that support deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(bytes32,uint8,uint64,address,bytes)\":{\"notice\":\"It is intended that deposit are made using the Bridge contract.\"},\"executeProposal(bytes32,bytes)\":{\"notice\":\"It is intended that proposals are executed by the Bridge contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/chainbridge/interfaces/IDepositExecute.sol\":\"IDepositExecute\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/chainbridge/interfaces/IDepositExecute.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n    @title Interface for handler contracts that support deposits and deposit executions.\\n    @author ChainSafe Systems.\\n */\\ninterface IDepositExecute {\\n    /**\\n        @notice It is intended that deposit are made using the Bridge contract.\\n        @param destinationChainID Chain ID deposit is expected to be bridged to.\\n        @param depositNonce This value is generated as an ID by the Bridge contract.\\n        @param depositer Address of account making the deposit in the Bridge contract.\\n        @param data Consists of additional data needed for a specific deposit.\\n     */\\n    function deposit(\\n        bytes32 resourceID,\\n        uint8 destinationChainID,\\n        uint64 depositNonce,\\n        address depositer,\\n        bytes calldata data\\n    ) external;\\n\\n    /**\\n        @notice It is intended that proposals are executed by the Bridge contract.\\n        @param data Consists of additional data needed for a specific deposit execution.\\n     */\\n    function executeProposal(bytes32 resourceID, bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x8196830d9d2bf625d58ae61faa1bb3fc2187f617f7d100ddd679ed4479e20786\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "deposit(bytes32,uint8,uint64,address,bytes)": {
                                "notice": "It is intended that deposit are made using the Bridge contract."
                            },
                            "executeProposal(bytes32,bytes)": {
                                "notice": "It is intended that proposals are executed by the Bridge contract."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/external/chainbridge/interfaces/IERCHandler.sol": {
                "IERCHandler": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "contractAddress",
                                    "type": "address"
                                }
                            ],
                            "name": "setBurnable",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "contractAddress",
                                    "type": "address"
                                }
                            ],
                            "name": "setResource",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "tokenAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amountOrTokenID",
                                    "type": "uint256"
                                }
                            ],
                            "name": "withdraw",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "author": "ChainSafe Systems.",
                        "kind": "dev",
                        "methods": {
                            "setBurnable(address)": {
                                "params": {
                                    "contractAddress": "Address of contract to be used when making or executing deposits."
                                }
                            },
                            "setResource(bytes32,address)": {
                                "params": {
                                    "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.",
                                    "resourceID": "ResourceID to be used when making deposits."
                                }
                            },
                            "withdraw(address,address,uint256)": {
                                "params": {
                                    "amountOrTokenID": "Either the amount of ERC20 tokens or the ERC721 token ID to release.",
                                    "recipient": "Address to release tokens to.",
                                    "tokenAddress": "Address of token contract to release."
                                }
                            }
                        },
                        "title": "Interface to be used with handlers that support ERC20s and ERC721s.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "setBurnable(address)": "07b7ed99",
                            "setResource(bytes32,address)": "b8fa3736",
                            "withdraw(address,address,uint256)": "d9caed12"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOrTokenID\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"setBurnable(address)\":{\"params\":{\"contractAddress\":\"Address of contract to be used when making or executing deposits.\"}},\"setResource(bytes32,address)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"withdraw(address,address,uint256)\":{\"params\":{\"amountOrTokenID\":\"Either the amount of ERC20 tokens or the ERC721 token ID to release.\",\"recipient\":\"Address to release tokens to.\",\"tokenAddress\":\"Address of token contract to release.\"}}},\"title\":\"Interface to be used with handlers that support ERC20s and ERC721s.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setBurnable(address)\":{\"notice\":\"Marks {contractAddress} as mintable/burnable.\"},\"setResource(bytes32,address)\":{\"notice\":\"Correlates {resourceID} with {contractAddress}.\"},\"withdraw(address,address,uint256)\":{\"notice\":\"Used to manually release funds from ERC safes.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/chainbridge/interfaces/IERCHandler.sol\":\"IERCHandler\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/chainbridge/interfaces/IERCHandler.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n    @title Interface to be used with handlers that support ERC20s and ERC721s.\\n    @author ChainSafe Systems.\\n */\\ninterface IERCHandler {\\n    /**\\n        @notice Correlates {resourceID} with {contractAddress}.\\n        @param resourceID ResourceID to be used when making deposits.\\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\\n     */\\n    function setResource(bytes32 resourceID, address contractAddress) external;\\n\\n    /**\\n        @notice Marks {contractAddress} as mintable/burnable.\\n        @param contractAddress Address of contract to be used when making or executing deposits.\\n     */\\n    function setBurnable(address contractAddress) external;\\n\\n    /**\\n        @notice Used to manually release funds from ERC safes.\\n        @param tokenAddress Address of token contract to release.\\n        @param recipient Address to release tokens to.\\n        @param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to release.\\n     */\\n    function withdraw(\\n        address tokenAddress,\\n        address recipient,\\n        uint256 amountOrTokenID\\n    ) external;\\n}\\n\",\"keccak256\":\"0x4cb963987737ffcf36cfb2c0f9e035854f42f3868f0c55f81c4d447be80b7f16\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "setBurnable(address)": {
                                "notice": "Marks {contractAddress} as mintable/burnable."
                            },
                            "setResource(bytes32,address)": {
                                "notice": "Correlates {resourceID} with {contractAddress}."
                            },
                            "withdraw(address,address,uint256)": {
                                "notice": "Used to manually release funds from ERC safes."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/external/chainbridge/interfaces/IGenericHandler.sol": {
                "IGenericHandler": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "resourceID",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "contractAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes4",
                                    "name": "depositFunctionSig",
                                    "type": "bytes4"
                                },
                                {
                                    "internalType": "bytes4",
                                    "name": "executeFunctionSig",
                                    "type": "bytes4"
                                }
                            ],
                            "name": "setResource",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "author": "ChainSafe Systems.",
                        "details": "Copied directly from here: https://github.com/ChainSafe/chainbridge-solidity/releases/tag/v1.0.0.",
                        "kind": "dev",
                        "methods": {
                            "setResource(bytes32,address,bytes4,bytes4)": {
                                "params": {
                                    "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.",
                                    "depositFunctionSig": "Function signature of method to be called in {contractAddress} when a deposit is made.",
                                    "executeFunctionSig": "Function signature of method to be called in {contractAddress} when a deposit is executed.",
                                    "resourceID": "ResourceID to be used when making deposits."
                                }
                            }
                        },
                        "title": "Interface for handler that handles generic deposits and deposit executions.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "setResource(bytes32,address,bytes4,bytes4)": "bba8185a"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"setResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"details\":\"Copied directly from here: https://github.com/ChainSafe/chainbridge-solidity/releases/tag/v1.0.0.\",\"kind\":\"dev\",\"methods\":{\"setResource(bytes32,address,bytes4,bytes4)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"depositFunctionSig\":\"Function signature of method to be called in {contractAddress} when a deposit is made.\",\"executeFunctionSig\":\"Function signature of method to be called in {contractAddress} when a deposit is executed.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}}},\"title\":\"Interface for handler that handles generic deposits and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setResource(bytes32,address,bytes4,bytes4)\":{\"notice\":\"Correlates {resourceID} with {contractAddress}, {depositFunctionSig}, and {executeFunctionSig}.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/chainbridge/interfaces/IGenericHandler.sol\":\"IGenericHandler\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/chainbridge/interfaces/IGenericHandler.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n    @title Interface for handler that handles generic deposits and deposit executions.\\n    @dev Copied directly from here: https://github.com/ChainSafe/chainbridge-solidity/releases/tag/v1.0.0.\\n    @author ChainSafe Systems.\\n */\\ninterface IGenericHandler {\\n    /**\\n        @notice Correlates {resourceID} with {contractAddress}, {depositFunctionSig}, and {executeFunctionSig}.\\n        @param resourceID ResourceID to be used when making deposits.\\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\\n        @param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\\n        @param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed.\\n     */\\n    function setResource(\\n        bytes32 resourceID,\\n        address contractAddress,\\n        bytes4 depositFunctionSig,\\n        bytes4 executeFunctionSig\\n    ) external;\\n}\\n\",\"keccak256\":\"0x1f3932a12cb48b423ffb3d1a79a5869293991599e7c4be7eb3294aeb9b632d43\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "setResource(bytes32,address,bytes4,bytes4)": {
                                "notice": "Correlates {resourceID} with {contractAddress}, {depositFunctionSig}, and {executeFunctionSig}."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/BridgeAdmin.sol": {
                "BridgeAdmin": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_finder",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "_optimisticOracleLiveness",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "_proposerBondPct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "_identifier",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address[]",
                                    "name": "bridgePools",
                                    "type": "address[]"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "BridgePoolsAdminTransferred",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "DepositsEnabled",
                            "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": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "SetCrossDomainAdmin",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2DepositContract",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2MessengerContract",
                                    "type": "address"
                                }
                            ],
                            "name": "SetDepositContracts",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newLpFeeRatePerSecond",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetLpFeeRate",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetMinimumBridgingDelay",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint32",
                                    "name": "liveness",
                                    "type": "uint32"
                                }
                            ],
                            "name": "SetOptimisticOracleLiveness",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint64",
                                    "name": "proposerBondPct",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetProposerBondPct",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "SetRelayIdentifier",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "WhitelistToken",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                }
                            ],
                            "name": "depositContracts",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "depositContract",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "messengerContract",
                                            "type": "address"
                                        }
                                    ],
                                    "internalType": "struct BridgeAdminInterface.DepositUtilityContracts",
                                    "name": "",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "finder",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "identifier",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "optimisticOracleLiveness",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "owner",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "proposerBondPct",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "renounceOwnership",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "admin",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l1CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2Gas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2GasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCrossDomainAdmin",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "depositContract",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "messengerContract",
                                    "type": "address"
                                }
                            ],
                            "name": "setDepositContract",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l1CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2Gas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2GasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setEnableDepositsAndRelays",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "_identifier",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "setIdentifier",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "newLpFeeRate",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setLpFeeRatePerSecond",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "minimumBridgingDelay",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l1CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2Gas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2GasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setMinimumBridgingDelay",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "liveness",
                                    "type": "uint32"
                                }
                            ],
                            "name": "setOptimisticOracleLiveness",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "_proposerBondPct",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setProposerBondPct",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address[]",
                                    "name": "bridgePools",
                                    "type": "address[]"
                                },
                                {
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "transferBridgePoolAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newOwner",
                                    "type": "address"
                                }
                            ],
                            "name": "transferOwnership",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l1CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2Gas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2GasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                }
                            ],
                            "name": "whitelistToken",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                }
                            ],
                            "name": "whitelistedTokens",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "This contract is responsible for making global variables accessible to BridgePool contracts, which house passive liquidity and enable relaying of L2 deposits.The owner of this contract can also call permissioned functions on registered L2 DepositBoxes.",
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "params": {
                                    "_finder": "DVM finder to find other UMA ecosystem contracts.",
                                    "_identifier": "Identifier used when querying the OO for a cross bridge transfer action.",
                                    "_optimisticOracleLiveness": "Timeout that all bridging actions from L2->L1 must wait for a OptimisticOracle response.",
                                    "_proposerBondPct": "Percentage of the bridged amount that a relayer must put up as a bond."
                                }
                            },
                            "owner()": {
                                "details": "Returns the address of the current owner."
                            },
                            "renounceOwnership()": {
                                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
                            },
                            "setCrossDomainAdmin(uint256,address,uint256,uint256,uint256,uint256)": {
                                "details": "Only callable by the current owner.msg.value must equal to l1CallValue.",
                                "params": {
                                    "admin": "New admin address to set on L2.",
                                    "chainId": "L2 network ID where Deposit contract is deployed.",
                                    "l1CallValue": "Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies depending on the L2 network that this contract sends a message to.",
                                    "l2Gas": "Gas limit to set for relayed message on L2.",
                                    "l2GasPrice": "Gas price bid to set for relayed message on L2.",
                                    "maxSubmissionCost": ": Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas."
                                }
                            },
                            "setDepositContract(uint256,address,address)": {
                                "details": "Only callable by the current owner.",
                                "params": {
                                    "chainId": "L2 network ID to set addresses for.",
                                    "depositContract": "Address of L2 deposit contract.",
                                    "messengerContract": "Address of L1 helper contract that relays messages to L2."
                                }
                            },
                            "setEnableDepositsAndRelays(uint256,address,bool,uint256,uint256,uint256,uint256)": {
                                "details": "Only callable by Owner of this contract. Will set the same setting in the L2 Deposit contract via the cross domain messenger.msg.value must equal to l1CallValue.",
                                "params": {
                                    "chainId": "L2 network ID where Deposit contract is deployed.",
                                    "depositsEnabled": "bool to set if the deposit box should accept/reject deposits.",
                                    "l1CallValue": "Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies depending on the L2 network that this contract sends a message to.",
                                    "l1Token": "address of L1 Token to enable/disable deposits and relays for.",
                                    "l2Gas": "Gas limit to set for relayed message on L2.",
                                    "l2GasPrice": "Gas price bid to set for relayed message on L2.",
                                    "maxSubmissionCost": ": Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas."
                                }
                            },
                            "setIdentifier(bytes32)": {
                                "details": "Can only be called by the current owner.",
                                "params": {
                                    "_identifier": "New identifier to set."
                                }
                            },
                            "setLpFeeRatePerSecond(address,uint64)": {
                                "details": "Only callable by the current owner.",
                                "params": {
                                    "bridgePool": "Bridge Pool to change LP fee rate for.",
                                    "newLpFeeRate": "The new rate to set for the `bridgePool`."
                                }
                            },
                            "setMinimumBridgingDelay(uint256,uint64,uint256,uint256,uint256,uint256)": {
                                "details": "Only callable by the current owner.msg.value must equal to l1CallValue.",
                                "params": {
                                    "chainId": "L2 network ID where Deposit contract is deployed.",
                                    "l1CallValue": "Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies depending on the L2 network that this contract sends a message to.",
                                    "l2Gas": "Gas limit to set for relayed message on L2.",
                                    "l2GasPrice": "Gas price bid to set for relayed message on L2.",
                                    "maxSubmissionCost": ": Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.",
                                    "minimumBridgingDelay": "the new minimum delay."
                                }
                            },
                            "setOptimisticOracleLiveness(uint32)": {
                                "details": "Can only be called by the current owner.",
                                "params": {
                                    "liveness": "New OptimisticOracle liveness period to set for relay price requests."
                                }
                            },
                            "setProposerBondPct(uint64)": {
                                "details": "Can only be called by the current owner.",
                                "params": {
                                    "_proposerBondPct": "New OptimisticOracle proposer bond % to set for relay price requests. 1e18 = 100%."
                                }
                            },
                            "transferBridgePoolAdmin(address[],address)": {
                                "details": "Only callable by the current owner.",
                                "params": {
                                    "bridgePools": "array of bridge pools to transfer ownership.",
                                    "newAdmin": "new admin contract to set ownership to."
                                }
                            },
                            "transferOwnership(address)": {
                                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
                            },
                            "whitelistToken(uint256,address,address,address,uint256,uint256,uint256,uint256)": {
                                "details": "msg.value must equal to l1CallValue.This method is also used to to update the address of the bridgePool within a BridgeDepositBox through the re-whitelisting of a previously whitelisted token to update the address of the bridge pool in the deposit box.Only callable by Owner of this contract. Also initiates a cross-chain call to the L2 Deposit contract to whitelist the token mapping.",
                                "params": {
                                    "bridgePool": "Address of BridgePool which manages liquidity to fulfill L2-->L1 relays.",
                                    "chainId": "L2 network ID where Deposit contract is deployed.",
                                    "l1CallValue": "Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies depending on the L2 network that this contract sends a message to.",
                                    "l1Token": "Address of L1 token that can be used to relay L2 token deposits.",
                                    "l2Gas": "Gas limit to set for relayed message on L2.",
                                    "l2GasPrice": "Gas price bid to set for relayed message on L2.",
                                    "l2Token": "Address of L2 token whose deposits are fulfilled by `l1Token`.",
                                    "maxSubmissionCost": ": Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas."
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_5389": {
                                    "entryPoint": null,
                                    "id": 5389,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_655": {
                                    "entryPoint": null,
                                    "id": 655,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_7553": {
                                    "entryPoint": null,
                                    "id": 7553,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@_getCollateralWhitelist_8090": {
                                    "entryPoint": 296,
                                    "id": 8090,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_getIdentifierWhitelist_8073": {
                                    "entryPoint": 1059,
                                    "id": 8073,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_setIdentifier_8113": {
                                    "entryPoint": 790,
                                    "id": 8113,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setOptimisticOracleLiveness_8141": {
                                    "entryPoint": 462,
                                    "id": 8141,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setProposerBondPct_8155": {
                                    "entryPoint": 698,
                                    "id": 8155,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_address_fromMemory": {
                                    "entryPoint": 1141,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 1276,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_uint32t_uint64t_bytes32_fromMemory": {
                                    "entryPoint": 1170,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 4
                                },
                                "abi_decode_tuple_t_bool_fromMemory": {
                                    "entryPoint": 1313,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_1741ae564dcd62ca43ff80a87708d024ccb18df0851bd4c1d4c5d809256a7f46__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_2d7198fed6d004b02a2f82447437df9fbd1d3213d4970244d04813078e7dc5a0__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_56769370f57b03c035ba3a336601bde3fa507551f184c54555b7d50430f62caf__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_5f70782f56e75aa7a030567ff447a0f4f1c2357a245311a14b417ebd8e079d94__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:2868:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "74:117:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "84:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "99:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "93:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "93:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "84:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "169:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "178:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "181:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "171:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "171:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "171:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "128:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "139:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "154:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "159:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "150:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "150:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "163:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "146:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "146:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "135:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "135:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "125:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "125:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "118:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "118:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "115:70:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "53:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "64:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "326:470:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "373:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "382:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "385:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "375:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "375:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "375:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "347:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "356:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "343:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "343:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "368:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "339:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "339:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "336:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "398:50:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "438:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "408:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "408:40:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "398:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "457:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "480:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "491:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "476:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "476:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "470:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "470:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "461:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "549:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "558:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "561:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "551:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "551:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "551:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "517:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "528:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "535:10:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "524:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "524:22:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "514:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "514:33:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "507:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "507:41:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "504:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "574:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "584:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "574:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "598:40:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "623:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "634:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "619:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "619:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "613:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "613:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "602:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "704:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "713:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "716:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "706:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "706:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "706:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "660:7:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "673:7:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "690:2:66",
                                                                                                        "type": "",
                                                                                                        "value": "64"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "694:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "686:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "686:10:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "698:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "682:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "682:18:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "669:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "669:32:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "657:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "657:45:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "650:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "650:53:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "647:73:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "729:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "739:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "729:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "755:35:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "775:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "786:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "771:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "771:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "765:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "765:25:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "755:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint32t_uint64t_bytes32_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "268:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "279:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "291:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "299:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "307:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "315:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "196:600:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "975:164:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "992:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1003:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "985:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "985:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "985:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1026:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1037:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1022:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1022:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1042:2:66",
                                                                        "type": "",
                                                                        "value": "14"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1015:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1015:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1015:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1065:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1076:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1061:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1061:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "496e76616c69642066696e646572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1081:16:66",
                                                                        "type": "",
                                                                        "value": "Invalid finder"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1054:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1054:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1054:44:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1107:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1119:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1130:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1115:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1115:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1107:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_1741ae564dcd62ca43ff80a87708d024ccb18df0851bd4c1d4c5d809256a7f46__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "952:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "966:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "801:338:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1245:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1255:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1267:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1278:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1263:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1263:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1255:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1297:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1308:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1290:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1290:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1290:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1214:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1225:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1236:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1144:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1407:127:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1453:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1462:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1465:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1455:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1455:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1455:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1428:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1437:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1424:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1424:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1449:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1420:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1420:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1417:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1478:50:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1518:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1488:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1488:40:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1478:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1373:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1384:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1396:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1326:208:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1713:168:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1730:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1741:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1723:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1723:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1723:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1764:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1775:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1760:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1760:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1780:2:66",
                                                                        "type": "",
                                                                        "value": "18"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1753:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1753:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1753:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1803:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1814:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1799:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1799:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4c6976656e65737320746f6f206c61726765",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1819:20:66",
                                                                        "type": "",
                                                                        "value": "Liveness too large"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1792:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1792:48:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1792:48:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1849:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1861:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1872:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1857:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1857:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1849:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_5f70782f56e75aa7a030567ff447a0f4f1c2357a245311a14b417ebd8e079d94__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1690:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1704:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1539:342:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2060:170:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2077:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2088:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2070:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2070:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2070:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2111:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2122:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2107:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2107:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2127:2:66",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2100:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2100:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2100:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2150:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2161:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2146:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2146:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4c6976656e6573732063616e6e6f742062652030",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2166:22:66",
                                                                        "type": "",
                                                                        "value": "Liveness cannot be 0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2139:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2139:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2139:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2198:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2210:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2221:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2206:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2206:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2198:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_2d7198fed6d004b02a2f82447437df9fbd1d3213d4970244d04813078e7dc5a0__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2037:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2051:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1886:344:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2313:199:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2359:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2368:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2371:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2361:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2361:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2361:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2334:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2343:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2330:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2330:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2355:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2326:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2326:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2323:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2384:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2403:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2397:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2397:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2388:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2466:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2475:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2478:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2468:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2468:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2468:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2435:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2456:5:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2449:6:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2449:13:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2442:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2442:21:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2432:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2432:32:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2425:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2425:40:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2422:60:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2491:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2501:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2491:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2279:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2290:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2302:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2235:277:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2691:175:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2708:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2719:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2701:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2701:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2701:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2742:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2753:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2738:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2738:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2758:2:66",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2731:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2731:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2731:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2781:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2792:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2777:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2777:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4964656e746966696572206e6f742072656769737465726564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2797:27:66",
                                                                        "type": "",
                                                                        "value": "Identifier not registered"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2770:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2770:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2770:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2834:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2846:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2857:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2842:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2842:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2834:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_56769370f57b03c035ba3a336601bde3fa507551f184c54555b7d50430f62caf__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2668:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2682:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2517:349:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint32t_uint64t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        let value := mload(add(headStart, 32))\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value1 := value\n        let value_1 := mload(add(headStart, 64))\n        if iszero(eq(value_1, and(value_1, sub(shl(64, 1), 1)))) { revert(0, 0) }\n        value2 := value_1\n        value3 := mload(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_stringliteral_1741ae564dcd62ca43ff80a87708d024ccb18df0851bd4c1d4c5d809256a7f46__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid finder\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_5f70782f56e75aa7a030567ff447a0f4f1c2357a245311a14b417ebd8e079d94__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Liveness too large\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2d7198fed6d004b02a2f82447437df9fbd1d3213d4970244d04813078e7dc5a0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Liveness cannot be 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_56769370f57b03c035ba3a336601bde3fa507551f184c54555b7d50430f62caf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Identifier not registered\")\n        tail := add(headStart, 96)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60806040523480156200001157600080fd5b5060405162002f6138038062002f61833981016040819052620000349162000492565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b1916600160a01b178155600180546001600160a01b0387166001600160a01b0319909116179055620000af62000128565b6001600160a01b03161415620000fd5760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b2103334b73232b960911b60448201526064015b60405180910390fd5b6200010883620001ce565b6200011382620002ba565b6200011e8162000316565b5050505062000545565b6001546040516302abf57960e61b81527f436f6c6c61746572616c57686974656c6973740000000000000000000000000060048201526000916001600160a01b03169063aafd5e40906024015b60206040518083038186803b1580156200018e57600080fd5b505afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c99190620004fc565b905090565b63bb7448008163ffffffff16106200021e5760405162461bcd60e51b81526020600482015260126024820152714c6976656e65737320746f6f206c6172676560701b6044820152606401620000f4565b60008163ffffffff1611620002765760405162461bcd60e51b815260206004820152601460248201527f4c6976656e6573732063616e6e6f7420626520300000000000000000000000006044820152606401620000f4565b6004805463ffffffff191663ffffffff83169081179091556040517f18c2dabb108f62fad5fa139a7313bd221f388dc0b09727624af21ddfcf76cbaa90600090a250565b60048054600160201b600160601b0319166401000000006001600160401b0384811682029290921792839055604051920416907facfe7e537e15ef4781402154351bc868c74852d83f3cc95d570a290b2c5a4f9990600090a250565b6200032062000423565b6001600160a01b03166390978d1b826040518263ffffffff1660e01b81526004016200034e91815260200190565b60206040518083038186803b1580156200036757600080fd5b505afa1580156200037c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a2919062000521565b620003f05760405162461bcd60e51b815260206004820152601960248201527f4964656e746966696572206e6f742072656769737465726564000000000000006044820152606401620000f4565b600581905560405181907f4b924bf6f3485cd9c93a9734e5916e32005eb2f8af99b1f14b2cc1d2ee04dac990600090a250565b6001546040516302abf57960e61b81527f4964656e74696669657257686974656c6973740000000000000000000000000060048201526000916001600160a01b03169063aafd5e409060240162000175565b80516001600160a01b03811681146200048d57600080fd5b919050565b60008060008060808587031215620004a957600080fd5b620004b48562000475565b9350602085015163ffffffff81168114620004ce57600080fd5b60408601519093506001600160401b0381168114620004ec57600080fd5b6060959095015193969295505050565b6000602082840312156200050f57600080fd5b6200051a8262000475565b9392505050565b6000602082840312156200053457600080fd5b815180151581146200051a57600080fd5b612a0c80620005556000396000f3fe6080604052600436106101435760003560e01c80638da5cb5b116100c0578063b9a3c84c11610074578063bfdb388211610059578063bfdb388214610463578063c73a32c314610476578063f2fde38b146104b857600080fd5b8063b9a3c84c146103a7578063bf06c19a146103d457600080fd5b806394bdf812116100a557806394bdf81214610347578063aae3863e14610367578063b09158501461038757600080fd5b80638da5cb5b146102e8578063934441271461033457600080fd5b806363e463f4116101175780637998a1c4116100fc5780637998a1c4146102095780637d726c751461022d5780637eb4fa731461024057600080fd5b806363e463f4146101d4578063715018a6146101f457600080fd5b8062c99206146101485780630a69da281461016a578063173684c51461017d57806350a7c20e146101b4575b600080fd5b34801561015457600080fd5b5061016861016336600461241e565b6104d8565b005b610168610178366004612469565b6105e3565b34801561018957600080fd5b5060045461019a9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b3480156101c057600080fd5b506101686101cf3660046124e8565b6108aa565b3480156101e057600080fd5b506101686101ef3660046125dd565b610abb565b34801561020057600080fd5b50610168610b7a565b34801561021557600080fd5b5061021f60055481565b6040519081526020016101ab565b61016861023b366004612622565b610c6a565b34801561024c57600080fd5b506102b461025b36600461241e565b6040805180820190915260008082526020820152506000908152600260209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff9081168452600190910154169082015290565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101ab565b3480156102f457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b61016861034236600461264b565b610eaf565b34801561035357600080fd5b506101686103623660046126c2565b611502565b34801561037357600080fd5b506101686103823660046126f7565b611693565b34801561039357600080fd5b506101686103a2366004612739565b61182b565b3480156103b357600080fd5b5060015461030f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103e057600080fd5b506104366103ef366004612754565b73ffffffffffffffffffffffffffffffffffffffff918216600081815260036020818152604080842095845285825283205493909252905260019091015490821692911690565b6040805173ffffffffffffffffffffffffffffffffffffffff9384168152929091166020830152016101ab565b61016861047136600461278e565b6118ea565b34801561048257600080fd5b5060045461049f90640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ab565b3480156104c457600080fd5b506101686104d33660046127f3565b611bfe565b60005473ffffffffffffffffffffffffffffffffffffffff16331461055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610566611daf565b610593600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c81611e35565b6105e0600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b60008681526002602052604090208054600190910154879161069f9173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b6106a7611daf565b6106d4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff8616610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610555565b6000878152600260205260409081902060018101549054915173ffffffffffffffffffffffffffffffffffffffff898116602483015261081a939281169289929116903390899089908990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde7eba7800000000000000000000000000000000000000000000000000000000179052612026565b60405173ffffffffffffffffffffffffffffffffffffffff87169088907fedd8c3ef4433a93a0049a93cb3e6003b2909b8c337b716e016f73d9264d0575f90600090a36108a1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b610933611daf565b610960600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60005b82518160ff161015610a2457828160ff168151811061098457610984612810565b60209081029190910101516040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015290911690638f28397090602401600060405180830381600087803b1580156109f957600080fd5b505af1158015610a0d573d6000803e3d6000fd5b505050508080610a1c9061283f565b915050610963565b508073ffffffffffffffffffffffffffffffffffffffff167fb602b0c040b1aa5c1117626e1f378f960b43fa9dddccaffdc88591092acc9cf483604051610a6b9190612886565b60405180910390a2610ab7600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b610b44611daf565b610b71600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c8161212b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b600086815260026020526040902080546001909101548791610d269173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b610d2e611daf565b610d5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6000878152600260205260409081902060018101549054915167ffffffffffffffff89166024820152610e2c9273ffffffffffffffffffffffffffffffffffffffff9283169289929116903390899089908990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ec35b3100000000000000000000000000000000000000000000000000000000179052612026565b60405167ffffffffffffffff8716815287907f9c10783ffe02b4c29472a26771187a113643b69290dab9b0c7f00ad0aff416f19060200160405180910390a26108a1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b600088815260026020526040902080546001909101548991610f6b9173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b610f73611daf565b610fa0600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff8616611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f427269646765506f6f6c2063616e6e6f74206265207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610555565b73ffffffffffffffffffffffffffffffffffffffff87166110c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c3220746f6b656e2063616e6e6f74206265207a65726f2061646472657373006044820152606401610555565b6110c861226d565b6040517f3a3ab67200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529190911690633a3ab6729060240160206040518083038186803b15801561113157600080fd5b505afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116991906128e0565b6111cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c31546f6b656e20746f6b656e206e6f742077686974656c69737465640000006044820152606401610555565b8773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b815260040160206040518083038186803b15801561122c57600080fd5b505afa158015611240573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126491906128fd565b73ffffffffffffffffffffffffffffffffffffffff1614611307576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f42726964676520706f6f6c2068617320646966666572656e74204c3120746f6b60448201527f656e0000000000000000000000000000000000000000000000000000000000006064820152608401610555565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526003602090815260408083208e845280835281842080548e88167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600192830180548f8a1692168217905560029094529382902090810154905491516024810195909552604485019390935260648401919091526114359391821692899291909116903390899089908990608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4dedca2800000000000000000000000000000000000000000000000000000000179052612026565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f4d34491ed5d9114c52a094ed7004a670e7bcd518f930c86d9a72d9811dc986838c6040516114ab91815260200190565b60405180910390a46114f7600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b61158b611daf565b6115b8600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f27f224ca00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8216600482015273ffffffffffffffffffffffffffffffffffffffff8316906327f224ca90602401600060405180830381600087803b15801561162957600080fd5b505af115801561163d573d6000803e3d6000fd5b505060405167ffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff851692507f2379a780c43dc12faf76871501e88b35e33155b1918b7e8787e8173938a68e6c9150602001610a6b565b60005473ffffffffffffffffffffffffffffffffffffffff163314611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b61171c611daf565b611749600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6117538282611f60565b600083815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811784556001909301805491871691909216811790915591519192909186917fa701872361de9bbd7f10a5f5c82ccfe3bf4a8d585403ab897afa655244534f3691a4611826600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6118b4611daf565b6118e1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c81612335565b60005473ffffffffffffffffffffffffffffffffffffffff16331461196b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6000878152600260205260409020805460019091015488916119a69173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b6119ae611daf565b6119db600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040908190206001015490517f08ed5b1400000000000000000000000000000000000000000000000000000000815288151560048201529116906308ed5b1490602401600060405180830381600087803b158015611a5a57600080fd5b505af1158015611a6e573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff80891660009081526003602090815260408083208d8452825280832054600290925291829020600181015490549251918416602483018190528b151560448401529450611b5c93908116928a9291169033908a908a908a90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f563c7f6000000000000000000000000000000000000000000000000000000000179052612026565b8073ffffffffffffffffffffffffffffffffffffffff16897f4cd6451d8996d5cf60acf25b65a82bddaaf576a2d664855bbe7bedf3e82a58b189604051611ba7911515815260200190565b60405180910390a350611bf4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b73ffffffffffffffffffffffffffffffffffffffff8116611d22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610555565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005474010000000000000000000000000000000000000000900460ff16611e33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610555565b565b611e3d6123a7565b73ffffffffffffffffffffffffffffffffffffffff166390978d1b826040518263ffffffff1660e01b8152600401611e7791815260200190565b60206040518083038186803b158015611e8f57600080fd5b505afa158015611ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec791906128e0565b611f2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4964656e746966696572206e6f742072656769737465726564000000000000006044820152606401610555565b600581905560405181907f4b924bf6f3485cd9c93a9734e5916e32005eb2f8af99b1f14b2cc1d2ee04dac990600090a250565b73ffffffffffffffffffffffffffffffffffffffff821615801590611f9a575073ffffffffffffffffffffffffffffffffffffffff811615155b610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f496e76616c6964206465706f736974206f72206d657373656e67657220636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610555565b34871461208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f57726f6e67206e756d626572206f66204554482073656e7400000000000000006044820152606401610555565b6040517f9e353c7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891690639e353c709089906120ef908a908a9084908b908b908b908b9060040161291a565b6000604051808303818588803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b50505050505050505050505050565b63bb7448008163ffffffff161061219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c6976656e65737320746f6f206c6172676500000000000000000000000000006044820152606401610555565b60008163ffffffff161161220e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c6976656e6573732063616e6e6f7420626520300000000000000000000000006044820152606401610555565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83169081179091556040517f18c2dabb108f62fad5fa139a7313bd221f388dc0b09727624af21ddfcf76cbaa90600090a250565b6001546040517faafd5e400000000000000000000000000000000000000000000000000000000081527f436f6c6c61746572616c57686974656c69737400000000000000000000000000600482015260009173ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024015b60206040518083038186803b1580156122f857600080fd5b505afa15801561230c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233091906128fd565b905090565b600480547fffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff1664010000000067ffffffffffffffff84811682029290921792839055604051920416907facfe7e537e15ef4781402154351bc868c74852d83f3cc95d570a290b2c5a4f9990600090a250565b6001546040517faafd5e400000000000000000000000000000000000000000000000000000000081527f4964656e74696669657257686974656c69737400000000000000000000000000600482015260009173ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024016122e0565b60006020828403121561243057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e057600080fd5b803561246481612437565b919050565b60008060008060008060c0878903121561248257600080fd5b86359550602087013561249481612437565b95989597505050506040840135936060810135936080820135935060a0909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156124fb57600080fd5b823567ffffffffffffffff8082111561251357600080fd5b818501915085601f83011261252757600080fd5b813560208282111561253b5761253b6124b9565b8160051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110868211171561257e5761257e6124b9565b60405292835281830193508481018201928984111561259c57600080fd5b948201945b838610156125c1576125b286612459565b855294820194938201936125a1565b96506125d09050878201612459565b9450505050509250929050565b6000602082840312156125ef57600080fd5b813563ffffffff8116811461260357600080fd5b9392505050565b803567ffffffffffffffff8116811461246457600080fd5b60008060008060008060c0878903121561263b57600080fd5b863595506124946020880161260a565b600080600080600080600080610100898b03121561266857600080fd5b88359750602089013561267a81612437565b9650604089013561268a81612437565b9550606089013561269a81612437565b979a969950949760808101359660a0820135965060c0820135955060e0909101359350915050565b600080604083850312156126d557600080fd5b82356126e081612437565b91506126ee6020840161260a565b90509250929050565b60008060006060848603121561270c57600080fd5b83359250602084013561271e81612437565b9150604084013561272e81612437565b809150509250925092565b60006020828403121561274b57600080fd5b6126038261260a565b6000806040838503121561276757600080fd5b823561277281612437565b946020939093013593505050565b80151581146105e057600080fd5b600080600080600080600060e0888a0312156127a957600080fd5b8735965060208801356127bb81612437565b955060408801356127cb81612780565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60006020828403121561280557600080fd5b813561260381612437565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561287d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60010192915050565b6020808252825182820181905260009190848201906040850190845b818110156128d457835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016128a2565b50909695505050505050565b6000602082840312156128f257600080fd5b815161260381612780565b60006020828403121561290f57600080fd5b815161260381612437565b600073ffffffffffffffffffffffffffffffffffffffff808a1683526020818a16818501528860408501528760608501528660808501528560a085015260e060c0850152845191508160e085015260005b82811015612988578581018201518582016101000152810161296b565b8281111561299b57600061010084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101610100019897505050505050505056fea2646970667358221220bf43b3df2c076bc2dfd2e8bc07869817d88fc623cb74d6ef0e1e69abd273aecf64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2F61 CODESIZE SUB DUP1 PUSH3 0x2F61 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x492 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR DUP2 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH3 0xAF PUSH3 0x128 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0xFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x24B73B30B634B2103334B73232B9 PUSH1 0x91 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x108 DUP4 PUSH3 0x1CE JUMP JUMPDEST PUSH3 0x113 DUP3 PUSH3 0x2BA JUMP JUMPDEST PUSH3 0x11E DUP2 PUSH3 0x316 JUMP JUMPDEST POP POP POP POP PUSH3 0x545 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH32 0x436F6C6C61746572616C57686974656C69737400000000000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x18E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1C9 SWAP2 SWAP1 PUSH3 0x4FC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH4 0xBB744800 DUP2 PUSH4 0xFFFFFFFF AND LT PUSH3 0x21E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x4C6976656E65737320746F6F206C61726765 PUSH1 0x70 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0xF4 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT PUSH3 0x276 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6976656E6573732063616E6E6F742062652030000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0xF4 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x18C2DABB108F62FAD5FA139A7313BD221F388DC0B09727624AF21DDFCF76CBAA SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x20 SHL PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH5 0x100000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND SWAP1 PUSH32 0xACFE7E537E15EF4781402154351BC868C74852D83F3CC95D570A290B2C5A4F99 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH3 0x320 PUSH3 0x423 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x90978D1B DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x34E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x37C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3A2 SWAP2 SWAP1 PUSH3 0x521 JUMP JUMPDEST PUSH3 0x3F0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4964656E746966696572206E6F74207265676973746572656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0xF4 JUMP JUMPDEST PUSH1 0x5 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x4B924BF6F3485CD9C93A9734E5916E32005EB2F8AF99B1F14B2CC1D2EE04DAC9 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH32 0x4964656E74696669657257686974656C69737400000000000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH3 0x175 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x4A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x4B4 DUP6 PUSH3 0x475 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x4CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 SWAP6 SWAP1 SWAP6 ADD MLOAD SWAP4 SWAP7 SWAP3 SWAP6 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x51A DUP3 PUSH3 0x475 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A0C DUP1 PUSH3 0x555 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x143 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xB9A3C84C GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xBFDB3882 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xBFDB3882 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xC73A32C3 EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB9A3C84C EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0xBF06C19A EQ PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x94BDF812 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x94BDF812 EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0xAAE3863E EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0xB0915850 EQ PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0x93444127 EQ PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x63E463F4 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x7998A1C4 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x7998A1C4 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0x7D726C75 EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0x7EB4FA73 EQ PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x63E463F4 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xC99206 EQ PUSH2 0x148 JUMPI DUP1 PUSH4 0xA69DA28 EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0x173684C5 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0x50A7C20E EQ PUSH2 0x1B4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x154 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x163 CALLDATASIZE PUSH1 0x4 PUSH2 0x241E JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0x2469 JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x19A SWAP1 PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x24E8 JUMP JUMPDEST PUSH2 0x8AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x1EF CALLDATASIZE PUSH1 0x4 PUSH2 0x25DD JUMP JUMPDEST PUSH2 0xABB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0xB7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AB JUMP JUMPDEST PUSH2 0x168 PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0x2622 JUMP JUMPDEST PUSH2 0xC6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B4 PUSH2 0x25B CALLDATASIZE PUSH1 0x4 PUSH2 0x241E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP5 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD AND SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD MLOAD AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0x1AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AB JUMP JUMPDEST PUSH2 0x168 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x264B JUMP JUMPDEST PUSH2 0xEAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x362 CALLDATASIZE PUSH1 0x4 PUSH2 0x26C2 JUMP JUMPDEST PUSH2 0x1502 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x26F7 JUMP JUMPDEST PUSH2 0x1693 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2739 JUMP JUMPDEST PUSH2 0x182B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0x30F SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x3EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2754 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP6 DUP5 MSTORE DUP6 DUP3 MSTORE DUP4 KECCAK256 SLOAD SWAP4 SWAP1 SWAP3 MSTORE SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD SWAP1 DUP3 AND SWAP3 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1AB JUMP JUMPDEST PUSH2 0x168 PUSH2 0x471 CALLDATASIZE PUSH1 0x4 PUSH2 0x278E JUMP JUMPDEST PUSH2 0x18EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x49F SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x4D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x27F3 JUMP JUMPDEST PUSH2 0x1BFE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x55E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x566 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x593 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x59C DUP2 PUSH2 0x1E35 JUMP JUMPDEST PUSH2 0x5E0 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x664 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP8 SWAP2 PUSH2 0x69F SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0x6A7 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x6D4 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH2 0x751 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646D696E2063616E6E6F74206265207A65726F206164647265737300000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SLOAD SWAP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH2 0x81A SWAP4 SWAP3 DUP2 AND SWAP3 DUP10 SWAP3 SWAP2 AND SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDE7EBA7800000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2026 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP9 SWAP1 PUSH32 0xEDD8C3EF4433A93A0049A93CB3E6003B2909B8C337B716E016F73D9264D0575F SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH2 0x8A1 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x92B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x933 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x960 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0xA24 JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x984 JUMPI PUSH2 0x984 PUSH2 0x2810 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x8F28397000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x8F283970 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 DUP1 PUSH2 0xA1C SWAP1 PUSH2 0x283F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x963 JUMP JUMPDEST POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB602B0C040B1AA5C1117626E1F378F960B43FA9DDDCCAFFDC88591092ACC9CF4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xA6B SWAP2 SWAP1 PUSH2 0x2886 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0xAB7 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0xB44 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0xB71 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x59C DUP2 PUSH2 0x212B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xBFB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xCEB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP8 SWAP2 PUSH2 0xD26 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0xD2E PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0xD5B PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SLOAD SWAP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0xE2C SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 DUP10 SWAP3 SWAP2 AND SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2EC35B3100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2026 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP8 AND DUP2 MSTORE DUP8 SWAP1 PUSH32 0x9C10783FFE02B4C29472A26771187A113643B69290DAB9B0C7F00AD0AFF416F1 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x8A1 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF30 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP10 SWAP2 PUSH2 0xF6B SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0xF73 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0xFA0 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH2 0x1043 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x427269646765506F6F6C2063616E6E6F74206265207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x555 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x10C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C3220746F6B656E2063616E6E6F74206265207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x10C8 PUSH2 0x226D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3A3AB67200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A3AB672 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1145 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1169 SWAP2 SWAP1 PUSH2 0x28E0 JUMP JUMPDEST PUSH2 0x11CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C31546F6B656E20746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC01E1BD6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x122C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1240 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1264 SWAP2 SWAP1 PUSH2 0x28FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1307 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42726964676520706F6F6C2068617320646966666572656E74204C3120746F6B PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x555 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP15 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP15 DUP9 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP3 DUP4 ADD DUP1 SLOAD DUP16 DUP11 AND SWAP3 AND DUP3 OR SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE SWAP4 DUP3 SWAP1 KECCAK256 SWAP1 DUP2 ADD SLOAD SWAP1 SLOAD SWAP2 MLOAD PUSH1 0x24 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x44 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x1435 SWAP4 SWAP2 DUP3 AND SWAP3 DUP10 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x84 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4DEDCA2800000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2026 JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4D34491ED5D9114C52A094ED7004A670E7BCD518F930C86D9A72D9811DC98683 DUP13 PUSH1 0x40 MLOAD PUSH2 0x14AB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x14F7 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1583 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x158B PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x15B8 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x27F224CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x27F224CA SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1629 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x163D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH32 0x2379A780C43DC12FAF76871501E88B35E33155B1918B7E8787E8173938A68E6C SWAP2 POP PUSH1 0x20 ADD PUSH2 0xA6B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1714 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x171C PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x1749 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1753 DUP3 DUP3 PUSH2 0x1F60 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x1 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP2 DUP8 AND SWAP2 SWAP1 SWAP3 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH32 0xA701872361DE9BBD7F10A5F5C82CCFE3BF4A8D585403AB897AFA655244534F36 SWAP2 LOG4 PUSH2 0x1826 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x18AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x18B4 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x18E1 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x59C DUP2 PUSH2 0x2335 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x196B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP9 SWAP2 PUSH2 0x19A6 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0x19AE PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x19DB PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 MLOAD PUSH32 0x8ED5B1400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 ISZERO ISZERO PUSH1 0x4 DUP3 ADD MSTORE SWAP2 AND SWAP1 PUSH4 0x8ED5B14 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x2 SWAP1 SWAP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SLOAD SWAP3 MLOAD SWAP2 DUP5 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE DUP12 ISZERO ISZERO PUSH1 0x44 DUP5 ADD MSTORE SWAP5 POP PUSH2 0x1B5C SWAP4 SWAP1 DUP2 AND SWAP3 DUP11 SWAP3 SWAP2 AND SWAP1 CALLER SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x563C7F6000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2026 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH32 0x4CD6451D8996D5CF60ACF25B65A82BDDAAF576A2D664855BBE7BEDF3E82A58B1 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1BA7 SWAP2 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x1BF4 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1C7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1D22 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E33 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1E3D PUSH2 0x23A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x90978D1B DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E77 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EC7 SWAP2 SWAP1 PUSH2 0x28E0 JUMP JUMPDEST PUSH2 0x1F2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4964656E746966696572206E6F74207265676973746572656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x5 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x4B924BF6F3485CD9C93A9734E5916E32005EB2F8AF99B1F14B2CC1D2EE04DAC9 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F9A JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO ISZERO JUMPDEST PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206465706F736974206F72206D657373656E67657220636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7472616374000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x555 JUMP JUMPDEST CALLVALUE DUP8 EQ PUSH2 0x208F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57726F6E67206E756D626572206F66204554482073656E740000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9E353C7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 PUSH4 0x9E353C70 SWAP1 DUP10 SWAP1 PUSH2 0x20EF SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP5 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x291A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x211C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0xBB744800 DUP2 PUSH4 0xFFFFFFFF AND LT PUSH2 0x219E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6976656E65737320746F6F206C617267650000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT PUSH2 0x220E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6976656E6573732063616E6E6F742062652030000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x18C2DABB108F62FAD5FA139A7313BD221F388DC0B09727624AF21DDFCF76CBAA SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xAAFD5E4000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x436F6C6C61746572616C57686974656C69737400000000000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x230C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2330 SWAP2 SWAP1 PUSH2 0x28FD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFF AND PUSH5 0x100000000 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND SWAP1 PUSH32 0xACFE7E537E15EF4781402154351BC868C74852D83F3CC95D570A290B2C5A4F99 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xAAFD5E4000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x4964656E74696669657257686974656C69737400000000000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2464 DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2494 DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP3 DUP3 GT ISZERO PUSH2 0x253B JUMPI PUSH2 0x253B PUSH2 0x24B9 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP7 DUP3 GT OR ISZERO PUSH2 0x257E JUMPI PUSH2 0x257E PUSH2 0x24B9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP3 DUP4 MSTORE DUP2 DUP4 ADD SWAP4 POP DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP10 DUP5 GT ISZERO PUSH2 0x259C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x25C1 JUMPI PUSH2 0x25B2 DUP7 PUSH2 0x2459 JUMP JUMPDEST DUP6 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP4 DUP3 ADD SWAP4 PUSH2 0x25A1 JUMP JUMPDEST SWAP7 POP PUSH2 0x25D0 SWAP1 POP DUP8 DUP3 ADD PUSH2 0x2459 JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x263B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH2 0x2494 PUSH1 0x20 DUP9 ADD PUSH2 0x260A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x267A DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x268A DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH2 0x269A DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP7 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP7 POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xE0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x26E0 DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP2 POP PUSH2 0x26EE PUSH1 0x20 DUP5 ADD PUSH2 0x260A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x270C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x271E DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x272E DUP2 PUSH2 0x2437 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x274B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2603 DUP3 PUSH2 0x260A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2772 DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x27A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x27BB DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x27CB DUP2 PUSH2 0x2780 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP6 SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2603 DUP2 PUSH2 0x2437 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 EQ ISZERO PUSH2 0x287D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28D4 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x28A2 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2603 DUP2 PUSH2 0x2780 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x290F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2603 DUP2 PUSH2 0x2437 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE DUP9 PUSH1 0x40 DUP6 ADD MSTORE DUP8 PUSH1 0x60 DUP6 ADD MSTORE DUP7 PUSH1 0x80 DUP6 ADD MSTORE DUP6 PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xE0 PUSH1 0xC0 DUP6 ADD MSTORE DUP5 MLOAD SWAP2 POP DUP2 PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2988 JUMPI DUP6 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH2 0x100 ADD MSTORE DUP2 ADD PUSH2 0x296B JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x299B JUMPI PUSH1 0x0 PUSH2 0x100 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH2 0x100 ADD SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF NUMBER 0xB3 0xDF 0x2C SMOD PUSH12 0xC2DFD2E8BC07869817D88FC6 0x23 0xCB PUSH21 0xD6EF0E1E69ABD273AECF64736F6C63430008090033 ",
                            "sourceMap": "924:17324:43:-:0;;;2984:414;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;867:17:5;909:18;;-1:-1:-1;;;;;;909:18:5;665:10:12;909:18:5;;;;;942:43;;665:10:12;;;;942:43:5;;867:17;;942:43;-1:-1:-1;874:11:28;:18;;-1:-1:-1;;;;874:18:28;-1:-1:-1;;;874:18:28;;;888:4;3141:16:43;;-1:-1:-1;;;;;3141:16:43;;-1:-1:-1;;;;;;3141:16:43;;;;;;3183:25;:23;:25::i;:::-;-1:-1:-1;;;;;3175:48:43;;;3167:75;;;;-1:-1:-1;;;3167:75:43;;1003:2:66;3167:75:43;;;985:21:66;1042:2;1022:18;;;1015:30;-1:-1:-1;;;1061:18:66;;;1054:44;1115:18;;3167:75:43;;;;;;;;;3252:55;3281:25;3252:28;:55::i;:::-;3317:37;3337:16;3317:19;:37::i;:::-;3364:27;3379:11;3364:14;:27::i;:::-;2984:414;;;;924:17324;;15989:263;16161:6;;16145:86;;-1:-1:-1;;;16145:86:43;;16194:36;16145:86;;;1290:25:66;16046::43;;-1:-1:-1;;;;;16161:6:43;;16145:48;;1263:18:66;;16145:86:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16083:162;;15989:263;:::o;16511:577::-;16880:10;16869:8;:21;;;16861:52;;;;-1:-1:-1;;;16861:52:43;;1741:2:66;16861:52:43;;;1723:21:66;1780:2;1760:18;;;1753:30;-1:-1:-1;;;1799:18:66;;;1792:48;1857:18;;16861:52:43;1539:342:66;16861:52:43;16942:1;16931:8;:12;;;16923:45;;;;-1:-1:-1;;;16923:45:43;;2088:2:66;16923:45:43;;;2070:21:66;2127:2;2107:18;;;2100:30;2166:22;2146:18;;;2139:50;2206:18;;16923:45:43;1886:344:66;16923:45:43;16978:24;:35;;-1:-1:-1;;16978:35:43;;;;;;;;;;17028:53;;;;-1:-1:-1;;17028:53:43;16511:577;:::o;17094:163::-;17166:15;:34;;-1:-1:-1;;;;;;;;17166:34:43;;-1:-1:-1;;;;;17166:34:43;;;;;;;;;;;;;17215:35;;17234:15;;;;17215:35;;-1:-1:-1;;17215:35:43;17094:163;:::o;16258:247::-;16329:25;:23;:25::i;:::-;-1:-1:-1;;;;;16329:47:43;;16377:11;16329:60;;;;;;;;;;;;;1290:25:66;;1278:2;1263:18;;1144:177;16329:60:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16321:98;;;;-1:-1:-1;;;16321:98:43;;2719:2:66;16321:98:43;;;2701:21:66;2758:2;2738:18;;;2731:30;2797:27;2777:18;;;2770:55;2842:18;;16321:98:43;2517:349:66;16321:98:43;16429:10;:24;;;16468:30;;16442:11;;16468:30;;;;;16258:247;:::o;15714:269::-;15892:6;;15876:86;;-1:-1:-1;;;15876:86:43;;15925:36;15876:86;;;1290:25:66;15771:28:43;;-1:-1:-1;;;;;15892:6:43;;15876:48;;1263:18:66;;15876:86:43;1144:177:66;14;93:13;;-1:-1:-1;;;;;135:31:66;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:600::-;291:6;299;307;315;368:3;356:9;347:7;343:23;339:33;336:53;;;385:1;382;375:12;336:53;408:40;438:9;408:40;:::i;:::-;398:50;;491:2;480:9;476:18;470:25;535:10;528:5;524:22;517:5;514:33;504:61;;561:1;558;551:12;504:61;634:2;619:18;;613:25;584:5;;-1:-1:-1;;;;;;669:32:66;;657:45;;647:73;;716:1;713;706:12;647:73;786:2;771:18;;;;765:25;196:600;;;;-1:-1:-1;;;196:600:66:o;1326:208::-;1396:6;1449:2;1437:9;1428:7;1424:23;1420:32;1417:52;;;1465:1;1462;1455:12;1417:52;1488:40;1518:9;1488:40;:::i;:::-;1478:50;1326:208;-1:-1:-1;;;1326:208:66:o;2235:277::-;2302:6;2355:2;2343:9;2334:7;2330:23;2326:32;2323:52;;;2371:1;2368;2361:12;2323:52;2403:9;2397:16;2456:5;2449:13;2442:21;2435:5;2432:32;2422:60;;2478:1;2475;2468:12;2517:349;924:17324:43;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_getCollateralWhitelist_8090": {
                                    "entryPoint": 8813,
                                    "id": 8090,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_getIdentifierWhitelist_8073": {
                                    "entryPoint": 9127,
                                    "id": 8073,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_postEntranceReset_5436": {
                                    "entryPoint": null,
                                    "id": 5436,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_5420": {
                                    "entryPoint": 7599,
                                    "id": 5420,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_5428": {
                                    "entryPoint": null,
                                    "id": 5428,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_relayMessage_8225": {
                                    "entryPoint": 8230,
                                    "id": 8225,
                                    "parameterSlots": 8,
                                    "returnSlots": 0
                                },
                                "@_setIdentifier_8113": {
                                    "entryPoint": 7733,
                                    "id": 8113,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setOptimisticOracleLiveness_8141": {
                                    "entryPoint": 8491,
                                    "id": 8141,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setProposerBondPct_8155": {
                                    "entryPoint": 9013,
                                    "id": 8155,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_validateDepositContracts_8182": {
                                    "entryPoint": 8032,
                                    "id": 8182,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@depositContracts_8031": {
                                    "entryPoint": null,
                                    "id": 8031,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@finder_7474": {
                                    "entryPoint": null,
                                    "id": 7474,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@identifier_7493": {
                                    "entryPoint": null,
                                    "id": 7493,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@optimisticOracleLiveness_7487": {
                                    "entryPoint": null,
                                    "id": 7487,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@owner_664": {
                                    "entryPoint": null,
                                    "id": 664,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@proposerBondPct_7490": {
                                    "entryPoint": null,
                                    "id": 7490,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@renounceOwnership_700": {
                                    "entryPoint": 2938,
                                    "id": 700,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@setCrossDomainAdmin_7765": {
                                    "entryPoint": 1507,
                                    "id": 7765,
                                    "parameterSlots": 6,
                                    "returnSlots": 0
                                },
                                "@setDepositContract_7638": {
                                    "entryPoint": 5779,
                                    "id": 7638,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@setEnableDepositsAndRelays_7890": {
                                    "entryPoint": 6378,
                                    "id": 7890,
                                    "parameterSlots": 7,
                                    "returnSlots": 0
                                },
                                "@setIdentifier_7568": {
                                    "entryPoint": 1240,
                                    "id": 7568,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setLpFeeRatePerSecond_7704": {
                                    "entryPoint": 5378,
                                    "id": 7704,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@setMinimumBridgingDelay_7816": {
                                    "entryPoint": 3178,
                                    "id": 7816,
                                    "parameterSlots": 6,
                                    "returnSlots": 0
                                },
                                "@setOptimisticOracleLiveness_7583": {
                                    "entryPoint": 2747,
                                    "id": 7583,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setProposerBondPct_7598": {
                                    "entryPoint": 6187,
                                    "id": 7598,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@transferBridgePoolAdmin_7679": {
                                    "entryPoint": 2218,
                                    "id": 7679,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@transferOwnership_728": {
                                    "entryPoint": 7166,
                                    "id": 728,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@whitelistToken_8017": {
                                    "entryPoint": 3759,
                                    "id": 8017,
                                    "parameterSlots": 8,
                                    "returnSlots": 0
                                },
                                "@whitelistedTokens_8056": {
                                    "entryPoint": null,
                                    "id": 8056,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_address": {
                                    "entryPoint": 9305,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 10227,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_uint256": {
                                    "entryPoint": 10068,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_uint64": {
                                    "entryPoint": 9922,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_address": {
                                    "entryPoint": 9448,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_bool_fromMemory": {
                                    "entryPoint": 10464,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32": {
                                    "entryPoint": 9246,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_contract$_IERC20_$1406_fromMemory": {
                                    "entryPoint": 10493,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256t_addresst_address": {
                                    "entryPoint": 9975,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_uint256t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256": {
                                    "entryPoint": 9803,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 8
                                },
                                "abi_decode_tuple_t_uint256t_addresst_boolt_uint256t_uint256t_uint256t_uint256": {
                                    "entryPoint": 10126,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 7
                                },
                                "abi_decode_tuple_t_uint256t_addresst_uint256t_uint256t_uint256t_uint256": {
                                    "entryPoint": 9321,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 6
                                },
                                "abi_decode_tuple_t_uint256t_uint64t_uint256t_uint256t_uint256t_uint256": {
                                    "entryPoint": 9762,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 6
                                },
                                "abi_decode_tuple_t_uint32": {
                                    "entryPoint": 9693,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64": {
                                    "entryPoint": 10041,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint64": {
                                    "entryPoint": 9738,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 10522,
                                    "id": null,
                                    "parameterSlots": 8,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 10374,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_10657174ead1fc3dc6d1d3f881b335facfc9095796fd15a08f7c17697cf4bb24__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_1b7a62b057ae2f0c5b538e3b9da024040f4d76b9bfdee91e00e3deb4698797e0__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_2d7198fed6d004b02a2f82447437df9fbd1d3213d4970244d04813078e7dc5a0__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3a610a3cd09cf513fbc9158d032d260638a50685d0b793f49a43b2851caa0b59__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_55d4ad2cf4443e2af59cf6b21001e8b7a5ae06c9a5e8b123d0770ecd036b39c7__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_56769370f57b03c035ba3a336601bde3fa507551f184c54555b7d50430f62caf__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_5f70782f56e75aa7a030567ff447a0f4f1c2357a245311a14b417ebd8e079d94__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_b53919485aae24a1d227ecd028e0dd4b92a07ce24a3b93dcdce8aeee65148128__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_eb80a7fbdea4724cc71e9cf3e76877c08c64fe97e0679eed59f1a4b8b2232a61__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_fdfd700e2e8a448a738d802d07d7a1972ac9ed34bd650165b21b4c3c664fc4ee__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_DepositUtilityContracts_$9168_memory_ptr__to_t_struct$_DepositUtilityContracts_$9168_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "increment_t_uint8": {
                                    "entryPoint": 10303,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x32": {
                                    "entryPoint": 10256,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 9401,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_address": {
                                    "entryPoint": 9271,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "validator_revert_bool": {
                                    "entryPoint": 10112,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:17625:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "84:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "130:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "139:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "142:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "132:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "132:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "132:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "105:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "114:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "101:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "101:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "126:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "97:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "97:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "94:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "155:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "178:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "165:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "165:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "155:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "50:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "61:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "73:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "244:109:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "331:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "340:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "343:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "333:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "333:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "333:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "267:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "278:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "285:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "274:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "274:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "264:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "264:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "257:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "257:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "254:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "233:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "199:154:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "407:85:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "417:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "439:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "426:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "426:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "417:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "480:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "455:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "455:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "455:31:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "386:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "397:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "358:134:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "652:435:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "699:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "708:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "711:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "701:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "701:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "701:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "673:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "682:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "669:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "669:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "694:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "665:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "665:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "662:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "724:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "747:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "734:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "734:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "724:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "766:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "796:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "807:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "792:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "792:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "779:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "779:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "770:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "845:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "820:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "820:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "820:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "860:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "870:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "860:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "884:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "911:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "922:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "907:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "907:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "894:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "894:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "884:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "935:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "962:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "973:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "958:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "958:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "945:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "945:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "935:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "986:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1013:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1024:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1009:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1009:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "996:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "996:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "986:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1038:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1065:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1076:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1061:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1061:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1048:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1048:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1038:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256t_addresst_uint256t_uint256t_uint256t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "578:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "589:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "601:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "609:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "617:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "625:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "633:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "641:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "497:590:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1191:93:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1201:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1213:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1224:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1209:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1209:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1201:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1243:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1258:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1266:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1254:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1254:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1236:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1236:42:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1236:42:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1160:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1171:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1182:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1092:192:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1321:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1338:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1341:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1331:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1331:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1331:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1435:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1438:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1428:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1428:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1428:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1459:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1462:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1452:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1452:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1452:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "1289:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1590:1144:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1636:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1645:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1648:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1638:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1638:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1638:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1611:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1620:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1607:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1607:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1632:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1603:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1603:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1600:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1661:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1688:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1675:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1675:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1665:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1707:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1717:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1711:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1762:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1771:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1774:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1764:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1764:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1764:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1750:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1758:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1747:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1747:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1744:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1787:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1801:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1812:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1797:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1797:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1791:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1867:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1876:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1879:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1869:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1869:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1869:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1846:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1850:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1842:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1842:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1857:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1838:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1838:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1831:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1831:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1828:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1892:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1915:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1902:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1902:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1896:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1927:14:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1937:4:66",
                                                                "type": "",
                                                                "value": "0x20"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1931:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1964:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1966:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1966:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1966:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1956:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1960:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1953:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1953:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1950:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1995:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2009:1:66",
                                                                        "type": "",
                                                                        "value": "5"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2012:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shl",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2005:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2005:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_5",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1999:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2024:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2044:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2038:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2038:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2028:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2056:115:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2078:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_5",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2094:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2098:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2090:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2090:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2103:66:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2086:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2086:84:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2074:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2074:97:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2060:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2230:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2232:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2232:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2232:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2189:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2201:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2186:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2186:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2209:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2221:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2206:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2206:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2183:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2183:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2180:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2268:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2272:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2261:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2261:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2261:22:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2292:17:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2303:6:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2296:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2325:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2333:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2318:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2318:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2318:18:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2345:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2356:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2364:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2352:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2352:15:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "dst",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2345:3:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2376:34:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2398:2:66"
                                                                            },
                                                                            {
                                                                                "name": "_5",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2402:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2394:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2394:11:66"
                                                                    },
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2407:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2390:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2390:20:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcEnd",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2380:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2442:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2451:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2454:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2444:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2444:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2444:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2425:6:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2433:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2422:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2422:19:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2419:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2467:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2482:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2486:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2478:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2478:11:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "src",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2471:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2554:92:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2575:3:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "src",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2599:3:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "abi_decode_address",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2580:18:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2580:23:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2568:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2568:36:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2568:36:66"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2617:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "dst",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2628:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_4",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2633:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2624:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2624:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "dst",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2617:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "src",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2509:3:66"
                                                                    },
                                                                    {
                                                                        "name": "srcEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2514:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2506:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2506:15:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2522:23:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2524:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "src",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2535:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_4",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2540:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2531:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2531:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "src",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2524:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2502:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "2498:148:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2655:16:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2665:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2655:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2680:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2713:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2724:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2709:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2709:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2690:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2690:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2680:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1548:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1559:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1571:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1579:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1478:1256:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2808:207:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2854:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2863:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2866:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2856:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2856:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2856:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2829:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2838:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2825:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2825:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2850:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2821:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2821:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2818:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2879:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2905:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2892:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2892:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2883:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2969:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2978:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2981:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2971:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2971:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2971:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2937:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2948:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2955:10:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2944:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2944:22:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2934:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2934:33:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2927:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2927:41:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2924:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2994:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3004:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2994:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2774:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2785:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2797:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2739:276:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3121:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3131:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3143:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3154:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3139:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3139:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3131:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3173:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3184:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3166:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3166:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3166:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3090:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3101:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3112:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3020:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3250:123:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3260:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3282:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3269:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3269:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3260:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3351:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3360:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3363:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3353:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3353:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3353:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3311:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3322:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3329:18:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3318:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3318:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3308:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3308:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3301:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3301:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3298:69:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3229:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3240:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3202:171:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3532:373:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3579:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3588:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3591:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3581:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3581:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3581:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3553:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3562:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3549:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3549:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3574:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3545:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3545:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3542:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3604:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3627:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3614:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3614:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3604:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3646:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3678:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3689:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3674:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3674:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3656:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3656:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3646:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3702:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3729:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3740:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3725:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3725:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3712:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3712:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3702:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3753:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3780:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3791:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3776:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3776:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3763:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3763:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3753:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3804:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3831:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3842:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3827:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3827:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3814:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3814:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3804:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3856:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3883:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3894:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3879:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3879:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3866:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3866:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3856:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256t_uint64t_uint256t_uint256t_uint256t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3458:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3469:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3481:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3489:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3497:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3505:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3513:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3521:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3378:527:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3980:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4026:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4035:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4038:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4028:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4028:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4028:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4001:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4010:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3997:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3997:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4022:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3993:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3993:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3990:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4051:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4074:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4061:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4061:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4051:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3946:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3957:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3969:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3910:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4278:225:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4288:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4300:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4311:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4296:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4296:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4288:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4323:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4333:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4327:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4391:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4412:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4406:5:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4406:13:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4421:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4402:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4402:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4384:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4384:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4384:41:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4445:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4456:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4441:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4441:20:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value0",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4477:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "4485:4:66",
                                                                                                "type": "",
                                                                                                "value": "0x20"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4473:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4473:17:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4467:5:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4467:24:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4493:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4463:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4463:33:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4434:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4434:63:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4434:63:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_DepositUtilityContracts_$9168_memory_ptr__to_t_struct$_DepositUtilityContracts_$9168_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4247:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4258:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4269:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4095:408:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4609:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4619:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4631:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4642:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4627:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4627:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4619:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4661:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4676:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4684:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4672:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4672:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4654:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4654:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4654:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4578:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4589:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4600:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4508:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4928:685:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4975:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4984:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4987:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4977:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4977:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4977:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4949:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4958:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4945:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4945:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4970:3:66",
                                                                        "type": "",
                                                                        "value": "256"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4941:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4941:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4938:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5000:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5023:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5010:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5010:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5000:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5042:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5072:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5083:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5068:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5068:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5055:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5055:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5046:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5121:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5096:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5096:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5096:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5136:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5146:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5136:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5160:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5192:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5203:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5188:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5188:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5175:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5175:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5164:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5241:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5216:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5216:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5216:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5258:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5268:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5258:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5284:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5316:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5327:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5312:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5312:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5299:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5299:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5288:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5365:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5340:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5340:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5340:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5382:17:66",
                                                            "value": {
                                                                "name": "value_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5392:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5382:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5408:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5435:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5446:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5431:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5431:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5418:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5418:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5408:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5460:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5487:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5498:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5483:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5483:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5470:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5470:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5460:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5512:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5539:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5550:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5535:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5535:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5522:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5522:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5512:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5564:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5591:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5602:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5587:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5587:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5574:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5574:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value7",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5564:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4838:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4849:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4861:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4869:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4877:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4885:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4893:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4901:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4909:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4917:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4739:874:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5704:233:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5750:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5759:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5762:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5752:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5752:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5752:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5725:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5734:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5721:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5721:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5746:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5717:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5717:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5714:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5775:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5801:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5788:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5788:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5779:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5845:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5820:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5820:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5820:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5860:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5870:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5860:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5884:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5916:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5927:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5912:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5912:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5894:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5894:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5884:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5662:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5673:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5685:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5693:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5618:319:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6046:352:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6092:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6101:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6104:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6094:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6094:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6094:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6067:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6076:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6063:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6063:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6088:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6059:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6059:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6056:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6117:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6140:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6127:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6127:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6117:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6159:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6189:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6200:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6185:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6185:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6172:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6172:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6163:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6238:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6213:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6213:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6213:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6253:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6263:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6253:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6277:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6309:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6320:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6305:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6305:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6292:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6292:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6281:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6358:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6333:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6333:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6333:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6375:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6385:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6375:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256t_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5996:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6007:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6019:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6027:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6035:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5942:456:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6472:115:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6518:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6527:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6530:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6520:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6520:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6520:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6493:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6502:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6489:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6489:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6514:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6485:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6485:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6482:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6543:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6571:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6553:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6553:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6543:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6438:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6449:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6461:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6403:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6679:228:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6725:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6734:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6737:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6727:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6727:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6727:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6700:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6709:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6696:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6696:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6721:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6692:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6692:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6689:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6750:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6776:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6763:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6763:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6754:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6820:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6795:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6795:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6795:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6835:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6845:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6835:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6859:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6886:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6897:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6882:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6882:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6869:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6869:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6859:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6637:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6648:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6660:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6668:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6592:315:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7041:198:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7051:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7063:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7074:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7059:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7059:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7051:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7086:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "7096:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7090:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7154:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7169:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7177:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7165:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7165:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7147:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7147:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7147:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7201:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7212:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7197:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7197:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7221:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7229:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7217:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7217:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7190:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7190:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7190:43:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7002:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7013:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7021:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7032:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6912:327:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7286:76:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7340:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7349:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7352:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7342:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7342:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7342:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7309:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "7330:5:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "7323:6:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "7323:13:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "7316:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "7316:21:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7306:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7306:32:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7299:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7299:40:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7296:60:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7275:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7244:118:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7536:557:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7583:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7592:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7595:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7585:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7585:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7585:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7557:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7566:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7553:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7553:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7578:3:66",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7549:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7549:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7546:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7608:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7631:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7618:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7618:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7608:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7650:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7680:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7691:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7676:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7676:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7663:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7663:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7654:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7729:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7704:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7704:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7704:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7744:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7754:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7744:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7768:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7800:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7811:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7796:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7796:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7783:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7783:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7772:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7846:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7824:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7824:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7824:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7863:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7873:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7863:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7889:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7916:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7927:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7912:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7912:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7899:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7899:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7889:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7940:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7967:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7978:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7963:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7963:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7950:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7950:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7940:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7992:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8019:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8030:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8015:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8015:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8002:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8002:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7992:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8044:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8071:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8082:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8067:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8067:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8054:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8054:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8044:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256t_addresst_boolt_uint256t_uint256t_uint256t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7454:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7465:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7477:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7485:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7493:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7501:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7509:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7517:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7525:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7367:726:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8197:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8207:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8219:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8230:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8215:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8215:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8207:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8249:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8264:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8272:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8260:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8260:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8242:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8242:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8242:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8166:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8177:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8188:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8098:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8373:177:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "8419:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8428:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8431:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8421:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "8421:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "8421:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8394:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8403:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8390:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8390:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8415:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8386:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8386:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "8383:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8444:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8470:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8457:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8457:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8448:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8514:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8489:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8489:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8489:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8529:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "8539:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8529:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8339:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8350:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8362:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8303:247:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8729:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8746:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8757:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8739:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8739:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8739:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8780:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8791:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8776:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8776:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8796:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8769:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8769:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8769:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8819:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8830:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8815:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8815:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8835:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: caller is not the owner"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8808:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8808:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8808:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8879:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8891:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8902:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8887:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8887:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8879:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8706:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8720:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8555:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9090:178:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9107:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9118:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9100:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9100:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9100:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9141:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9152:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9137:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9137:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9157:2:66",
                                                                        "type": "",
                                                                        "value": "28"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9130:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9130:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9130:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9180:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9191:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9176:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9176:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "41646d696e2063616e6e6f74206265207a65726f2061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9196:30:66",
                                                                        "type": "",
                                                                        "value": "Admin cannot be zero address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9169:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9169:58:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9169:58:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9236:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9248:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9259:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9244:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9244:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9236:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_10657174ead1fc3dc6d1d3f881b335facfc9095796fd15a08f7c17697cf4bb24__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9067:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9081:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8916:352:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9305:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9322:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9325:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9315:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9315:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9315:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9419:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9422:4:66",
                                                                        "type": "",
                                                                        "value": "0x32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9412:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9412:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9412:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9443:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9446:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9436:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9436:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9436:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x32",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "9273:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9507:284:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9517:31:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9536:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9543:4:66",
                                                                        "type": "",
                                                                        "value": "0xff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9532:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9532:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9521:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9586:168:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9607:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9610:77:66",
                                                                                    "type": "",
                                                                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9600:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9600:88:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9600:88:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9708:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9711:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x11"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9701:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9701:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9701:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9736:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9739:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9729:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9729:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9729:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9563:7:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9572:4:66",
                                                                        "type": "",
                                                                        "value": "0xff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9560:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9560:17:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9557:197:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9763:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9774:7:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9783:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9770:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9770:15:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9763:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint8",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9489:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9499:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9462:329:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9947:530:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9957:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9967:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9961:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9978:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9996:9:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10007:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9992:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9992:18:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9982:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10026:9:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10037:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10019:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10019:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10019:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10049:17:66",
                                                            "value": {
                                                                "name": "tail_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10060:6:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10053:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10075:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10095:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10089:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10089:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10079:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "tail_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10118:6:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10126:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10111:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10111:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10111:22:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10142:25:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10153:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10164:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10149:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10149:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10142:3:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10176:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10194:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10202:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10190:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10190:15:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10180:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10214:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10223:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10218:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10282:169:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10303:3:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "srcPtr",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "10318:6:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "mload",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "10312:5:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "10312:13:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "10327:42:66",
                                                                                            "type": "",
                                                                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "and",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "10308:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "10308:62:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10296:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10296:75:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "10296:75:66"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10384:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10395:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10400:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10391:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10391:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10384:3:66"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10416:25:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "srcPtr",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10430:6:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10438:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10426:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10426:15:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "srcPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10416:6:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10244:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10247:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10241:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10241:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10255:18:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10257:14:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10266:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10269:1:66",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10262:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10262:9:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10257:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10237:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "10233:218:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10460:11:66",
                                                            "value": {
                                                                "name": "pos",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10468:3:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10460:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9916:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9927:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9938:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9796:681:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10656:223:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10673:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10684:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10666:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10666:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10666:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10707:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10718:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10703:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10703:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10723:2:66",
                                                                        "type": "",
                                                                        "value": "33"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10696:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10696:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10696:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10746:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10757:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10742:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10742:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "427269646765506f6f6c2063616e6e6f74206265207a65726f20616464726573",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10762:34:66",
                                                                        "type": "",
                                                                        "value": "BridgePool cannot be zero addres"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10735:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10735:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10735:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10817:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10828:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10813:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10813:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "73",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10833:3:66",
                                                                        "type": "",
                                                                        "value": "s"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10806:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10806:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10806:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10846:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10858:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10869:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10854:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10854:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10846:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_eb80a7fbdea4724cc71e9cf3e76877c08c64fe97e0679eed59f1a4b8b2232a61__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10633:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10647:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10482:397:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11058:181:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11075:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11086:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11068:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11068:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11068:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11109:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11120:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11105:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11105:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11125:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11098:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11098:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11098:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11148:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11159:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11144:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11144:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4c3220746f6b656e2063616e6e6f74206265207a65726f2061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11164:33:66",
                                                                        "type": "",
                                                                        "value": "L2 token cannot be zero address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11137:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11137:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11137:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11207:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11219:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11230:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11215:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11215:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11207:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_fdfd700e2e8a448a738d802d07d7a1972ac9ed34bd650165b21b4c3c664fc4ee__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11035:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11049:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10884:355:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11322:167:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "11368:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "11377:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "11380:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11370:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "11370:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "11370:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11343:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11352:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11339:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11339:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11364:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11335:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11335:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11332:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11393:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11412:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11406:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11406:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11397:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11453:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11431:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11431:28:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11431:28:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11468:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11478:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11468:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11288:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11299:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11311:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11244:245:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11668:179:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11685:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11696:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11678:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11678:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11678:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11719:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11730:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11715:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11715:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11735:2:66",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11708:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11708:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11708:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11758:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11769:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11754:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11754:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4c31546f6b656e20746f6b656e206e6f742077686974656c6973746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11774:31:66",
                                                                        "type": "",
                                                                        "value": "L1Token token not whitelisted"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11747:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11747:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11747:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11815:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11827:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11838:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11823:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11823:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11815:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_55d4ad2cf4443e2af59cf6b21001e8b7a5ae06c9a5e8b123d0770ecd036b39c7__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11645:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11659:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11494:353:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11948:170:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "11994:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12003:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12006:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11996:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "11996:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "11996:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11969:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11978:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11965:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11965:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11990:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11961:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11961:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11958:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "12019:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12038:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12032:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12032:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "12023:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12082:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12057:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12057:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12057:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12097:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12107:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12097:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_contract$_IERC20_$1406_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11914:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11925:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11937:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11852:266:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12297:224:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12314:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12325:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12307:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12307:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12307:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12348:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12359:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12344:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12344:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12364:2:66",
                                                                        "type": "",
                                                                        "value": "34"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12337:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12337:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12337:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12387:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12398:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12383:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12383:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "42726964676520706f6f6c2068617320646966666572656e74204c3120746f6b",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12403:34:66",
                                                                        "type": "",
                                                                        "value": "Bridge pool has different L1 tok"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12376:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12376:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12376:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12458:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12469:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12454:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12454:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "656e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12474:4:66",
                                                                        "type": "",
                                                                        "value": "en"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12447:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12447:32:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12447:32:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12488:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12500:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12511:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12496:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12496:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12488:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_b53919485aae24a1d227ecd028e0dd4b92a07ce24a3b93dcdce8aeee65148128__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12274:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12288:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12123:398:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12683:250:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12693:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12705:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12716:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12701:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12701:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12693:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "12728:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "12738:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "12732:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12796:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12811:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12819:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12807:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12807:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12789:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12789:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12789:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12843:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12854:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12839:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12839:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12863:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12871:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12859:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12859:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12832:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12832:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12832:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12895:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12906:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12891:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12891:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12915:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12923:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12911:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12911:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12884:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12884:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12884:43:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12636:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12647:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12655:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12663:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12674:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12526:407:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13039:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13049:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13061:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13072:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13057:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13057:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13049:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13091:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13102:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13084:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13084:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13084:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13008:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13019:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13030:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12938:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13215:92:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13225:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13237:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13248:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13233:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13233:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13225:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13267:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "13292:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "13285:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "13285:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13278:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13278:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13260:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13260:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13260:41:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13184:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13195:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13206:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13120:187:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13435:184:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13445:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13457:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13468:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13453:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13453:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13445:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13487:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13502:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13510:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13498:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13498:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13480:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13480:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13480:74:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13574:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13585:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13570:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13570:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "13604:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "13597:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "13597:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13590:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13590:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13563:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13563:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13563:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13396:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13407:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13415:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13426:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13312:307:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13798:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13815:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13826:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13808:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13808:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13808:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13849:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13860:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13845:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13845:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13865:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13838:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13838:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13838:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13888:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13899:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13884:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13884:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13904:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: new owner is the zero a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13877:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13877:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13877:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13959:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13970:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13955:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13955:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13975:8:66",
                                                                        "type": "",
                                                                        "value": "ddress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13948:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13948:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13948:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13993:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14005:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14016:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14001:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14001:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13993:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13775:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13789:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13624:402:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14205:181:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14222:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14233:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14215:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14215:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14215:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14256:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14267:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14252:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14252:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14272:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14245:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14245:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14245:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14295:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14306:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14291:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14291:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14311:33:66",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14284:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14284:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14284:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14354:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14366:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14377:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14362:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14362:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14354:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14182:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14196:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14031:355:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14565:175:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14582:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14593:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14575:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14575:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14575:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14616:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14627:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14612:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14612:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14632:2:66",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14605:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14605:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14605:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14655:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14666:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14651:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14651:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4964656e746966696572206e6f742072656769737465726564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14671:27:66",
                                                                        "type": "",
                                                                        "value": "Identifier not registered"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14644:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14644:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14644:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14708:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14720:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14731:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14716:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14716:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14708:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_56769370f57b03c035ba3a336601bde3fa507551f184c54555b7d50430f62caf__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14542:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14556:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14391:349:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14919:227:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14936:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14947:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14929:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14929:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14929:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14970:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14981:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14966:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14966:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14986:2:66",
                                                                        "type": "",
                                                                        "value": "37"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14959:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14959:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14959:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15009:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15020:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15005:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15005:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "496e76616c6964206465706f736974206f72206d657373656e67657220636f6e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15025:34:66",
                                                                        "type": "",
                                                                        "value": "Invalid deposit or messenger con"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14998:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14998:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14998:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15080:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15091:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15076:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15076:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "7472616374",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15096:7:66",
                                                                        "type": "",
                                                                        "value": "tract"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15069:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15069:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15069:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15113:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15125:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15136:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15121:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15121:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15113:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3a610a3cd09cf513fbc9158d032d260638a50685d0b793f49a43b2851caa0b59__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14896:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14910:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14745:401:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15325:174:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15342:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15353:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15335:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15335:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15335:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15376:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15387:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15372:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15372:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15392:2:66",
                                                                        "type": "",
                                                                        "value": "24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15365:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15365:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15365:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15415:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15426:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15411:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15411:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "57726f6e67206e756d626572206f66204554482073656e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15431:26:66",
                                                                        "type": "",
                                                                        "value": "Wrong number of ETH sent"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15404:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15404:54:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15404:54:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15467:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15479:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15490:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15475:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15475:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15467:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_1b7a62b057ae2f0c5b538e3b9da024040f4d76b9bfdee91e00e3deb4698797e0__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15302:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15316:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15151:348:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15791:880:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15801:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "15811:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15805:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15869:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15884:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15892:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15880:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15880:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15862:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15862:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15862:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15905:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "15915:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15909:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15937:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15948:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15933:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15933:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15957:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15965:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15953:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15953:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15926:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15926:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15926:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15989:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16000:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15985:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15985:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16005:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15978:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15978:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15978:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16032:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16043:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16028:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16028:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16048:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16021:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16021:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16021:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16075:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16086:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16071:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16071:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16092:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16064:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16064:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16064:35:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16119:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16130:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16115:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16115:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value5",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16136:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16108:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16108:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16108:35:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16163:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16174:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16159:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16159:19:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16180:3:66",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16152:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16152:32:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16152:32:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "16193:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16213:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16207:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16207:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "16197:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16240:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16251:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16236:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16236:19:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16257:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16229:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16229:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16229:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "16273:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "16282:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "16277:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "16342:91:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "16371:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "16382:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "16367:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "16367:17:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "16386:3:66",
                                                                                            "type": "",
                                                                                            "value": "256"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "16363:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "16363:27:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "value6",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "16406:6:66"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "16414:1:66"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "16402:3:66"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "16402:14:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_2",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "16418:2:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "16398:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "16398:23:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "16392:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "16392:30:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16356:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "16356:67:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "16356:67:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16303:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16306:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16300:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16300:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "16314:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "16316:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "16325:1:66"
                                                                                },
                                                                                {
                                                                                    "name": "_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "16328:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16321:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "16321:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16316:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "16296:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "16292:141:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "16467:67:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "16496:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "length",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "16507:6:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "16492:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "16492:22:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "16516:3:66",
                                                                                            "type": "",
                                                                                            "value": "256"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "16488:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "16488:32:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "16522:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16481:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "16481:43:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "16481:43:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16448:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16451:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16445:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16445:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "16442:92:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "16543:122:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16559:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "16578:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "16586:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "16574:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "16574:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "16591:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "16570:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "16570:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16555:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16555:104:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16661:3:66",
                                                                        "type": "",
                                                                        "value": "256"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16551:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16551:114:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16543:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15712:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15723:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15731:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15739:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15747:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15755:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15763:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15771:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15782:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15504:1167:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "16850:168:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16867:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16878:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16860:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16860:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16860:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16901:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16912:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16897:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16897:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16917:2:66",
                                                                        "type": "",
                                                                        "value": "18"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16890:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16890:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16890:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16940:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16951:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16936:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16936:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4c6976656e65737320746f6f206c61726765",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16956:20:66",
                                                                        "type": "",
                                                                        "value": "Liveness too large"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16929:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16929:48:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16929:48:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "16986:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16998:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17009:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16994:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16994:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16986:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_5f70782f56e75aa7a030567ff447a0f4f1c2357a245311a14b417ebd8e079d94__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16827:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16841:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "16676:342:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17197:170:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17214:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17225:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17207:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17207:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17207:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17248:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "17259:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17244:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17244:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17264:2:66",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17237:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17237:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17237:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17287:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "17298:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17283:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17283:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4c6976656e6573732063616e6e6f742062652030",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17303:22:66",
                                                                        "type": "",
                                                                        "value": "Liveness cannot be 0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17276:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17276:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17276:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17335:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17347:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17358:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17343:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17343:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17335:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_2d7198fed6d004b02a2f82447437df9fbd1d3213d4970244d04813078e7dc5a0__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17174:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17188:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17023:344:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17453:170:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "17499:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17508:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17511:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17501:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "17501:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "17501:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17474:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17483:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17470:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17470:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17495:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17466:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17466:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "17463:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "17524:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17543:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17537:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17537:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "17528:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17587:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17562:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17562:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17562:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17602:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "17612:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17602:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17419:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17430:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17442:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17372:251:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_tuple_t_uint256t_addresst_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        let _4 := 0x20\n        if gt(_3, _1) { panic_error_0x41() }\n        let _5 := shl(5, _3)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(_5, 63), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let dst := memPtr\n        mstore(memPtr, _3)\n        dst := add(memPtr, _4)\n        let srcEnd := add(add(_2, _5), _4)\n        if gt(srcEnd, dataEnd) { revert(0, 0) }\n        let src := add(_2, _4)\n        for { } lt(src, srcEnd) { src := add(src, _4) }\n        {\n            mstore(dst, abi_decode_address(src))\n            dst := add(dst, _4)\n        }\n        value0 := memPtr\n        value1 := abi_decode_address(add(headStart, _4))\n    }\n    function abi_decode_tuple_t_uint32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_uint64t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint64(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_struct$_DepositUtilityContracts_$9168_memory_ptr__to_t_struct$_DepositUtilityContracts_$9168_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(mload(value0), _1))\n        mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), _1))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n        let value_2 := calldataload(add(headStart, 96))\n        validator_revert_address(value_2)\n        value3 := value_2\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n        value7 := calldataload(add(headStart, 224))\n    }\n    function abi_decode_tuple_t_addresst_uint64(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := abi_decode_uint64(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_addresst_boolt_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_1)\n        value2 := value_1\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_10657174ead1fc3dc6d1d3f881b335facfc9095796fd15a08f7c17697cf4bb24__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"Admin cannot be zero address\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function increment_t_uint8(value) -> ret\n    {\n        let value_1 := and(value, 0xff)\n        if eq(value_1, 0xff)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value_1, 1)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_stringliteral_eb80a7fbdea4724cc71e9cf3e76877c08c64fe97e0679eed59f1a4b8b2232a61__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"BridgePool cannot be zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fdfd700e2e8a448a738d802d07d7a1972ac9ed34bd650165b21b4c3c664fc4ee__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"L2 token cannot be zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_55d4ad2cf4443e2af59cf6b21001e8b7a5ae06c9a5e8b123d0770ecd036b39c7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"L1Token token not whitelisted\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_contract$_IERC20_$1406_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b53919485aae24a1d227ecd028e0dd4b92a07ce24a3b93dcdce8aeee65148128__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"Bridge pool has different L1 tok\")\n        mstore(add(headStart, 96), \"en\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_56769370f57b03c035ba3a336601bde3fa507551f184c54555b7d50430f62caf__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Identifier not registered\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3a610a3cd09cf513fbc9158d032d260638a50685d0b793f49a43b2851caa0b59__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"Invalid deposit or messenger con\")\n        mstore(add(headStart, 96), \"tract\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_1b7a62b057ae2f0c5b538e3b9da024040f4d76b9bfdee91e00e3deb4698797e0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"Wrong number of ETH sent\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        let _2 := 32\n        mstore(add(headStart, _2), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), 224)\n        let length := mload(value6)\n        mstore(add(headStart, 224), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _2) }\n        {\n            mstore(add(add(headStart, i), 256), mload(add(add(value6, i), _2)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 256), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 256)\n    }\n    function abi_encode_tuple_t_stringliteral_5f70782f56e75aa7a030567ff447a0f4f1c2357a245311a14b417ebd8e079d94__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Liveness too large\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2d7198fed6d004b02a2f82447437df9fbd1d3213d4970244d04813078e7dc5a0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Liveness cannot be 0\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600436106101435760003560e01c80638da5cb5b116100c0578063b9a3c84c11610074578063bfdb388211610059578063bfdb388214610463578063c73a32c314610476578063f2fde38b146104b857600080fd5b8063b9a3c84c146103a7578063bf06c19a146103d457600080fd5b806394bdf812116100a557806394bdf81214610347578063aae3863e14610367578063b09158501461038757600080fd5b80638da5cb5b146102e8578063934441271461033457600080fd5b806363e463f4116101175780637998a1c4116100fc5780637998a1c4146102095780637d726c751461022d5780637eb4fa731461024057600080fd5b806363e463f4146101d4578063715018a6146101f457600080fd5b8062c99206146101485780630a69da281461016a578063173684c51461017d57806350a7c20e146101b4575b600080fd5b34801561015457600080fd5b5061016861016336600461241e565b6104d8565b005b610168610178366004612469565b6105e3565b34801561018957600080fd5b5060045461019a9063ffffffff1681565b60405163ffffffff90911681526020015b60405180910390f35b3480156101c057600080fd5b506101686101cf3660046124e8565b6108aa565b3480156101e057600080fd5b506101686101ef3660046125dd565b610abb565b34801561020057600080fd5b50610168610b7a565b34801561021557600080fd5b5061021f60055481565b6040519081526020016101ab565b61016861023b366004612622565b610c6a565b34801561024c57600080fd5b506102b461025b36600461241e565b6040805180820190915260008082526020820152506000908152600260209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff9081168452600190910154169082015290565b60408051825173ffffffffffffffffffffffffffffffffffffffff90811682526020938401511692810192909252016101ab565b3480156102f457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ab565b61016861034236600461264b565b610eaf565b34801561035357600080fd5b506101686103623660046126c2565b611502565b34801561037357600080fd5b506101686103823660046126f7565b611693565b34801561039357600080fd5b506101686103a2366004612739565b61182b565b3480156103b357600080fd5b5060015461030f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103e057600080fd5b506104366103ef366004612754565b73ffffffffffffffffffffffffffffffffffffffff918216600081815260036020818152604080842095845285825283205493909252905260019091015490821692911690565b6040805173ffffffffffffffffffffffffffffffffffffffff9384168152929091166020830152016101ab565b61016861047136600461278e565b6118ea565b34801561048257600080fd5b5060045461049f90640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ab565b3480156104c457600080fd5b506101686104d33660046127f3565b611bfe565b60005473ffffffffffffffffffffffffffffffffffffffff16331461055e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610566611daf565b610593600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c81611e35565b6105e0600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b60008681526002602052604090208054600190910154879161069f9173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b6106a7611daf565b6106d4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff8616610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610555565b6000878152600260205260409081902060018101549054915173ffffffffffffffffffffffffffffffffffffffff898116602483015261081a939281169289929116903390899089908990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fde7eba7800000000000000000000000000000000000000000000000000000000179052612026565b60405173ffffffffffffffffffffffffffffffffffffffff87169088907fedd8c3ef4433a93a0049a93cb3e6003b2909b8c337b716e016f73d9264d0575f90600090a36108a1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461092b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b610933611daf565b610960600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b60005b82518160ff161015610a2457828160ff168151811061098457610984612810565b60209081029190910101516040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015290911690638f28397090602401600060405180830381600087803b1580156109f957600080fd5b505af1158015610a0d573d6000803e3d6000fd5b505050508080610a1c9061283f565b915050610963565b508073ffffffffffffffffffffffffffffffffffffffff167fb602b0c040b1aa5c1117626e1f378f960b43fa9dddccaffdc88591092acc9cf483604051610a6b9190612886565b60405180910390a2610ab7600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b5050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b610b44611daf565b610b71600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c8161212b565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b600086815260026020526040902080546001909101548791610d269173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b610d2e611daf565b610d5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6000878152600260205260409081902060018101549054915167ffffffffffffffff89166024820152610e2c9273ffffffffffffffffffffffffffffffffffffffff9283169289929116903390899089908990604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2ec35b3100000000000000000000000000000000000000000000000000000000179052612026565b60405167ffffffffffffffff8716815287907f9c10783ffe02b4c29472a26771187a113643b69290dab9b0c7f00ad0aff416f19060200160405180910390a26108a1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b600088815260026020526040902080546001909101548991610f6b9173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b610f73611daf565b610fa0600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff8616611043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f427269646765506f6f6c2063616e6e6f74206265207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610555565b73ffffffffffffffffffffffffffffffffffffffff87166110c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4c3220746f6b656e2063616e6e6f74206265207a65726f2061646472657373006044820152606401610555565b6110c861226d565b6040517f3a3ab67200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301529190911690633a3ab6729060240160206040518083038186803b15801561113157600080fd5b505afa158015611145573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116991906128e0565b6111cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4c31546f6b656e20746f6b656e206e6f742077686974656c69737465640000006044820152606401610555565b8773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b815260040160206040518083038186803b15801561122c57600080fd5b505afa158015611240573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126491906128fd565b73ffffffffffffffffffffffffffffffffffffffff1614611307576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f42726964676520706f6f6c2068617320646966666572656e74204c3120746f6b60448201527f656e0000000000000000000000000000000000000000000000000000000000006064820152608401610555565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526003602090815260408083208e845280835281842080548e88167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600192830180548f8a1692168217905560029094529382902090810154905491516024810195909552604485019390935260648401919091526114359391821692899291909116903390899089908990608401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f4dedca2800000000000000000000000000000000000000000000000000000000179052612026565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f4d34491ed5d9114c52a094ed7004a670e7bcd518f930c86d9a72d9811dc986838c6040516114ab91815260200190565b60405180910390a46114f7600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b61158b611daf565b6115b8600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f27f224ca00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8216600482015273ffffffffffffffffffffffffffffffffffffffff8316906327f224ca90602401600060405180830381600087803b15801561162957600080fd5b505af115801561163d573d6000803e3d6000fd5b505060405167ffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff851692507f2379a780c43dc12faf76871501e88b35e33155b1918b7e8787e8173938a68e6c9150602001610a6b565b60005473ffffffffffffffffffffffffffffffffffffffff163314611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b61171c611daf565b611749600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6117538282611f60565b600083815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff8087167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316811784556001909301805491871691909216811790915591519192909186917fa701872361de9bbd7f10a5f5c82ccfe3bf4a8d585403ab897afa655244534f3691a4611826600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6118b4611daf565b6118e1600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b61059c81612335565b60005473ffffffffffffffffffffffffffffffffffffffff16331461196b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b6000878152600260205260409020805460019091015488916119a69173ffffffffffffffffffffffffffffffffffffffff9182169116611f60565b6119ae611daf565b6119db600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff878116600090815260036020526040908190206001015490517f08ed5b1400000000000000000000000000000000000000000000000000000000815288151560048201529116906308ed5b1490602401600060405180830381600087803b158015611a5a57600080fd5b505af1158015611a6e573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff80891660009081526003602090815260408083208d8452825280832054600290925291829020600181015490549251918416602483018190528b151560448401529450611b5c93908116928a9291169033908a908a908a90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f563c7f6000000000000000000000000000000000000000000000000000000000179052612026565b8073ffffffffffffffffffffffffffffffffffffffff16897f4cd6451d8996d5cf60acf25b65a82bddaaf576a2d664855bbe7bedf3e82a58b189604051611ba7911515815260200190565b60405180910390a350611bf4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b5050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610555565b73ffffffffffffffffffffffffffffffffffffffff8116611d22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610555565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005474010000000000000000000000000000000000000000900460ff16611e33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610555565b565b611e3d6123a7565b73ffffffffffffffffffffffffffffffffffffffff166390978d1b826040518263ffffffff1660e01b8152600401611e7791815260200190565b60206040518083038186803b158015611e8f57600080fd5b505afa158015611ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec791906128e0565b611f2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4964656e746966696572206e6f742072656769737465726564000000000000006044820152606401610555565b600581905560405181907f4b924bf6f3485cd9c93a9734e5916e32005eb2f8af99b1f14b2cc1d2ee04dac990600090a250565b73ffffffffffffffffffffffffffffffffffffffff821615801590611f9a575073ffffffffffffffffffffffffffffffffffffffff811615155b610ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f496e76616c6964206465706f736974206f72206d657373656e67657220636f6e60448201527f74726163740000000000000000000000000000000000000000000000000000006064820152608401610555565b34871461208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f57726f6e67206e756d626572206f66204554482073656e7400000000000000006044820152606401610555565b6040517f9e353c7000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891690639e353c709089906120ef908a908a9084908b908b908b908b9060040161291a565b6000604051808303818588803b15801561210857600080fd5b505af115801561211c573d6000803e3d6000fd5b50505050505050505050505050565b63bb7448008163ffffffff161061219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4c6976656e65737320746f6f206c6172676500000000000000000000000000006044820152606401610555565b60008163ffffffff161161220e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4c6976656e6573732063616e6e6f7420626520300000000000000000000000006044820152606401610555565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff83169081179091556040517f18c2dabb108f62fad5fa139a7313bd221f388dc0b09727624af21ddfcf76cbaa90600090a250565b6001546040517faafd5e400000000000000000000000000000000000000000000000000000000081527f436f6c6c61746572616c57686974656c69737400000000000000000000000000600482015260009173ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024015b60206040518083038186803b1580156122f857600080fd5b505afa15801561230c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233091906128fd565b905090565b600480547fffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffff1664010000000067ffffffffffffffff84811682029290921792839055604051920416907facfe7e537e15ef4781402154351bc868c74852d83f3cc95d570a290b2c5a4f9990600090a250565b6001546040517faafd5e400000000000000000000000000000000000000000000000000000000081527f4964656e74696669657257686974656c69737400000000000000000000000000600482015260009173ffffffffffffffffffffffffffffffffffffffff169063aafd5e40906024016122e0565b60006020828403121561243057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e057600080fd5b803561246481612437565b919050565b60008060008060008060c0878903121561248257600080fd5b86359550602087013561249481612437565b95989597505050506040840135936060810135936080820135935060a0909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156124fb57600080fd5b823567ffffffffffffffff8082111561251357600080fd5b818501915085601f83011261252757600080fd5b813560208282111561253b5761253b6124b9565b8160051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110868211171561257e5761257e6124b9565b60405292835281830193508481018201928984111561259c57600080fd5b948201945b838610156125c1576125b286612459565b855294820194938201936125a1565b96506125d09050878201612459565b9450505050509250929050565b6000602082840312156125ef57600080fd5b813563ffffffff8116811461260357600080fd5b9392505050565b803567ffffffffffffffff8116811461246457600080fd5b60008060008060008060c0878903121561263b57600080fd5b863595506124946020880161260a565b600080600080600080600080610100898b03121561266857600080fd5b88359750602089013561267a81612437565b9650604089013561268a81612437565b9550606089013561269a81612437565b979a969950949760808101359660a0820135965060c0820135955060e0909101359350915050565b600080604083850312156126d557600080fd5b82356126e081612437565b91506126ee6020840161260a565b90509250929050565b60008060006060848603121561270c57600080fd5b83359250602084013561271e81612437565b9150604084013561272e81612437565b809150509250925092565b60006020828403121561274b57600080fd5b6126038261260a565b6000806040838503121561276757600080fd5b823561277281612437565b946020939093013593505050565b80151581146105e057600080fd5b600080600080600080600060e0888a0312156127a957600080fd5b8735965060208801356127bb81612437565b955060408801356127cb81612780565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60006020828403121561280557600080fd5b813561260381612437565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561287d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60010192915050565b6020808252825182820181905260009190848201906040850190845b818110156128d457835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016128a2565b50909695505050505050565b6000602082840312156128f257600080fd5b815161260381612780565b60006020828403121561290f57600080fd5b815161260381612437565b600073ffffffffffffffffffffffffffffffffffffffff808a1683526020818a16818501528860408501528760608501528660808501528560a085015260e060c0850152845191508160e085015260005b82811015612988578581018201518582016101000152810161296b565b8281111561299b57600061010084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101610100019897505050505050505056fea2646970667358221220bf43b3df2c076bc2dfd2e8bc07869817d88fc623cb74d6ef0e1e69abd273aecf64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x143 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xB9A3C84C GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xBFDB3882 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xBFDB3882 EQ PUSH2 0x463 JUMPI DUP1 PUSH4 0xC73A32C3 EQ PUSH2 0x476 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB9A3C84C EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0xBF06C19A EQ PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x94BDF812 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x94BDF812 EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0xAAE3863E EQ PUSH2 0x367 JUMPI DUP1 PUSH4 0xB0915850 EQ PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0x93444127 EQ PUSH2 0x334 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x63E463F4 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x7998A1C4 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x7998A1C4 EQ PUSH2 0x209 JUMPI DUP1 PUSH4 0x7D726C75 EQ PUSH2 0x22D JUMPI DUP1 PUSH4 0x7EB4FA73 EQ PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x63E463F4 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH3 0xC99206 EQ PUSH2 0x148 JUMPI DUP1 PUSH4 0xA69DA28 EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0x173684C5 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0x50A7C20E EQ PUSH2 0x1B4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x154 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x163 CALLDATASIZE PUSH1 0x4 PUSH2 0x241E JUMP JUMPDEST PUSH2 0x4D8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0x2469 JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x19A SWAP1 PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x1CF CALLDATASIZE PUSH1 0x4 PUSH2 0x24E8 JUMP JUMPDEST PUSH2 0x8AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x1EF CALLDATASIZE PUSH1 0x4 PUSH2 0x25DD JUMP JUMPDEST PUSH2 0xABB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0xB7A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21F PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AB JUMP JUMPDEST PUSH2 0x168 PUSH2 0x23B CALLDATASIZE PUSH1 0x4 PUSH2 0x2622 JUMP JUMPDEST PUSH2 0xC6A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B4 PUSH2 0x25B CALLDATASIZE PUSH1 0x4 PUSH2 0x241E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP5 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD AND SWAP1 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD MLOAD AND SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE ADD PUSH2 0x1AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AB JUMP JUMPDEST PUSH2 0x168 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x264B JUMP JUMPDEST PUSH2 0xEAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x353 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x362 CALLDATASIZE PUSH1 0x4 PUSH2 0x26C2 JUMP JUMPDEST PUSH2 0x1502 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x382 CALLDATASIZE PUSH1 0x4 PUSH2 0x26F7 JUMP JUMPDEST PUSH2 0x1693 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x393 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x3A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2739 JUMP JUMPDEST PUSH2 0x182B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0x30F SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436 PUSH2 0x3EF CALLDATASIZE PUSH1 0x4 PUSH2 0x2754 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP6 DUP5 MSTORE DUP6 DUP3 MSTORE DUP4 KECCAK256 SLOAD SWAP4 SWAP1 SWAP3 MSTORE SWAP1 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD SWAP1 DUP3 AND SWAP3 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1AB JUMP JUMPDEST PUSH2 0x168 PUSH2 0x471 CALLDATASIZE PUSH1 0x4 PUSH2 0x278E JUMP JUMPDEST PUSH2 0x18EA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 SLOAD PUSH2 0x49F SWAP1 PUSH5 0x100000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH2 0x4D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x27F3 JUMP JUMPDEST PUSH2 0x1BFE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x55E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x566 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x593 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x59C DUP2 PUSH2 0x1E35 JUMP JUMPDEST PUSH2 0x5E0 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x664 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP8 SWAP2 PUSH2 0x69F SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0x6A7 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x6D4 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH2 0x751 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41646D696E2063616E6E6F74206265207A65726F206164647265737300000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SLOAD SWAP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH2 0x81A SWAP4 SWAP3 DUP2 AND SWAP3 DUP10 SWAP3 SWAP2 AND SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDE7EBA7800000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2026 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP9 SWAP1 PUSH32 0xEDD8C3EF4433A93A0049A93CB3E6003B2909B8C337B716E016F73D9264D0575F SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH2 0x8A1 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x92B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x933 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x960 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0xA24 JUMPI DUP3 DUP2 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x984 JUMPI PUSH2 0x984 PUSH2 0x2810 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x8F28397000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 SWAP2 AND SWAP1 PUSH4 0x8F283970 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 DUP1 PUSH2 0xA1C SWAP1 PUSH2 0x283F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x963 JUMP JUMPDEST POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xB602B0C040B1AA5C1117626E1F378F960B43FA9DDDCCAFFDC88591092ACC9CF4 DUP4 PUSH1 0x40 MLOAD PUSH2 0xA6B SWAP2 SWAP1 PUSH2 0x2886 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0xAB7 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xB3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0xB44 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0xB71 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x59C DUP2 PUSH2 0x212B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xBFB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xCEB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP8 SWAP2 PUSH2 0xD26 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0xD2E PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0xD5B PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SLOAD SWAP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0xE2C SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 DUP10 SWAP3 SWAP2 AND SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2EC35B3100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2026 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP8 AND DUP2 MSTORE DUP8 SWAP1 PUSH32 0x9C10783FFE02B4C29472A26771187A113643B69290DAB9B0C7F00AD0AFF416F1 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x8A1 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xF30 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP10 SWAP2 PUSH2 0xF6B SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0xF73 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0xFA0 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH2 0x1043 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x427269646765506F6F6C2063616E6E6F74206265207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x555 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x10C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C3220746F6B656E2063616E6E6F74206265207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x10C8 PUSH2 0x226D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3A3AB67200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x3A3AB672 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1145 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1169 SWAP2 SWAP1 PUSH2 0x28E0 JUMP JUMPDEST PUSH2 0x11CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C31546F6B656E20746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC01E1BD6 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x122C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1240 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1264 SWAP2 SWAP1 PUSH2 0x28FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1307 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42726964676520706F6F6C2068617320646966666572656E74204C3120746F6B PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x555 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP15 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP15 DUP9 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x1 SWAP3 DUP4 ADD DUP1 SLOAD DUP16 DUP11 AND SWAP3 AND DUP3 OR SWAP1 SSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE SWAP4 DUP3 SWAP1 KECCAK256 SWAP1 DUP2 ADD SLOAD SWAP1 SLOAD SWAP2 MLOAD PUSH1 0x24 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x44 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x64 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x1435 SWAP4 SWAP2 DUP3 AND SWAP3 DUP10 SWAP3 SWAP2 SWAP1 SWAP2 AND SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP10 SWAP1 PUSH1 0x84 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4DEDCA2800000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2026 JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4D34491ED5D9114C52A094ED7004A670E7BCD518F930C86D9A72D9811DC98683 DUP13 PUSH1 0x40 MLOAD PUSH2 0x14AB SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x14F7 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1583 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x158B PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x15B8 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x27F224CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x27F224CA SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1629 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x163D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP3 POP PUSH32 0x2379A780C43DC12FAF76871501E88B35E33155B1918B7E8787E8173938A68E6C SWAP2 POP PUSH1 0x20 ADD PUSH2 0xA6B JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1714 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x171C PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x1749 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x1753 DUP3 DUP3 PUSH2 0x1F60 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND DUP2 OR DUP5 SSTORE PUSH1 0x1 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP2 DUP8 AND SWAP2 SWAP1 SWAP3 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 SWAP3 SWAP1 SWAP2 DUP7 SWAP2 PUSH32 0xA701872361DE9BBD7F10A5F5C82CCFE3BF4A8D585403AB897AFA655244534F36 SWAP2 LOG4 PUSH2 0x1826 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x18AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH2 0x18B4 PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x18E1 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x59C DUP2 PUSH2 0x2335 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x196B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD DUP9 SWAP2 PUSH2 0x19A6 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 AND PUSH2 0x1F60 JUMP JUMPDEST PUSH2 0x19AE PUSH2 0x1DAF JUMP JUMPDEST PUSH2 0x19DB PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 MLOAD PUSH32 0x8ED5B1400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE DUP9 ISZERO ISZERO PUSH1 0x4 DUP3 ADD MSTORE SWAP2 AND SWAP1 PUSH4 0x8ED5B14 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A6E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x2 SWAP1 SWAP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SLOAD SWAP3 MLOAD SWAP2 DUP5 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE DUP12 ISZERO ISZERO PUSH1 0x44 DUP5 ADD MSTORE SWAP5 POP PUSH2 0x1B5C SWAP4 SWAP1 DUP2 AND SWAP3 DUP11 SWAP3 SWAP2 AND SWAP1 CALLER SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x64 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x563C7F6000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x2026 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH32 0x4CD6451D8996D5CF60ACF25B65A82BDDAAF576A2D664855BBE7BEDF3E82A58B1 DUP10 PUSH1 0x40 MLOAD PUSH2 0x1BA7 SWAP2 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x1BF4 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1C7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1D22 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1E33 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x1E3D PUSH2 0x23A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x90978D1B DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1E77 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EA3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EC7 SWAP2 SWAP1 PUSH2 0x28E0 JUMP JUMPDEST PUSH2 0x1F2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4964656E746966696572206E6F74207265676973746572656400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x5 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x4B924BF6F3485CD9C93A9734E5916E32005EB2F8AF99B1F14B2CC1D2EE04DAC9 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F9A JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO ISZERO JUMPDEST PUSH2 0xAB7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206465706F736974206F72206D657373656E67657220636F6E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7472616374000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x555 JUMP JUMPDEST CALLVALUE DUP8 EQ PUSH2 0x208F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57726F6E67206E756D626572206F66204554482073656E740000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x9E353C7000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 PUSH4 0x9E353C70 SWAP1 DUP10 SWAP1 PUSH2 0x20EF SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP5 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x291A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x211C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0xBB744800 DUP2 PUSH4 0xFFFFFFFF AND LT PUSH2 0x219E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6976656E65737320746F6F206C617267650000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH4 0xFFFFFFFF AND GT PUSH2 0x220E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C6976656E6573732063616E6E6F742062652030000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x555 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 AND PUSH4 0xFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x18C2DABB108F62FAD5FA139A7313BD221F388DC0B09727624AF21DDFCF76CBAA SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xAAFD5E4000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x436F6C6C61746572616C57686974656C69737400000000000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x230C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2330 SWAP2 SWAP1 PUSH2 0x28FD JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFF AND PUSH5 0x100000000 PUSH8 0xFFFFFFFFFFFFFFFF DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND SWAP1 PUSH32 0xACFE7E537E15EF4781402154351BC868C74852D83F3CC95D570A290B2C5A4F99 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0xAAFD5E4000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x4964656E74696669657257686974656C69737400000000000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2464 DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2494 DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x24FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 DUP3 DUP3 GT ISZERO PUSH2 0x253B JUMPI PUSH2 0x253B PUSH2 0x24B9 JUMP JUMPDEST DUP2 PUSH1 0x5 SHL PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x3F DUP4 ADD AND DUP2 ADD DUP2 DUP2 LT DUP7 DUP3 GT OR ISZERO PUSH2 0x257E JUMPI PUSH2 0x257E PUSH2 0x24B9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP3 DUP4 MSTORE DUP2 DUP4 ADD SWAP4 POP DUP5 DUP2 ADD DUP3 ADD SWAP3 DUP10 DUP5 GT ISZERO PUSH2 0x259C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 DUP3 ADD SWAP5 JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x25C1 JUMPI PUSH2 0x25B2 DUP7 PUSH2 0x2459 JUMP JUMPDEST DUP6 MSTORE SWAP5 DUP3 ADD SWAP5 SWAP4 DUP3 ADD SWAP4 PUSH2 0x25A1 JUMP JUMPDEST SWAP7 POP PUSH2 0x25D0 SWAP1 POP DUP8 DUP3 ADD PUSH2 0x2459 JUMP JUMPDEST SWAP5 POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2603 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x263B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH2 0x2494 PUSH1 0x20 DUP9 ADD PUSH2 0x260A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x267A DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x268A DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH2 0x269A DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP7 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP7 POP PUSH1 0xC0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xE0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x26E0 DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP2 POP PUSH2 0x26EE PUSH1 0x20 DUP5 ADD PUSH2 0x260A JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x270C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x271E DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x272E DUP2 PUSH2 0x2437 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x274B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2603 DUP3 PUSH2 0x260A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2767 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2772 DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x27A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x27BB DUP2 PUSH2 0x2437 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x27CB DUP2 PUSH2 0x2780 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP6 SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2805 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2603 DUP2 PUSH2 0x2437 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP2 EQ ISZERO PUSH2 0x287D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28D4 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x28A2 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x28F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2603 DUP2 PUSH2 0x2780 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x290F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2603 DUP2 PUSH2 0x2437 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP11 AND DUP2 DUP6 ADD MSTORE DUP9 PUSH1 0x40 DUP6 ADD MSTORE DUP8 PUSH1 0x60 DUP6 ADD MSTORE DUP7 PUSH1 0x80 DUP6 ADD MSTORE DUP6 PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0xE0 PUSH1 0xC0 DUP6 ADD MSTORE DUP5 MLOAD SWAP2 POP DUP2 PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2988 JUMPI DUP6 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH2 0x100 ADD MSTORE DUP2 ADD PUSH2 0x296B JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x299B JUMPI PUSH1 0x0 PUSH2 0x100 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH2 0x100 ADD SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF NUMBER 0xB3 0xDF 0x2C SMOD PUSH12 0xC2DFD2E8BC07869817D88FC6 0x23 0xCB PUSH21 0xD6EF0E1E69ABD273AECF64736F6C63430008090033 ",
                            "sourceMap": "924:17324:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3777:120;;;;;;;;;;-1:-1:-1;3777:120:43;;;;;:::i;:::-;;:::i;:::-;;7806:729;;;;;;:::i;:::-;;:::i;1960:47::-;;;;;;;;;;-1:-1:-1;1960:47:43;;;;;;;;;;;1266:10:66;1254:23;;;1236:42;;1224:2;1209:18;1960:47:43;;;;;;;;5910:323;;;;;;;;;;-1:-1:-1;5910:323:43;;;;;:::i;:::-;;:::i;4177:141::-;;;;;;;;;;-1:-1:-1;4177:141:43;;;;;:::i;:::-;;:::i;1700:145:5:-;;;;;;;;;;;;;:::i;2057:34:43:-;;;;;;;;;;;;;;;;;;;3166:25:66;;;3154:2;3139:18;2057:34:43;3020:177:66;9316:714:43;;;;;;:::i;:::-;;:::i;15134:157::-;;;;;;;;;;-1:-1:-1;15134:157:43;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;15258:26:43;;;;:17;:26;;;;;;;;;15251:33;;;;;;;;;;;;;;;;;;;;;;;;;;;15134:157;;;;;4406:13:66;;4333:42;4402:22;;;4384:41;;4485:4;4473:17;;;4467:24;4463:33;4441:20;;;4434:63;;;;4296:18;15134:157:43;4095:408:66;1068:85:5;;;;;;;;;;-1:-1:-1;1114:7:5;1140:6;;;1068:85;;;4684:42:66;4672:55;;;4654:74;;4642:2;4627:18;1068:85:5;4508:226:66;13510:1485:43;;;;;;:::i;:::-;;:::i;6638:241::-;;;;;;;;;;-1:-1:-1;6638:241:43;;;;;:::i;:::-;;:::i;5136:460::-;;;;;;;;;;-1:-1:-1;5136:460:43;;;;;:::i;:::-;;:::i;4619:139::-;;;;;;;;;;-1:-1:-1;4619:139:43;;;;;:::i;:::-;;:::i;1074:30::-;;;;;;;;;;-1:-1:-1;1074:30:43;;;;;;;;15297:277;;;;;;;;;;-1:-1:-1;15297:277:43;;;;;:::i;:::-;15481:27;;;;15422:15;15481:27;;;:18;:27;;;;;;;;:45;;;;;;;;;15528:27;;;;;;15481:45;15528:38;;;;15481:45;;;;15528:38;;;15297:277;;;;;7096:42:66;7165:15;;;7147:34;;7217:15;;;;7212:2;7197:18;;7190:43;7059:18;15297:277:43;6912:327:66;10993:1049:43;;;;;;:::i;:::-;;:::i;2013:38::-;;;;;;;;;;-1:-1:-1;2013:38:43;;;;;;;;;;;;;;8272:18:66;8260:31;;;8242:50;;8230:2;8215:18;2013:38:43;8098:200:66;1994:240:5;;;;;;;;;;-1:-1:-1;1994:240:5;;;;;:::i;:::-;;:::i;3777:120:43:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;;;;;;;;;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;3863:27:43::2;3878:11;3863:14;:27::i;:::-;1384:20:28::1;2658:11:::0;:18;;;;;;;;2477:206;1384:20:::1;3777:120:43::0;:::o;7806:729::-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;2390:26:43::1;::::0;;;:17:::1;:26;::::0;;;;:42;;;2446:44;;::::1;::::0;8038:7;;2351:149:::1;::::0;2390:42:::1;::::0;;::::1;::::0;2446:44:::1;2351:25;:149::i;:::-;1317:19:28::2;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::2;8080:19:43::3;::::0;::::3;8072:60;;;::::0;::::3;::::0;;9118:2:66;8072:60:43::3;::::0;::::3;9100:21:66::0;9157:2;9137:18;;;9130:30;9196;9176:18;;;9169:58;9244:18;;8072:60:43::3;8916:352:66::0;8072:60:43::3;8169:26;::::0;;;:17:::3;:26;::::0;;;;;;:44:::3;::::0;::::3;::::0;8252:42;;8406:62;;8169:44:::3;4672:55:66::0;;;8406:62:43::3;::::0;::::3;4654:74:66::0;8142:336:43::3;::::0;8169:44;;::::3;::::0;8227:11;;8252:42;::::3;::::0;8308:10:::3;::::0;8332:5;;8351:10;;8375:17;;4627:18:66;;8406:62:43::3;::::0;;;;;::::3;::::0;;;;;;::::3;::::0;::::3;::::0;;::::3;;;;::::0;;8142:13:::3;:336::i;:::-;8493:35;::::0;::::3;::::0;::::3;::::0;8513:7;;8493:35:::3;::::0;;;::::3;1384:20:28::2;2658:11:::0;:18;;;;;;;;2477:206;1384:20:::2;1350:1:5::1;7806:729:43::0;;;;;;:::o;5910:323::-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;6038:7:43::2;6033:129;6055:11;:18;6051:1;:22;;;6033:129;;;6114:11;6126:1;6114:14;;;;;;;;;;:::i;:::-;;::::0;;::::2;::::0;;;;;;6094:57:::2;::::0;;;;:47:::2;4672:55:66::0;;;6094:57:43::2;::::0;::::2;4654:74:66::0;6094:47:43;;::::2;::::0;::::2;::::0;4627:18:66;;6094:57:43::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;6075:3;;;;;:::i;:::-;;;;6033:129;;;;6217:8;6176:50;;;6204:11;6176:50;;;;;;:::i;:::-;;;;;;;;1384:20:28::1;2658:11:::0;:18;;;;;;;;2477:206;1384:20:::1;5910:323:43::0;;:::o;4177:141::-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;4273:38:43::2;4302:8;4273:28;:38::i;1700:145:5:-:0;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;1806:1:::1;1790:6:::0;;1769:40:::1;::::0;::::1;1790:6:::0;;::::1;::::0;1769:40:::1;::::0;1806:1;;1769:40:::1;1836:1;1819:19:::0;;;::::1;::::0;;1700:145::o;9316:714:43:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;2390:26:43::1;::::0;;;:17:::1;:26;::::0;;;;:42;;;2446:44;;::::1;::::0;9566:7;;2351:149:::1;::::0;2390:42:::1;::::0;;::::1;::::0;2446:44:::1;2351:25;:149::i;:::-;1317:19:28::2;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::2;9627:26:43::3;::::0;;;:17:::3;:26;::::0;;;;;;:44:::3;::::0;::::3;::::0;9710:42;;9864:80;;8272:18:66;8260:31;;9864:80:43::3;::::0;::::3;8242:50:66::0;9600:354:43::3;::::0;9627:44:::3;::::0;;::::3;::::0;9685:11;;9710:42;::::3;::::0;9766:10:::3;::::0;9790:5;;9809:10;;9833:17;;8215:18:66;;9864:80:43::3;::::0;;;;;::::3;::::0;;;;;;::::3;::::0;::::3;::::0;;::::3;;;;::::0;;9600:13:::3;:354::i;:::-;9969:54;::::0;8272:18:66;8260:31;;8242:50;;9993:7:43;;9969:54:::3;::::0;8230:2:66;8215:18;9969:54:43::3;;;;;;;1384:20:28::2;2658:11:::0;:18;;;;;;;;2477:206;13510:1485:43;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;2390:26:43::1;::::0;;;:17:::1;:26;::::0;;;;:42;;;2446:44;;::::1;::::0;13792:7;;2351:149:::1;::::0;2390:42:::1;::::0;;::::1;::::0;2446:44:::1;2351:25;:149::i;:::-;1317:19:28::2;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::2;13834:24:43::3;::::0;::::3;13826:70;;;::::0;::::3;::::0;;10684:2:66;13826:70:43::3;::::0;::::3;10666:21:66::0;10723:2;10703:18;;;10696:30;10762:34;10742:18;;;10735:62;10833:3;10813:18;;;10806:31;10854:19;;13826:70:43::3;10482:397:66::0;13826:70:43::3;13914:21;::::0;::::3;13906:65;;;::::0;::::3;::::0;;11086:2:66;13906:65:43::3;::::0;::::3;11068:21:66::0;11125:2;11105:18;;;11098:30;11164:33;11144:18;;;11137:61;11215:18;;13906:65:43::3;10884:355:66::0;13906:65:43::3;13989:25;:23;:25::i;:::-;:57;::::0;;;;:39:::3;4672:55:66::0;;;13989:57:43::3;::::0;::::3;4654:74:66::0;13989:39:43;;;::::3;::::0;::::3;::::0;4627:18:66;;13989:57:43::3;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13981:99;;;::::0;::::3;::::0;;11696:2:66;13981:99:43::3;::::0;::::3;11678:21:66::0;11735:2;11715:18;;;11708:30;11774:31;11754:18;;;11747:59;11823:18;;13981:99:43::3;11494:353:66::0;13981:99:43::3;14153:7;14099:61;;14127:10;14107:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14099:61;;;14091:108;;;::::0;::::3;::::0;;12325:2:66;14091:108:43::3;::::0;::::3;12307:21:66::0;12364:2;12344:18;;;12337:30;12403:34;12383:18;;;12376:62;12474:4;12454:18;;;12447:32;12496:19;;14091:108:43::3;12123:398:66::0;14091:108:43::3;14334:27;::::0;;::::3;14282:49;14334:27:::0;;;:18:::3;:27;::::0;;;;;;;14375:38;;;;;;;;;:48;;;;::::3;::::0;;;::::3;::::0;::::3;::::0;;;;14485:31;;::::3;:44:::0;;;;::::3;::::0;::::3;::::0;::::3;::::0;;14577:17:::3;:26:::0;;;;;;;:44;;::::3;::::0;14660:42;;14814:96;;::::3;::::0;::::3;12789:34:66::0;;;;12839:18;;;12832:43;;;;12891:18;;;12884:43;;;;14550:370:43::3;::::0;14577:44;;::::3;::::0;14635:11;;14660:42;;;::::3;::::0;14716:10:::3;::::0;14740:5;;14759:10;;14783:17;;12701:18:66;;14814:96:43::3;::::0;;;;;::::3;::::0;;;;;;::::3;::::0;::::3;::::0;;::::3;;;;::::0;;14550:13:::3;:370::i;:::-;14977:10;14935:53;;14968:7;14935:53;;14959:7;14935:53;;;14950:7;14935:53;;;;3166:25:66::0;;3154:2;3139:18;;3020:177;14935:53:43::3;;;;;;;;1384:20:28::2;2658:11:::0;:18;;;;;;;;2477:206;1384:20:::2;1350:1:5::1;13510:1485:43::0;;;;;;;;:::o;6638:241::-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;6752:67:43::2;::::0;;;;8272:18:66;8260:31;;6752:67:43::2;::::0;::::2;8242:50:66::0;6752:53:43::2;::::0;::::2;::::0;::::2;::::0;8215:18:66;;6752:67:43::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;6834:38:43::2;::::0;8272:18:66;8260:31;;8242:50;;6834:38:43::2;::::0;::::2;::::0;-1:-1:-1;6834:38:43::2;::::0;-1:-1:-1;8230:2:66;8215:18;6834:38:43::2;8098:200:66::0;5136:460:43;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;5305:61:43::2;5331:15;5348:17;5305:25;:61::i;:::-;5376:26;::::0;;;:17:::2;:26;::::0;;;;;:60;;::::2;::::0;;::::2;::::0;;;::::2;::::0;::::2;::::0;;;5446:44;;::::2;:64:::0;;;;::::2;::::0;;;::::2;::::0;::::2;::::0;;;5525;;5446;;5376:60;;5394:7;;5525:64:::2;::::0;::::2;1384:20:28::1;2658:11:::0;:18;;;;;;;;2477:206;1384:20:::1;5136:460:43::0;;;:::o;4619:139::-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;4714:37:43::2;4734:16;4714:19;:37::i;10993:1049::-:0;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;2390:26:43::1;::::0;;;:17:::1;:26;::::0;;;;:42;;;2446:44;;::::1;::::0;11264:7;;2351:149:::1;::::0;2390:42:::1;::::0;;::::1;::::0;2446:44:::1;2351:25;:149::i;:::-;1317:19:28::2;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::2;11363:27:43::3;::::0;;::::3;;::::0;;;:18:::3;:27;::::0;;;;;;:38:::3;;::::0;11343:93;;;;;13285:14:66;;13278:22;11343:93:43::3;::::0;::::3;13260:41:66::0;11363:38:43;::::3;::::0;11343:76:::3;::::0;13233:18:66;;11343:93:43::3;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;-1:-1:-1::0;;;11557:27:43::3;::::0;;::::3;11539:15;11557:27:::0;;;:18:::3;:27;::::0;;;;;;;:45;;;;;;;;;11639:17:::3;:26:::0;;;;;;;11557:45;11639:44;::::3;::::0;11722:42;;11876:84;;11557:45;;::::3;11876:84;::::0;::::3;13480:74:66::0;;;13597:14;;13590:22;13570:18;;;13563:50;11557:45:43;-1:-1:-1;11612:358:43::3;::::0;11639:44;;::::3;::::0;11697:11;;11722:42;::::3;::::0;11778:10:::3;::::0;11802:5;;11821:10;;11845:17;;13453:18:66;;11876:84:43::3;::::0;;;;;::::3;::::0;;;;;;::::3;::::0;::::3;::::0;;::::3;;;;::::0;;11612:13:::3;:358::i;:::-;12010:7;11985:50;;12001:7;11985:50;12019:15;11985:50;;;;13285:14:66::0;13278:22;13260:41;;13248:2;13233:18;;13120:187;11985:50:43::3;;;;;;;;11288:754;1384:20:28::2;2658:11:::0;:18;;;;;;;;2477:206;1384:20:::2;1350:1:5::1;10993:1049:43::0;;;;;;;:::o;1994:240:5:-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;8757:2:66;1272:68:5;;;8739:21:66;;;8776:18;;;8769:30;8835:34;8815:18;;;8808:62;8887:18;;1272:68:5;8555:356:66;1272:68:5;2082:22:::1;::::0;::::1;2074:73;;;::::0;::::1;::::0;;13826:2:66;2074:73:5::1;::::0;::::1;13808:21:66::0;13865:2;13845:18;;;13838:30;13904:34;13884:18;;;13877:62;13975:8;13955:18;;;13948:36;14001:19;;2074:73:5::1;13624:402:66::0;2074:73:5::1;2183:6;::::0;;2162:38:::1;::::0;::::1;::::0;;::::1;::::0;2183:6;::::1;::::0;2162:38:::1;::::0;::::1;2210:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1994:240::o;2143:186:28:-;2275:11;;;;;;;2267:55;;;;;;;14233:2:66;2267:55:28;;;14215:21:66;14272:2;14252:18;;;14245:30;14311:33;14291:18;;;14284:61;14362:18;;2267:55:28;14031:355:66;2267:55:28;2143:186::o;16258:247:43:-;16329:25;:23;:25::i;:::-;:47;;;16377:11;16329:60;;;;;;;;;;;;;3166:25:66;;3154:2;3139:18;;3020:177;16329:60:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16321:98;;;;;;;14593:2:66;16321:98:43;;;14575:21:66;14632:2;14612:18;;;14605:30;14671:27;14651:18;;;14644:55;14716:18;;16321:98:43;14391:349:66;16321:98:43;16429:10;:24;;;16468:30;;16442:11;;16468:30;;;;;16258:247;:::o;17263:269::-;17395:29;;;;;;;17394:68;;-1:-1:-1;17430:31:43;;;;;17394:68;17373:152;;;;;;;14947:2:66;17373:152:43;;;14929:21:66;14986:2;14966:18;;;14959:30;15025:34;15005:18;;;14998:62;15096:7;15076:18;;;15069:35;15121:19;;17373:152:43;14745:401:66;17655:591:43;17951:9;17936:11;:24;17928:61;;;;;;;15353:2:66;17928:61:43;;;15335:21:66;15392:2;15372:18;;;15365:30;15431:26;15411:18;;;15404:54;15475:18;;17928:61:43;15151:348:66;17928:61:43;17999:240;;;;;:50;;;;;;18058:11;;17999:240;;18085:6;;18105:4;;18058:11;;18148:5;;18167:10;;18191:17;;18222:7;;17999:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17655:591;;;;;;;;:::o;16511:577::-;16880:10;16869:8;:21;;;16861:52;;;;;;;16878:2:66;16861:52:43;;;16860:21:66;16917:2;16897:18;;;16890:30;16956:20;16936:18;;;16929:48;16994:18;;16861:52:43;16676:342:66;16861:52:43;16942:1;16931:8;:12;;;16923:45;;;;;;;17225:2:66;16923:45:43;;;17207:21:66;17264:2;17244:18;;;17237:30;17303:22;17283:18;;;17276:50;17343:18;;16923:45:43;17023:344:66;16923:45:43;16978:24;:35;;;;;;;;;;;;;17028:53;;;;-1:-1:-1;;17028:53:43;16511:577;:::o;15989:263::-;16161:6;;16145:86;;;;;16194:36;16145:86;;;3166:25:66;16046::43;;16161:6;;;16145:48;;3139:18:66;;16145:86:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16083:162;;15989:263;:::o;17094:163::-;17166:15;:34;;;;;;;;;;;;;;;;;;;17215:35;;17234:15;;;;17215:35;;-1:-1:-1;;17215:35:43;17094:163;:::o;15714:269::-;15892:6;;15876:86;;;;;15925:36;15876:86;;;3166:25:66;15771:28:43;;15892:6;;;15876:48;;3139:18:66;;15876:86:43;3020:177:66;14:180;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:66;;14:180;-1:-1:-1;14:180:66:o;199:154::-;285:42;278:5;274:54;267:5;264:65;254:93;;343:1;340;333:12;358:134;426:20;;455:31;426:20;455:31;:::i;:::-;358:134;;;:::o;497:590::-;601:6;609;617;625;633;641;694:3;682:9;673:7;669:23;665:33;662:53;;;711:1;708;701:12;662:53;747:9;734:23;724:33;;807:2;796:9;792:18;779:32;820:31;845:5;820:31;:::i;:::-;497:590;;870:5;;-1:-1:-1;;;;922:2:66;907:18;;894:32;;973:2;958:18;;945:32;;1024:3;1009:19;;996:33;;-1:-1:-1;1076:3:66;1061:19;;;1048:33;;-1:-1:-1;497:590:66:o;1289:184::-;1341:77;1338:1;1331:88;1438:4;1435:1;1428:15;1462:4;1459:1;1452:15;1478:1256;1571:6;1579;1632:2;1620:9;1611:7;1607:23;1603:32;1600:52;;;1648:1;1645;1638:12;1600:52;1688:9;1675:23;1717:18;1758:2;1750:6;1747:14;1744:34;;;1774:1;1771;1764:12;1744:34;1812:6;1801:9;1797:22;1787:32;;1857:7;1850:4;1846:2;1842:13;1838:27;1828:55;;1879:1;1876;1869:12;1828:55;1915:2;1902:16;1937:4;1960:2;1956;1953:10;1950:36;;;1966:18;;:::i;:::-;2012:2;2009:1;2005:10;2044:2;2038:9;2103:66;2098:2;2094;2090:11;2086:84;2078:6;2074:97;2221:6;2209:10;2206:22;2201:2;2189:10;2186:18;2183:46;2180:72;;;2232:18;;:::i;:::-;2268:2;2261:22;2318:18;;;2352:15;;;;-1:-1:-1;2394:11:66;;;2390:20;;;2422:19;;;2419:39;;;2454:1;2451;2444:12;2419:39;2478:11;;;;2498:148;2514:6;2509:3;2506:15;2498:148;;;2580:23;2599:3;2580:23;:::i;:::-;2568:36;;2531:12;;;;2624;;;;2498:148;;;2665:6;-1:-1:-1;2690:38:66;;-1:-1:-1;2709:18:66;;;2690:38;:::i;:::-;2680:48;;;;;;1478:1256;;;;;:::o;2739:276::-;2797:6;2850:2;2838:9;2829:7;2825:23;2821:32;2818:52;;;2866:1;2863;2856:12;2818:52;2905:9;2892:23;2955:10;2948:5;2944:22;2937:5;2934:33;2924:61;;2981:1;2978;2971:12;2924:61;3004:5;2739:276;-1:-1:-1;;;2739:276:66:o;3202:171::-;3269:20;;3329:18;3318:30;;3308:41;;3298:69;;3363:1;3360;3353:12;3378:527;3481:6;3489;3497;3505;3513;3521;3574:3;3562:9;3553:7;3549:23;3545:33;3542:53;;;3591:1;3588;3581:12;3542:53;3627:9;3614:23;3604:33;;3656:37;3689:2;3678:9;3674:18;3656:37;:::i;4739:874::-;4861:6;4869;4877;4885;4893;4901;4909;4917;4970:3;4958:9;4949:7;4945:23;4941:33;4938:53;;;4987:1;4984;4977:12;4938:53;5023:9;5010:23;5000:33;;5083:2;5072:9;5068:18;5055:32;5096:31;5121:5;5096:31;:::i;:::-;5146:5;-1:-1:-1;5203:2:66;5188:18;;5175:32;5216:33;5175:32;5216:33;:::i;:::-;5268:7;-1:-1:-1;5327:2:66;5312:18;;5299:32;5340:33;5299:32;5340:33;:::i;:::-;4739:874;;;;-1:-1:-1;4739:874:66;;5446:3;5431:19;;5418:33;;5498:3;5483:19;;5470:33;;-1:-1:-1;5550:3:66;5535:19;;5522:33;;-1:-1:-1;5602:3:66;5587:19;;;5574:33;;-1:-1:-1;4739:874:66;-1:-1:-1;;4739:874:66:o;5618:319::-;5685:6;5693;5746:2;5734:9;5725:7;5721:23;5717:32;5714:52;;;5762:1;5759;5752:12;5714:52;5801:9;5788:23;5820:31;5845:5;5820:31;:::i;:::-;5870:5;-1:-1:-1;5894:37:66;5927:2;5912:18;;5894:37;:::i;:::-;5884:47;;5618:319;;;;;:::o;5942:456::-;6019:6;6027;6035;6088:2;6076:9;6067:7;6063:23;6059:32;6056:52;;;6104:1;6101;6094:12;6056:52;6140:9;6127:23;6117:33;;6200:2;6189:9;6185:18;6172:32;6213:31;6238:5;6213:31;:::i;:::-;6263:5;-1:-1:-1;6320:2:66;6305:18;;6292:32;6333:33;6292:32;6333:33;:::i;:::-;6385:7;6375:17;;;5942:456;;;;;:::o;6403:184::-;6461:6;6514:2;6502:9;6493:7;6489:23;6485:32;6482:52;;;6530:1;6527;6520:12;6482:52;6553:28;6571:9;6553:28;:::i;6592:315::-;6660:6;6668;6721:2;6709:9;6700:7;6696:23;6692:32;6689:52;;;6737:1;6734;6727:12;6689:52;6776:9;6763:23;6795:31;6820:5;6795:31;:::i;:::-;6845:5;6897:2;6882:18;;;;6869:32;;-1:-1:-1;;;6592:315:66:o;7244:118::-;7330:5;7323:13;7316:21;7309:5;7306:32;7296:60;;7352:1;7349;7342:12;7367:726;7477:6;7485;7493;7501;7509;7517;7525;7578:3;7566:9;7557:7;7553:23;7549:33;7546:53;;;7595:1;7592;7585:12;7546:53;7631:9;7618:23;7608:33;;7691:2;7680:9;7676:18;7663:32;7704:31;7729:5;7704:31;:::i;:::-;7754:5;-1:-1:-1;7811:2:66;7796:18;;7783:32;7824:30;7783:32;7824:30;:::i;:::-;7367:726;;;;-1:-1:-1;7873:7:66;;7927:2;7912:18;;7899:32;;-1:-1:-1;7978:3:66;7963:19;;7950:33;;8030:3;8015:19;;8002:33;;-1:-1:-1;8082:3:66;8067:19;;;8054:33;;-1:-1:-1;7367:726:66;-1:-1:-1;;7367:726:66:o;8303:247::-;8362:6;8415:2;8403:9;8394:7;8390:23;8386:32;8383:52;;;8431:1;8428;8421:12;8383:52;8470:9;8457:23;8489:31;8514:5;8489:31;:::i;9273:184::-;9325:77;9322:1;9315:88;9422:4;9419:1;9412:15;9446:4;9443:1;9436:15;9462:329;9499:3;9543:4;9536:5;9532:16;9572:4;9563:7;9560:17;9557:197;;;9610:77;9607:1;9600:88;9711:4;9708:1;9701:15;9739:4;9736:1;9729:15;9557:197;9783:1;9770:15;;9462:329;-1:-1:-1;;9462:329:66:o;9796:681::-;9967:2;10019:21;;;10089:13;;9992:18;;;10111:22;;;9938:4;;9967:2;10190:15;;;;10164:2;10149:18;;;9938:4;10233:218;10247:6;10244:1;10241:13;10233:218;;;10312:13;;10327:42;10308:62;10296:75;;10426:15;;;;10391:12;;;;10269:1;10262:9;10233:218;;;-1:-1:-1;10468:3:66;;9796:681;-1:-1:-1;;;;;;9796:681:66:o;11244:245::-;11311:6;11364:2;11352:9;11343:7;11339:23;11335:32;11332:52;;;11380:1;11377;11370:12;11332:52;11412:9;11406:16;11431:28;11453:5;11431:28;:::i;11852:266::-;11937:6;11990:2;11978:9;11969:7;11965:23;11961:32;11958:52;;;12006:1;12003;11996:12;11958:52;12038:9;12032:16;12057:31;12082:5;12057:31;:::i;15504:1167::-;15782:4;15811:42;15892:2;15884:6;15880:15;15869:9;15862:34;15915:2;15965;15957:6;15953:15;15948:2;15937:9;15933:18;15926:43;16005:6;16000:2;15989:9;15985:18;15978:34;16048:6;16043:2;16032:9;16028:18;16021:34;16092:6;16086:3;16075:9;16071:19;16064:35;16136:6;16130:3;16119:9;16115:19;16108:35;16180:3;16174;16163:9;16159:19;16152:32;16213:6;16207:13;16193:27;;16257:6;16251:3;16240:9;16236:19;16229:35;16282:1;16292:141;16306:6;16303:1;16300:13;16292:141;;;16402:14;;;16398:23;;16392:30;16367:17;;;16386:3;16363:27;16356:67;16321:10;;16292:141;;;16451:6;16448:1;16445:13;16442:92;;;16522:1;16516:3;16507:6;16496:9;16492:22;16488:32;16481:43;16442:92;-1:-1:-1;;16586:2:66;16574:15;16591:66;16570:88;16555:104;;;;16661:3;16551:114;;15504:1167;-1:-1:-1;;;;;;;;15504:1167:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "2152800",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "depositContracts(uint256)": "4833",
                                "finder()": "2358",
                                "identifier()": "2340",
                                "optimisticOracleLiveness()": "2370",
                                "owner()": "2342",
                                "proposerBondPct()": "2390",
                                "renounceOwnership()": "30194",
                                "setCrossDomainAdmin(uint256,address,uint256,uint256,uint256,uint256)": "infinite",
                                "setDepositContract(uint256,address,address)": "infinite",
                                "setEnableDepositsAndRelays(uint256,address,bool,uint256,uint256,uint256,uint256)": "infinite",
                                "setIdentifier(bytes32)": "infinite",
                                "setLpFeeRatePerSecond(address,uint64)": "infinite",
                                "setMinimumBridgingDelay(uint256,uint64,uint256,uint256,uint256,uint256)": "infinite",
                                "setOptimisticOracleLiveness(uint32)": "78515",
                                "setProposerBondPct(uint64)": "78569",
                                "transferBridgePoolAdmin(address[],address)": "infinite",
                                "transferOwnership(address)": "30407",
                                "whitelistToken(uint256,address,address,address,uint256,uint256,uint256,uint256)": "infinite",
                                "whitelistedTokens(address,uint256)": "4857"
                            },
                            "internal": {
                                "_getCollateralWhitelist()": "infinite",
                                "_getIdentifierWhitelist()": "infinite",
                                "_relayMessage(address,uint256,address,address,uint256,uint256,uint256,bytes memory)": "infinite",
                                "_setIdentifier(bytes32)": "infinite",
                                "_setOptimisticOracleLiveness(uint32)": "infinite",
                                "_setProposerBondPct(uint64)": "25433",
                                "_validateDepositContracts(address,address)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "depositContracts(uint256)": "7eb4fa73",
                            "finder()": "b9a3c84c",
                            "identifier()": "7998a1c4",
                            "optimisticOracleLiveness()": "173684c5",
                            "owner()": "8da5cb5b",
                            "proposerBondPct()": "c73a32c3",
                            "renounceOwnership()": "715018a6",
                            "setCrossDomainAdmin(uint256,address,uint256,uint256,uint256,uint256)": "0a69da28",
                            "setDepositContract(uint256,address,address)": "aae3863e",
                            "setEnableDepositsAndRelays(uint256,address,bool,uint256,uint256,uint256,uint256)": "bfdb3882",
                            "setIdentifier(bytes32)": "00c99206",
                            "setLpFeeRatePerSecond(address,uint64)": "94bdf812",
                            "setMinimumBridgingDelay(uint256,uint64,uint256,uint256,uint256,uint256)": "7d726c75",
                            "setOptimisticOracleLiveness(uint32)": "63e463f4",
                            "setProposerBondPct(uint64)": "b0915850",
                            "transferBridgePoolAdmin(address[],address)": "50a7c20e",
                            "transferOwnership(address)": "f2fde38b",
                            "whitelistToken(uint256,address,address,address,uint256,uint256,uint256,uint256)": "93444127",
                            "whitelistedTokens(address,uint256)": "bf06c19a"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_finder\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_optimisticOracleLiveness\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"_proposerBondPct\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_identifier\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"bridgePools\",\"type\":\"address[]\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"BridgePoolsAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"DepositsEnabled\",\"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\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetCrossDomainAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2DepositContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2MessengerContract\",\"type\":\"address\"}],\"name\":\"SetDepositContracts\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newLpFeeRatePerSecond\",\"type\":\"uint64\"}],\"name\":\"SetLpFeeRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"SetMinimumBridgingDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"liveness\",\"type\":\"uint32\"}],\"name\":\"SetOptimisticOracleLiveness\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"proposerBondPct\",\"type\":\"uint64\"}],\"name\":\"SetProposerBondPct\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"SetRelayIdentifier\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"name\":\"WhitelistToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"depositContracts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"depositContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"messengerContract\",\"type\":\"address\"}],\"internalType\":\"struct BridgeAdminInterface.DepositUtilityContracts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optimisticOracleLiveness\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposerBondPct\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"l1CallValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2GasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"name\":\"setCrossDomainAdmin\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"depositContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"messengerContract\",\"type\":\"address\"}],\"name\":\"setDepositContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"l1CallValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2GasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"name\":\"setEnableDepositsAndRelays\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_identifier\",\"type\":\"bytes32\"}],\"name\":\"setIdentifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"newLpFeeRate\",\"type\":\"uint64\"}],\"name\":\"setLpFeeRatePerSecond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumBridgingDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"l1CallValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2GasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"name\":\"setMinimumBridgingDelay\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"liveness\",\"type\":\"uint32\"}],\"name\":\"setOptimisticOracleLiveness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_proposerBondPct\",\"type\":\"uint64\"}],\"name\":\"setProposerBondPct\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"bridgePools\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferBridgePoolAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"l1CallValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2Gas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"l2GasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is responsible for making global variables accessible to BridgePool contracts, which house passive liquidity and enable relaying of L2 deposits.The owner of this contract can also call permissioned functions on registered L2 DepositBoxes.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_finder\":\"DVM finder to find other UMA ecosystem contracts.\",\"_identifier\":\"Identifier used when querying the OO for a cross bridge transfer action.\",\"_optimisticOracleLiveness\":\"Timeout that all bridging actions from L2->L1 must wait for a OptimisticOracle response.\",\"_proposerBondPct\":\"Percentage of the bridged amount that a relayer must put up as a bond.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"setCrossDomainAdmin(uint256,address,uint256,uint256,uint256,uint256)\":{\"details\":\"Only callable by the current owner.msg.value must equal to l1CallValue.\",\"params\":{\"admin\":\"New admin address to set on L2.\",\"chainId\":\"L2 network ID where Deposit contract is deployed.\",\"l1CallValue\":\"Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies depending on the L2 network that this contract sends a message to.\",\"l2Gas\":\"Gas limit to set for relayed message on L2.\",\"l2GasPrice\":\"Gas price bid to set for relayed message on L2.\",\"maxSubmissionCost\":\": Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\"}},\"setDepositContract(uint256,address,address)\":{\"details\":\"Only callable by the current owner.\",\"params\":{\"chainId\":\"L2 network ID to set addresses for.\",\"depositContract\":\"Address of L2 deposit contract.\",\"messengerContract\":\"Address of L1 helper contract that relays messages to L2.\"}},\"setEnableDepositsAndRelays(uint256,address,bool,uint256,uint256,uint256,uint256)\":{\"details\":\"Only callable by Owner of this contract. Will set the same setting in the L2 Deposit contract via the cross domain messenger.msg.value must equal to l1CallValue.\",\"params\":{\"chainId\":\"L2 network ID where Deposit contract is deployed.\",\"depositsEnabled\":\"bool to set if the deposit box should accept/reject deposits.\",\"l1CallValue\":\"Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies depending on the L2 network that this contract sends a message to.\",\"l1Token\":\"address of L1 Token to enable/disable deposits and relays for.\",\"l2Gas\":\"Gas limit to set for relayed message on L2.\",\"l2GasPrice\":\"Gas price bid to set for relayed message on L2.\",\"maxSubmissionCost\":\": Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\"}},\"setIdentifier(bytes32)\":{\"details\":\"Can only be called by the current owner.\",\"params\":{\"_identifier\":\"New identifier to set.\"}},\"setLpFeeRatePerSecond(address,uint64)\":{\"details\":\"Only callable by the current owner.\",\"params\":{\"bridgePool\":\"Bridge Pool to change LP fee rate for.\",\"newLpFeeRate\":\"The new rate to set for the `bridgePool`.\"}},\"setMinimumBridgingDelay(uint256,uint64,uint256,uint256,uint256,uint256)\":{\"details\":\"Only callable by the current owner.msg.value must equal to l1CallValue.\",\"params\":{\"chainId\":\"L2 network ID where Deposit contract is deployed.\",\"l1CallValue\":\"Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies depending on the L2 network that this contract sends a message to.\",\"l2Gas\":\"Gas limit to set for relayed message on L2.\",\"l2GasPrice\":\"Gas price bid to set for relayed message on L2.\",\"maxSubmissionCost\":\": Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\",\"minimumBridgingDelay\":\"the new minimum delay.\"}},\"setOptimisticOracleLiveness(uint32)\":{\"details\":\"Can only be called by the current owner.\",\"params\":{\"liveness\":\"New OptimisticOracle liveness period to set for relay price requests.\"}},\"setProposerBondPct(uint64)\":{\"details\":\"Can only be called by the current owner.\",\"params\":{\"_proposerBondPct\":\"New OptimisticOracle proposer bond % to set for relay price requests. 1e18 = 100%.\"}},\"transferBridgePoolAdmin(address[],address)\":{\"details\":\"Only callable by the current owner.\",\"params\":{\"bridgePools\":\"array of bridge pools to transfer ownership.\",\"newAdmin\":\"new admin contract to set ownership to.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"whitelistToken(uint256,address,address,address,uint256,uint256,uint256,uint256)\":{\"details\":\"msg.value must equal to l1CallValue.This method is also used to to update the address of the bridgePool within a BridgeDepositBox through the re-whitelisting of a previously whitelisted token to update the address of the bridge pool in the deposit box.Only callable by Owner of this contract. Also initiates a cross-chain call to the L2 Deposit contract to whitelist the token mapping.\",\"params\":{\"bridgePool\":\"Address of BridgePool which manages liquidity to fulfill L2-->L1 relays.\",\"chainId\":\"L2 network ID where Deposit contract is deployed.\",\"l1CallValue\":\"Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies depending on the L2 network that this contract sends a message to.\",\"l1Token\":\"Address of L1 token that can be used to relay L2 token deposits.\",\"l2Gas\":\"Gas limit to set for relayed message on L2.\",\"l2GasPrice\":\"Gas price bid to set for relayed message on L2.\",\"l2Token\":\"Address of L2 token whose deposits are fulfilled by `l1Token`.\",\"maxSubmissionCost\":\": Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Construct the Bridge Admin\"},\"setCrossDomainAdmin(uint256,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Set new contract as the admin address in the L2 Deposit contract.\"},\"setDepositContract(uint256,address,address)\":{\"notice\":\"Associates the L2 deposit and L1 messenger helper addresses with an L2 network ID.\"},\"setEnableDepositsAndRelays(uint256,address,bool,uint256,uint256,uint256,uint256)\":{\"notice\":\"Owner can pause/unpause L2 deposits for a tokens.\"},\"setIdentifier(bytes32)\":{\"notice\":\"Sets a price identifier to use for relayed deposits. BridgePools reads the identifier from this contract.\"},\"setLpFeeRatePerSecond(address,uint64)\":{\"notice\":\"Enable the current owner to change the decay rate at which LP shares accumulate fees for a particular BridgePool. The higher this value, the faster LP shares realize pending fees.\"},\"setMinimumBridgingDelay(uint256,uint64,uint256,uint256,uint256,uint256)\":{\"notice\":\"Sets the minimum time between L2-->L1 token withdrawals in the L2 Deposit contract.\"},\"setOptimisticOracleLiveness(uint32)\":{\"notice\":\"Sets challenge period for relayed deposits. BridgePools will read this value from this contract.\"},\"setProposerBondPct(uint64)\":{\"notice\":\"Sets challenge period for relayed deposits. BridgePools will read this value from this contract.\"},\"transferBridgePoolAdmin(address[],address)\":{\"notice\":\"Enables the current owner to transfer ownership of a set of owned bridge pools to a new owner.\"},\"whitelistToken(uint256,address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Privileged account can associate a whitelisted token with its linked token address on L2. The linked L2 token can thereafter be deposited into the Deposit contract on L2 and relayed via the BridgePool contract.\"}},\"notice\":\"Administrative contract deployed on L1 that has implicit references to all L2 DepositBoxes.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/BridgeAdmin.sol\":\"BridgeAdmin\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/interfaces/AddressWhitelistInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface AddressWhitelistInterface {\\n    function addToWhitelist(address newElement) external;\\n\\n    function removeFromWhitelist(address newElement) external;\\n\\n    function isOnWhitelist(address newElement) external view returns (bool);\\n\\n    function getWhitelist() external view returns (address[] memory);\\n}\\n\",\"keccak256\":\"0x22fb8588dff1d5cff76a28111d6c9b190765d99facd93c8ff3b54771f245c0d8\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/BridgeAdmin.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./interfaces//BridgePoolInterface.sol\\\";\\nimport \\\"./interfaces/BridgeAdminInterface.sol\\\";\\nimport \\\"./interfaces/MessengerInterface.sol\\\";\\nimport \\\"../oracle/interfaces/IdentifierWhitelistInterface.sol\\\";\\nimport \\\"../oracle/interfaces/FinderInterface.sol\\\";\\nimport \\\"../oracle/implementation/Constants.sol\\\";\\nimport \\\"../common/interfaces/AddressWhitelistInterface.sol\\\";\\nimport \\\"../common/implementation/Lockable.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\n/**\\n * @notice Administrative contract deployed on L1 that has implicit references to all L2 DepositBoxes.\\n * @dev This contract is\\n * responsible for making global variables accessible to BridgePool contracts, which house passive liquidity and\\n * enable relaying of L2 deposits.\\n * @dev The owner of this contract can also call permissioned functions on registered L2 DepositBoxes.\\n */\\ncontract BridgeAdmin is BridgeAdminInterface, Ownable, Lockable {\\n    // Finder used to point to latest OptimisticOracle and other DVM contracts.\\n    address public override finder;\\n\\n    // This contract can relay messages to any number of L2 DepositBoxes, one per L2 network, each identified by a\\n    // unique network ID. To relay a message, both the deposit box contract address and a messenger contract address\\n    // need to be stored. The messenger implementation differs for each L2 because L1 --> L2 messaging is non-standard.\\n    // The deposit box contract originate the deposits that can be fulfilled by BridgePool contracts on L1.\\n    mapping(uint256 => DepositUtilityContracts) private _depositContracts;\\n\\n    // L1 token addresses are mapped to their canonical token address on L2 and the BridgePool contract that houses\\n    // relay liquidity for any deposits of the canonical L2 token.\\n    mapping(address => L1TokenRelationships) private _whitelistedTokens;\\n\\n    // Set upon construction and can be reset by Owner.\\n    uint32 public override optimisticOracleLiveness;\\n    uint64 public override proposerBondPct;\\n    bytes32 public override identifier;\\n\\n    // Add this modifier to methods that are expected to bridge messages to a L2 Deposit contract, which\\n    // will cause unexpected behavior if the deposit or messenger helper contract isn't set and valid.\\n    modifier canRelay(uint256 chainId) {\\n        _validateDepositContracts(\\n            _depositContracts[chainId].depositContract,\\n            _depositContracts[chainId].messengerContract\\n        );\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the Bridge Admin\\n     * @param _finder DVM finder to find other UMA ecosystem contracts.\\n     * @param _optimisticOracleLiveness Timeout that all bridging actions from L2->L1 must wait for a OptimisticOracle response.\\n     * @param _proposerBondPct Percentage of the bridged amount that a relayer must put up as a bond.\\n     * @param _identifier Identifier used when querying the OO for a cross bridge transfer action.\\n     */\\n    constructor(\\n        address _finder,\\n        uint32 _optimisticOracleLiveness,\\n        uint64 _proposerBondPct,\\n        bytes32 _identifier\\n    ) {\\n        finder = _finder;\\n        require(address(_getCollateralWhitelist()) != address(0), \\\"Invalid finder\\\");\\n        _setOptimisticOracleLiveness(_optimisticOracleLiveness);\\n        _setProposerBondPct(_proposerBondPct);\\n        _setIdentifier(_identifier);\\n    }\\n\\n    /**************************************\\n     *        ADMIN FUNCTIONS             *\\n     **************************************/\\n\\n    /**\\n     * @notice Sets a price identifier to use for relayed deposits. BridgePools reads the identifier from this contract.\\n     * @dev Can only be called by the current owner.\\n     * @param _identifier New identifier to set.\\n     */\\n    function setIdentifier(bytes32 _identifier) public onlyOwner nonReentrant() {\\n        _setIdentifier(_identifier);\\n    }\\n\\n    /**\\n     * @notice Sets challenge period for relayed deposits. BridgePools will read this value from this contract.\\n     * @dev Can only be called by the current owner.\\n     * @param liveness New OptimisticOracle liveness period to set for relay price requests.\\n     */\\n    function setOptimisticOracleLiveness(uint32 liveness) public onlyOwner nonReentrant() {\\n        _setOptimisticOracleLiveness(liveness);\\n    }\\n\\n    /**\\n     * @notice Sets challenge period for relayed deposits. BridgePools will read this value from this contract.\\n     * @dev Can only be called by the current owner.\\n     * @param _proposerBondPct New OptimisticOracle proposer bond % to set for relay price requests. 1e18 = 100%.\\n     */\\n    function setProposerBondPct(uint64 _proposerBondPct) public onlyOwner nonReentrant() {\\n        _setProposerBondPct(_proposerBondPct);\\n    }\\n\\n    /**\\n     * @notice Associates the L2 deposit and L1 messenger helper addresses with an L2 network ID.\\n     * @dev Only callable by the current owner.\\n     * @param chainId L2 network ID to set addresses for.\\n     * @param depositContract Address of L2 deposit contract.\\n     * @param messengerContract Address of L1 helper contract that relays messages to L2.\\n     */\\n    function setDepositContract(\\n        uint256 chainId,\\n        address depositContract,\\n        address messengerContract\\n    ) public onlyOwner nonReentrant() {\\n        _validateDepositContracts(depositContract, messengerContract);\\n        _depositContracts[chainId].depositContract = depositContract;\\n        _depositContracts[chainId].messengerContract = messengerContract;\\n        emit SetDepositContracts(chainId, depositContract, messengerContract);\\n    }\\n\\n    /**\\n     * @notice Enables the current owner to transfer ownership of a set of owned bridge pools to a new owner.\\n     * @dev Only callable by the current owner.\\n     * @param bridgePools array of bridge pools to transfer ownership.\\n     * @param newAdmin new admin contract to set ownership to.\\n     */\\n    function transferBridgePoolAdmin(address[] memory bridgePools, address newAdmin) public onlyOwner nonReentrant() {\\n        for (uint8 i = 0; i < bridgePools.length; i++) {\\n            BridgePoolInterface(bridgePools[i]).changeAdmin(newAdmin);\\n        }\\n        emit BridgePoolsAdminTransferred(bridgePools, newAdmin);\\n    }\\n\\n    /**\\n     * @notice Enable the current owner to change the decay rate at which LP shares accumulate fees for a particular\\n     * BridgePool. The higher this value, the faster LP shares realize pending fees.\\n     * @dev Only callable by the current owner.\\n     * @param bridgePool Bridge Pool to change LP fee rate for.\\n     * @param newLpFeeRate The new rate to set for the `bridgePool`.\\n     */\\n    function setLpFeeRatePerSecond(address bridgePool, uint64 newLpFeeRate) public onlyOwner nonReentrant() {\\n        BridgePoolInterface(bridgePool).setLpFeeRatePerSecond(newLpFeeRate);\\n        emit SetLpFeeRate(bridgePool, newLpFeeRate);\\n    }\\n\\n    /**************************************************\\n     *        CROSSDOMAIN ADMIN FUNCTIONS             *\\n     **************************************************/\\n\\n    /**\\n     * @notice Set new contract as the admin address in the L2 Deposit contract.\\n     * @dev Only callable by the current owner.\\n     * @dev msg.value must equal to l1CallValue.\\n     * @param chainId L2 network ID where Deposit contract is deployed.\\n     * @param admin New admin address to set on L2.\\n     * @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\\n     * depending on the L2 network that this contract sends a message to.\\n     * @param l2Gas Gas limit to set for relayed message on L2.\\n     * @param l2GasPrice Gas price bid to set for relayed message on L2.\\n     * @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\\n     */\\n    function setCrossDomainAdmin(\\n        uint256 chainId,\\n        address admin,\\n        uint256 l1CallValue,\\n        uint256 l2Gas,\\n        uint256 l2GasPrice,\\n        uint256 maxSubmissionCost\\n    ) public payable onlyOwner canRelay(chainId) nonReentrant() {\\n        require(admin != address(0), \\\"Admin cannot be zero address\\\");\\n        _relayMessage(\\n            _depositContracts[chainId].messengerContract,\\n            l1CallValue,\\n            _depositContracts[chainId].depositContract,\\n            msg.sender,\\n            l2Gas,\\n            l2GasPrice,\\n            maxSubmissionCost,\\n            abi.encodeWithSignature(\\\"setCrossDomainAdmin(address)\\\", admin)\\n        );\\n        emit SetCrossDomainAdmin(chainId, admin);\\n    }\\n\\n    /**\\n     * @notice Sets the minimum time between L2-->L1 token withdrawals in the L2 Deposit contract.\\n     * @dev Only callable by the current owner.\\n     * @dev msg.value must equal to l1CallValue.\\n     * @param chainId L2 network ID where Deposit contract is deployed.\\n     * @param minimumBridgingDelay the new minimum delay.\\n     * @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\\n     * depending on the L2 network that this contract sends a message to.\\n     * @param l2Gas Gas limit to set for relayed message on L2.\\n     * @param l2GasPrice Gas price bid to set for relayed message on L2.\\n     * @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\\n     */\\n    function setMinimumBridgingDelay(\\n        uint256 chainId,\\n        uint64 minimumBridgingDelay,\\n        uint256 l1CallValue,\\n        uint256 l2Gas,\\n        uint256 l2GasPrice,\\n        uint256 maxSubmissionCost\\n    ) public payable onlyOwner canRelay(chainId) nonReentrant() {\\n        _relayMessage(\\n            _depositContracts[chainId].messengerContract,\\n            l1CallValue,\\n            _depositContracts[chainId].depositContract,\\n            msg.sender,\\n            l2Gas,\\n            l2GasPrice,\\n            maxSubmissionCost,\\n            abi.encodeWithSignature(\\\"setMinimumBridgingDelay(uint64)\\\", minimumBridgingDelay)\\n        );\\n        emit SetMinimumBridgingDelay(chainId, minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Owner can pause/unpause L2 deposits for a tokens.\\n     * @dev Only callable by Owner of this contract. Will set the same setting in the L2 Deposit contract via the cross\\n     * domain messenger.\\n     * @dev msg.value must equal to l1CallValue.\\n     * @param chainId L2 network ID where Deposit contract is deployed.\\n     * @param l1Token address of L1 Token to enable/disable deposits and relays for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     * @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\\n     * depending on the L2 network that this contract sends a message to.\\n     * @param l2Gas Gas limit to set for relayed message on L2.\\n     * @param l2GasPrice Gas price bid to set for relayed message on L2.\\n     * @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\\n     */\\n    function setEnableDepositsAndRelays(\\n        uint256 chainId,\\n        address l1Token,\\n        bool depositsEnabled,\\n        uint256 l1CallValue,\\n        uint256 l2Gas,\\n        uint256 l2GasPrice,\\n        uint256 maxSubmissionCost\\n    ) public payable onlyOwner canRelay(chainId) nonReentrant() {\\n        // Disable relays on the BridgePool.\\n        BridgePoolInterface(_whitelistedTokens[l1Token].bridgePool).setRelaysEnabled(depositsEnabled);\\n\\n        // Send cross-chain message to the associated bridgeDepositBox to disable deposits.\\n        address l2Token = _whitelistedTokens[l1Token].l2Tokens[chainId];\\n        _relayMessage(\\n            _depositContracts[chainId].messengerContract,\\n            l1CallValue,\\n            _depositContracts[chainId].depositContract,\\n            msg.sender,\\n            l2Gas,\\n            l2GasPrice,\\n            maxSubmissionCost,\\n            abi.encodeWithSignature(\\\"setEnableDeposits(address,bool)\\\", l2Token, depositsEnabled)\\n        );\\n        emit DepositsEnabled(chainId, l2Token, depositsEnabled);\\n    }\\n\\n    /**\\n     * @notice Privileged account can associate a whitelisted token with its linked token address on L2. The linked L2\\n     * token can thereafter be deposited into the Deposit contract on L2 and relayed via the BridgePool contract.\\n     * @dev msg.value must equal to l1CallValue.\\n     * @dev This method is also used to to update the address of the bridgePool within a BridgeDepositBox through the\\n     * re-whitelisting of a previously whitelisted token to update the address of the bridge pool in the deposit box.\\n     * @dev Only callable by Owner of this contract. Also initiates a cross-chain call to the L2 Deposit contract to\\n     * whitelist the token mapping.\\n     * @param chainId L2 network ID where Deposit contract is deployed.\\n     * @param l1Token Address of L1 token that can be used to relay L2 token deposits.\\n     * @param l2Token Address of L2 token whose deposits are fulfilled by `l1Token`.\\n     * @param bridgePool Address of BridgePool which manages liquidity to fulfill L2-->L1 relays.\\n     * @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\\n     * depending on the L2 network that this contract sends a message to.\\n     * @param l2Gas Gas limit to set for relayed message on L2.\\n     * @param l2GasPrice Gas price bid to set for relayed message on L2.\\n     * @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas.\\n     */\\n    function whitelistToken(\\n        uint256 chainId,\\n        address l1Token,\\n        address l2Token,\\n        address bridgePool,\\n        uint256 l1CallValue,\\n        uint256 l2Gas,\\n        uint256 l2GasPrice,\\n        uint256 maxSubmissionCost\\n    ) public payable onlyOwner canRelay(chainId) nonReentrant() {\\n        require(bridgePool != address(0), \\\"BridgePool cannot be zero address\\\");\\n        require(l2Token != address(0), \\\"L2 token cannot be zero address\\\");\\n        require(_getCollateralWhitelist().isOnWhitelist(address(l1Token)), \\\"L1Token token not whitelisted\\\");\\n\\n        require(address(BridgePoolInterface(bridgePool).l1Token()) == l1Token, \\\"Bridge pool has different L1 token\\\");\\n\\n        // Braces to resolve Stack too deep compile error\\n        {\\n            L1TokenRelationships storage l1TokenRelationships = _whitelistedTokens[l1Token];\\n            l1TokenRelationships.l2Tokens[chainId] = l2Token; // Set the L2Token at the index of the chainId.\\n            l1TokenRelationships.bridgePool = bridgePool;\\n        }\\n\\n        _relayMessage(\\n            _depositContracts[chainId].messengerContract,\\n            l1CallValue,\\n            _depositContracts[chainId].depositContract,\\n            msg.sender,\\n            l2Gas,\\n            l2GasPrice,\\n            maxSubmissionCost,\\n            abi.encodeWithSignature(\\\"whitelistToken(address,address,address)\\\", l1Token, l2Token, bridgePool)\\n        );\\n        emit WhitelistToken(chainId, l1Token, l2Token, bridgePool);\\n    }\\n\\n    /**************************************\\n     *           VIEW FUNCTIONS           *\\n     **************************************/\\n    function depositContracts(uint256 chainId) external view override returns (DepositUtilityContracts memory) {\\n        return _depositContracts[chainId];\\n    }\\n\\n    function whitelistedTokens(address l1Token, uint256 chainId)\\n        external\\n        view\\n        override\\n        returns (address l2Token, address bridgePool)\\n    {\\n        return (_whitelistedTokens[l1Token].l2Tokens[chainId], _whitelistedTokens[l1Token].bridgePool);\\n    }\\n\\n    /**************************************\\n     *        INTERNAL FUNCTIONS          *\\n     **************************************/\\n\\n    function _getIdentifierWhitelist() private view returns (IdentifierWhitelistInterface) {\\n        return\\n            IdentifierWhitelistInterface(\\n                FinderInterface(finder).getImplementationAddress(OracleInterfaces.IdentifierWhitelist)\\n            );\\n    }\\n\\n    function _getCollateralWhitelist() private view returns (AddressWhitelistInterface) {\\n        return\\n            AddressWhitelistInterface(\\n                FinderInterface(finder).getImplementationAddress(OracleInterfaces.CollateralWhitelist)\\n            );\\n    }\\n\\n    function _setIdentifier(bytes32 _identifier) private {\\n        require(_getIdentifierWhitelist().isIdentifierSupported(_identifier), \\\"Identifier not registered\\\");\\n        identifier = _identifier;\\n        emit SetRelayIdentifier(identifier);\\n    }\\n\\n    function _setOptimisticOracleLiveness(uint32 liveness) private {\\n        // The following constraints are copied from a similar function in the OptimisticOracle contract:\\n        // - https://github.com/UMAprotocol/protocol/blob/dd211c4e3825fe007d1161025a34e9901b26031a/packages/core/contracts/oracle/implementation/OptimisticOracle.sol#L621\\n        require(liveness < 5200 weeks, \\\"Liveness too large\\\");\\n        require(liveness > 0, \\\"Liveness cannot be 0\\\");\\n        optimisticOracleLiveness = liveness;\\n        emit SetOptimisticOracleLiveness(optimisticOracleLiveness);\\n    }\\n\\n    function _setProposerBondPct(uint64 _proposerBondPct) private {\\n        proposerBondPct = _proposerBondPct;\\n        emit SetProposerBondPct(proposerBondPct);\\n    }\\n\\n    function _validateDepositContracts(address depositContract, address messengerContract) private pure {\\n        require(\\n            (depositContract != address(0)) && (messengerContract != address(0)),\\n            \\\"Invalid deposit or messenger contract\\\"\\n        );\\n    }\\n\\n    // Send msg.value == l1CallValue to Messenger, which can then use it in any way to execute cross domain message.\\n    function _relayMessage(\\n        address messengerContract,\\n        uint256 l1CallValue,\\n        address target,\\n        address user,\\n        uint256 l2Gas,\\n        uint256 l2GasPrice,\\n        uint256 maxSubmissionCost,\\n        bytes memory message\\n    ) private {\\n        require(l1CallValue == msg.value, \\\"Wrong number of ETH sent\\\");\\n        MessengerInterface(messengerContract).relayMessage{ value: l1CallValue }(\\n            target,\\n            user,\\n            l1CallValue,\\n            l2Gas,\\n            l2GasPrice,\\n            maxSubmissionCost,\\n            message\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0xb42ad42398257b76043b8c4c4bd725e1f20f0e201f1d0aabff55584e3dc58ae8\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/interfaces/BridgeAdminInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Helper view methods designed to be called by BridgePool contracts.\\n */\\ninterface BridgeAdminInterface {\\n    event SetDepositContracts(\\n        uint256 indexed chainId,\\n        address indexed l2DepositContract,\\n        address indexed l2MessengerContract\\n    );\\n    event SetCrossDomainAdmin(uint256 indexed chainId, address indexed newAdmin);\\n    event SetRelayIdentifier(bytes32 indexed identifier);\\n    event SetOptimisticOracleLiveness(uint32 indexed liveness);\\n    event SetProposerBondPct(uint64 indexed proposerBondPct);\\n    event WhitelistToken(uint256 chainId, address indexed l1Token, address indexed l2Token, address indexed bridgePool);\\n    event SetMinimumBridgingDelay(uint256 indexed chainId, uint64 newMinimumBridgingDelay);\\n    event DepositsEnabled(uint256 indexed chainId, address indexed l2Token, bool depositsEnabled);\\n    event BridgePoolsAdminTransferred(address[] bridgePools, address indexed newAdmin);\\n    event SetLpFeeRate(address indexed bridgePool, uint64 newLpFeeRatePerSecond);\\n\\n    function finder() external view returns (address);\\n\\n    struct DepositUtilityContracts {\\n        address depositContract; // L2 deposit contract where cross-chain relays originate.\\n        address messengerContract; // L1 helper contract that can send a message to the L2 with the mapped network ID.\\n    }\\n\\n    function depositContracts(uint256) external view returns (DepositUtilityContracts memory);\\n\\n    struct L1TokenRelationships {\\n        mapping(uint256 => address) l2Tokens; // L2 Chain Id to l2Token address.\\n        address bridgePool;\\n    }\\n\\n    function whitelistedTokens(address, uint256) external view returns (address l2Token, address bridgePool);\\n\\n    function optimisticOracleLiveness() external view returns (uint32);\\n\\n    function proposerBondPct() external view returns (uint64);\\n\\n    function identifier() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1fb2737503a627f20fd42538bb0ed3b4c8bd3905ad19906b5d6e2f1ff3d8336f\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/interfaces/BridgePoolInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface BridgePoolInterface {\\n    function l1Token() external view returns (IERC20);\\n\\n    function changeAdmin(address newAdmin) external;\\n\\n    function setLpFeeRatePerSecond(uint64 _newLpFeeRatePerSecond) external;\\n\\n    function setRelaysEnabled(bool _relaysEnabled) external;\\n}\\n\",\"keccak256\":\"0xecfb4d11dca8a0a07c73e7104426a86e96c35e905fc436405adcd1eec8be383f\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/interfaces/MessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will\\n * differ for each L2.\\n */\\ninterface MessengerInterface {\\n    function relayMessage(\\n        address target,\\n        address userToRefund,\\n        uint256 l1CallValue,\\n        uint256 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        bytes memory message\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0xa20bf4ed8f80d1ddd3cc81b1a49bb2bcd8dd4ed00e1c7ade3fd4edaf5b4f13b2\",\"license\":\"AGPL-3.0-only\"},\"contracts/oracle/implementation/Constants.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Stores common interface names used throughout the DVM by registration in the Finder.\\n */\\nlibrary OracleInterfaces {\\n    bytes32 public constant Oracle = \\\"Oracle\\\";\\n    bytes32 public constant IdentifierWhitelist = \\\"IdentifierWhitelist\\\";\\n    bytes32 public constant Store = \\\"Store\\\";\\n    bytes32 public constant FinancialContractsAdmin = \\\"FinancialContractsAdmin\\\";\\n    bytes32 public constant Registry = \\\"Registry\\\";\\n    bytes32 public constant CollateralWhitelist = \\\"CollateralWhitelist\\\";\\n    bytes32 public constant OptimisticOracle = \\\"OptimisticOracle\\\";\\n    bytes32 public constant Bridge = \\\"Bridge\\\";\\n    bytes32 public constant GenericHandler = \\\"GenericHandler\\\";\\n    bytes32 public constant SkinnyOptimisticOracle = \\\"SkinnyOptimisticOracle\\\";\\n}\\n\\n/**\\n * @title Commonly re-used values for contracts associated with the OptimisticOracle.\\n */\\nlibrary OptimisticOracleConstraints {\\n    // Any price request submitted to the OptimisticOracle must contain ancillary data no larger than this value.\\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` constant value otherwise it is possible\\n    // that a price can be requested to the OptimisticOracle successfully, but cannot be resolved by the DVM which\\n    // refuses to accept a price request made with ancillary data length over a certain size.\\n    uint256 public constant ancillaryBytesLimit = 8192;\\n}\\n\",\"keccak256\":\"0xdb839b42f7348bdd64e2ab1bfbcca64dac758313192024abb815936a9f2eca1a\",\"license\":\"AGPL-3.0-only\"},\"contracts/oracle/interfaces/FinderInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Provides addresses of the live contracts implementing certain interfaces.\\n * @dev Examples are the Oracle or Store interfaces.\\n */\\ninterface FinderInterface {\\n    /**\\n     * @notice Updates the address of the contract that implements `interfaceName`.\\n     * @param interfaceName bytes32 encoding of the interface name that is either changed or registered.\\n     * @param implementationAddress address of the deployed contract that implements the interface.\\n     */\\n    function changeImplementationAddress(bytes32 interfaceName, address implementationAddress) external;\\n\\n    /**\\n     * @notice Gets the address of the contract that implements the given `interfaceName`.\\n     * @param interfaceName queried interface.\\n     * @return implementationAddress address of the deployed contract that implements the interface.\\n     */\\n    function getImplementationAddress(bytes32 interfaceName) external view returns (address);\\n}\\n\",\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\"},\"contracts/oracle/interfaces/IdentifierWhitelistInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Interface for whitelists of supported identifiers that the oracle can provide prices for.\\n */\\ninterface IdentifierWhitelistInterface {\\n    /**\\n     * @notice Adds the provided identifier as a supported identifier.\\n     * @dev Price requests using this identifier will succeed after this call.\\n     * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\\n     */\\n    function addSupportedIdentifier(bytes32 identifier) external;\\n\\n    /**\\n     * @notice Removes the identifier from the whitelist.\\n     * @dev Price requests using this identifier will no longer succeed after this call.\\n     * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\\n     */\\n    function removeSupportedIdentifier(bytes32 identifier) external;\\n\\n    /**\\n     * @notice Checks whether an identifier is on the whitelist.\\n     * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\\n     * @return bool if the identifier is supported (or not).\\n     */\\n    function isIdentifierSupported(bytes32 identifier) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x9ae86a30dd1a8c03fb2c6d27be570bb30c4c0b13ac63cde8620b7e4b51d88dc9\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 627,
                                "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                "label": "_owner",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 5381,
                                "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                "label": "_notEntered",
                                "offset": 20,
                                "slot": "0",
                                "type": "t_bool"
                            },
                            {
                                "astId": 7474,
                                "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                "label": "finder",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_address"
                            },
                            {
                                "astId": 7479,
                                "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                "label": "_depositContracts",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_mapping(t_uint256,t_struct(DepositUtilityContracts)9168_storage)"
                            },
                            {
                                "astId": 7484,
                                "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                "label": "_whitelistedTokens",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_mapping(t_address,t_struct(L1TokenRelationships)9183_storage)"
                            },
                            {
                                "astId": 7487,
                                "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                "label": "optimisticOracleLiveness",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_uint32"
                            },
                            {
                                "astId": 7490,
                                "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                "label": "proposerBondPct",
                                "offset": 4,
                                "slot": "4",
                                "type": "t_uint64"
                            },
                            {
                                "astId": 7493,
                                "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                "label": "identifier",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_bytes32"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_bytes32": {
                                "encoding": "inplace",
                                "label": "bytes32",
                                "numberOfBytes": "32"
                            },
                            "t_mapping(t_address,t_struct(L1TokenRelationships)9183_storage)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => struct BridgeAdminInterface.L1TokenRelationships)",
                                "numberOfBytes": "32",
                                "value": "t_struct(L1TokenRelationships)9183_storage"
                            },
                            "t_mapping(t_uint256,t_address)": {
                                "encoding": "mapping",
                                "key": "t_uint256",
                                "label": "mapping(uint256 => address)",
                                "numberOfBytes": "32",
                                "value": "t_address"
                            },
                            "t_mapping(t_uint256,t_struct(DepositUtilityContracts)9168_storage)": {
                                "encoding": "mapping",
                                "key": "t_uint256",
                                "label": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts)",
                                "numberOfBytes": "32",
                                "value": "t_struct(DepositUtilityContracts)9168_storage"
                            },
                            "t_struct(DepositUtilityContracts)9168_storage": {
                                "encoding": "inplace",
                                "label": "struct BridgeAdminInterface.DepositUtilityContracts",
                                "members": [
                                    {
                                        "astId": 9165,
                                        "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                        "label": "depositContract",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 9167,
                                        "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                        "label": "messengerContract",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_address"
                                    }
                                ],
                                "numberOfBytes": "64"
                            },
                            "t_struct(L1TokenRelationships)9183_storage": {
                                "encoding": "inplace",
                                "label": "struct BridgeAdminInterface.L1TokenRelationships",
                                "members": [
                                    {
                                        "astId": 9180,
                                        "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                        "label": "l2Tokens",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_mapping(t_uint256,t_address)"
                                    },
                                    {
                                        "astId": 9182,
                                        "contract": "contracts/insured-bridge/BridgeAdmin.sol:BridgeAdmin",
                                        "label": "bridgePool",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_address"
                                    }
                                ],
                                "numberOfBytes": "64"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            },
                            "t_uint32": {
                                "encoding": "inplace",
                                "label": "uint32",
                                "numberOfBytes": "4"
                            },
                            "t_uint64": {
                                "encoding": "inplace",
                                "label": "uint64",
                                "numberOfBytes": "8"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "constructor": {
                                "notice": "Construct the Bridge Admin"
                            },
                            "setCrossDomainAdmin(uint256,address,uint256,uint256,uint256,uint256)": {
                                "notice": "Set new contract as the admin address in the L2 Deposit contract."
                            },
                            "setDepositContract(uint256,address,address)": {
                                "notice": "Associates the L2 deposit and L1 messenger helper addresses with an L2 network ID."
                            },
                            "setEnableDepositsAndRelays(uint256,address,bool,uint256,uint256,uint256,uint256)": {
                                "notice": "Owner can pause/unpause L2 deposits for a tokens."
                            },
                            "setIdentifier(bytes32)": {
                                "notice": "Sets a price identifier to use for relayed deposits. BridgePools reads the identifier from this contract."
                            },
                            "setLpFeeRatePerSecond(address,uint64)": {
                                "notice": "Enable the current owner to change the decay rate at which LP shares accumulate fees for a particular BridgePool. The higher this value, the faster LP shares realize pending fees."
                            },
                            "setMinimumBridgingDelay(uint256,uint64,uint256,uint256,uint256,uint256)": {
                                "notice": "Sets the minimum time between L2-->L1 token withdrawals in the L2 Deposit contract."
                            },
                            "setOptimisticOracleLiveness(uint32)": {
                                "notice": "Sets challenge period for relayed deposits. BridgePools will read this value from this contract."
                            },
                            "setProposerBondPct(uint64)": {
                                "notice": "Sets challenge period for relayed deposits. BridgePools will read this value from this contract."
                            },
                            "transferBridgePoolAdmin(address[],address)": {
                                "notice": "Enables the current owner to transfer ownership of a set of owned bridge pools to a new owner."
                            },
                            "whitelistToken(uint256,address,address,address,uint256,uint256,uint256,uint256)": {
                                "notice": "Privileged account can associate a whitelisted token with its linked token address on L2. The linked L2 token can thereafter be deposited into the Deposit contract on L2 and relayed via the BridgePool contract."
                            }
                        },
                        "notice": "Administrative contract deployed on L1 that has implicit references to all L2 DepositBoxes.",
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/BridgeDepositBox.sol": {
                "BridgeDepositBox": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "DepositsEnabled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "depositId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Sender",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "FundsDeposited",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetMinimumBridgingDelay",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "numberOfTokensBridged",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "l1Gas",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "caller",
                                    "type": "address"
                                }
                            ],
                            "name": "TokensBridged",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "WhitelistToken",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "l2Gas",
                                    "type": "uint32"
                                }
                            ],
                            "name": "bridgeTokens",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "canBridge",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "chainId",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "isWhitelistToken",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1Weth",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "minimumBridgingDelay",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "numberOfDeposits",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "timerAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "whitelistedTokens",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1BridgePool",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "canBridge(address)": {
                                "details": "This function is also public for caller convenience.",
                                "params": {
                                    "l2Token": "L2 token to check bridging status."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised and enough time has elapsed since the previous bridge."
                                }
                            },
                            "constructor": {
                                "params": {
                                    "_chainId": "Chain identifier for the Bridge deposit box.",
                                    "_l1Weth": "Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.",
                                    "_minimumBridgingDelay": "Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.",
                                    "timerAddress": "Timer used to synchronize contract time in testing. Set to 0x000... in production."
                                }
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "details": "Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.",
                                "params": {
                                    "amount": "How many L2 tokens should be deposited.",
                                    "instantRelayFeePct": "Fraction of `amount` that the depositor is willing to pay as an instant relay fee.",
                                    "l1Recipient": "L1 address that should receive the tokens.",
                                    "l2Token": "L2 token to deposit.",
                                    "quoteTimestamp": "Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.",
                                    "slowRelayFeePct": "Max fraction of `amount` that the depositor is willing to pay as a slow relay fee."
                                }
                            },
                            "getCurrentTime()": {
                                "returns": {
                                    "_0": "uint for the current Testable timestamp."
                                }
                            },
                            "isWhitelistToken(address)": {
                                "details": "Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.",
                                "params": {
                                    "l2Token": "L2 token to check against the whitelist."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised."
                                }
                            },
                            "setCurrentTime(uint256)": {
                                "details": "Will revert if not running in test mode.",
                                "params": {
                                    "time": "timestamp to set current Testable time to."
                                }
                            }
                        },
                        "title": "OVM Bridge Deposit Box.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "bridgeTokens(address,uint32)": "9bfd2cdc",
                            "canBridge(address)": "63635fd9",
                            "chainId()": "9a8a0592",
                            "deposit(address,address,uint256,uint64,uint64,uint64)": "c2d9dca9",
                            "getCurrentTime()": "29cb924d",
                            "isWhitelistToken(address)": "fbb9fcf7",
                            "l1Weth()": "146bf4b1",
                            "minimumBridgingDelay()": "b2d6f4d4",
                            "numberOfDeposits()": "a1244c67",
                            "setCurrentTime(uint256)": "22f8e566",
                            "timerAddress()": "1c39c38d",
                            "whitelistedTokens(address)": "daf9c210"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"DepositsEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"FundsDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"SetMinimumBridgingDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numberOfTokensBridged\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1Gas\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"TokensBridged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"name\":\"WhitelistToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"l2Gas\",\"type\":\"uint32\"}],\"name\":\"bridgeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"canBridge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"isWhitelistToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Weth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumBridgingDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l1BridgePool\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"canBridge(address)\":{\"details\":\"This function is also public for caller convenience.\",\"params\":{\"l2Token\":\"L2 token to check bridging status.\"},\"returns\":{\"_0\":\"true if token is whitelised and enough time has elapsed since the previous bridge.\"}},\"constructor\":{\"params\":{\"_chainId\":\"Chain identifier for the Bridge deposit box.\",\"_l1Weth\":\"Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\",\"_minimumBridgingDelay\":\"Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\",\"timerAddress\":\"Timer used to synchronize contract time in testing. Set to 0x000... in production.\"}},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"details\":\"Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.\",\"params\":{\"amount\":\"How many L2 tokens should be deposited.\",\"instantRelayFeePct\":\"Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\",\"l1Recipient\":\"L1 address that should receive the tokens.\",\"l2Token\":\"L2 token to deposit.\",\"quoteTimestamp\":\"Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\",\"slowRelayFeePct\":\"Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current Testable timestamp.\"}},\"isWhitelistToken(address)\":{\"details\":\"Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.\",\"params\":{\"l2Token\":\"L2 token to check against the whitelist.\"},\"returns\":{\"_0\":\"true if token is whitelised.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set current Testable time to.\"}}},\"title\":\"OVM Bridge Deposit Box.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"canBridge(address)\":{\"notice\":\"Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\"},\"constructor\":{\"notice\":\"Construct the Bridge Deposit Box\"},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"notice\":\"Called by L2 user to bridge funds between L2 and L1.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp.\"},\"isWhitelistToken(address)\":{\"notice\":\"Checks if a given L2 token is whitelisted.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"}},\"notice\":\"Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/BridgeDepositBox.sol\":\"BridgeDepositBox\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        // solhint-disable-next-line max-line-length\\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n    }\\n\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            uint256 newAllowance = oldAllowance - value;\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        if (returndata.length > 0) { // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"},\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Testable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Timer.sol\\\";\\n\\n/**\\n * @title Base class that provides time overrides, but only if being run in test mode.\\n */\\nabstract contract Testable {\\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\\n    // Note: this variable should be set on construction and never modified.\\n    address public timerAddress;\\n\\n    /**\\n     * @notice Constructs the Testable contract. Called by child contracts.\\n     * @param _timerAddress Contract that stores the current time in a testing environment.\\n     * Must be set to 0x0 for production environments that use live time.\\n     */\\n    constructor(address _timerAddress) {\\n        timerAddress = _timerAddress;\\n    }\\n\\n    /**\\n     * @notice Reverts if not running in test mode.\\n     */\\n    modifier onlyIfTest {\\n        require(timerAddress != address(0x0));\\n        _;\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set current Testable time to.\\n     */\\n    function setCurrentTime(uint256 time) external onlyIfTest {\\n        Timer(timerAddress).setCurrentTime(time);\\n    }\\n\\n    /**\\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\\n     * Otherwise, it will return the block timestamp.\\n     * @return uint for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view virtual returns (uint256) {\\n        if (timerAddress != address(0x0)) {\\n            return Timer(timerAddress).getCurrentTime();\\n        } else {\\n            return block.timestamp; // solhint-disable-line not-rely-on-time\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../common/implementation/Testable.sol\\\";\\nimport \\\"../common/implementation/Lockable.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface TokenLike {\\n    function balanceOf(address guy) external returns (uint256 wad);\\n}\\n\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 wad) external;\\n}\\n\\n/**\\n * @title OVM Bridge Deposit Box.\\n * @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\\n */\\n\\nabstract contract BridgeDepositBox is Testable, Lockable {\\n    using SafeERC20 for IERC20;\\n    /*************************************\\n     *  OVM DEPOSIT BOX DATA STRUCTURES  *\\n     *************************************/\\n\\n    // ChainID of the L2 this deposit box is deployed on.\\n    uint256 public chainId;\\n\\n    // Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.\\n    address public l1Weth;\\n\\n    // Track the total number of deposits. Used as a unique identifier for bridged transfers.\\n    uint256 public numberOfDeposits;\\n\\n    struct L2TokenRelationships {\\n        address l1Token;\\n        address l1BridgePool;\\n        uint64 lastBridgeTime;\\n        bool depositsEnabled;\\n    }\\n\\n    // Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token\\n    // type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.\\n    mapping(address => L2TokenRelationships) public whitelistedTokens;\\n\\n    // Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.\\n    uint64 public minimumBridgingDelay;\\n\\n    /****************************************\\n     *                EVENTS                *\\n     ****************************************/\\n\\n    event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);\\n    event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);\\n    event DepositsEnabled(address l2Token, bool depositsEnabled);\\n    event FundsDeposited(\\n        uint256 chainId,\\n        uint256 depositId,\\n        address l1Recipient,\\n        address l2Sender,\\n        address l1Token,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    );\\n    event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);\\n\\n    /****************************************\\n     *               MODIFIERS              *\\n     ****************************************/\\n\\n    modifier onlyIfDepositsEnabled(address l2Token) {\\n        require(whitelistedTokens[l2Token].depositsEnabled, \\\"Contract is disabled\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the Bridge Deposit Box\\n     * @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\\n     * @param _chainId Chain identifier for the Bridge deposit box.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) Testable(timerAddress) {\\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\\n        chainId = _chainId;\\n        l1Weth = _l1Weth;\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {\\n        minimumBridgingDelay = newMinimumBridgingDelay;\\n        emit SetMinimumBridgingDelay(minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function _whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) internal {\\n        whitelistedTokens[l2Token] = L2TokenRelationships({\\n            l1Token: l1Token,\\n            l1BridgePool: l1BridgePool,\\n            lastBridgeTime: uint64(getCurrentTime()),\\n            depositsEnabled: true\\n        });\\n\\n        emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {\\n        whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;\\n        emit DepositsEnabled(l2Token, depositsEnabled);\\n    }\\n\\n    function bridgeTokens(address l2Token, uint32 l2Gas) public virtual;\\n\\n    /**************************************\\n     *         DEPOSITOR FUNCTIONS        *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by L2 user to bridge funds between L2 and L1.\\n     * @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\\n     * @dev The caller must first approve this contract to spend `amount` of `l2Token`.\\n     * @param l1Recipient L1 address that should receive the tokens.\\n     * @param l2Token L2 token to deposit.\\n     * @param amount How many L2 tokens should be deposited.\\n     * @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\\n     * @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\\n     * @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\\n     *    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\\n     */\\n    function deposit(\\n        address l1Recipient,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    ) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {\\n        require(isWhitelistToken(l2Token), \\\"deposit token not whitelisted\\\");\\n        // We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.\\n        // The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.\\n        require(slowRelayFeePct <= 0.25e18, \\\"slowRelayFeePct must be <= 25%\\\");\\n        require(instantRelayFeePct <= 0.25e18, \\\"instantRelayFeePct must be <= 25%\\\");\\n\\n        // Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp\\n        // corresponds to the L1 timestamp of the last confirmed L1 \\u21d2 L2 transaction. The quoteTime must be within 10\\n        // mins of the current time to allow for this variance.\\n        // Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result\\n        // in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.\\n        // Consider requiring `quoteTimestamp >= 10 minutes`.\\n        require(\\n            getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,\\n            \\\"deposit mined after deadline\\\"\\n        );\\n        // If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user\\n        // is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.\\n        if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {\\n            require(msg.value == amount, \\\"msg.value must match amount\\\");\\n            WETH9Like(address(l2Token)).deposit{ value: msg.value }();\\n        }\\n        // Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.\\n        // Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In\\n        // this case the msg.value will be set to 0, indicating a \\\"normal\\\" ERC20 bridging action.\\n        else IERC20(l2Token).safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit FundsDeposited(\\n            chainId,\\n            numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).\\n            l1Recipient,\\n            msg.sender,\\n            whitelistedTokens[l2Token].l1Token,\\n            l2Token,\\n            amount,\\n            slowRelayFeePct,\\n            instantRelayFeePct,\\n            quoteTimestamp\\n        );\\n\\n        numberOfDeposits += 1;\\n    }\\n\\n    /**************************************\\n     *           VIEW FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Checks if a given L2 token is whitelisted.\\n     * @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\\n     * the token has been whitelisted.\\n     * @param l2Token L2 token to check against the whitelist.\\n     * @return true if token is whitelised.\\n     */\\n    function isWhitelistToken(address l2Token) public view returns (bool) {\\n        return whitelistedTokens[l2Token].lastBridgeTime != 0;\\n    }\\n\\n    function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {\\n        return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;\\n    }\\n\\n    /**\\n     * @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\\n     * balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\\n     * and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\\n     * @dev This function is also public for caller convenience.\\n     * @param l2Token L2 token to check bridging status.\\n     * @return true if token is whitelised and enough time has elapsed since the previous bridge.\\n     */\\n    function canBridge(address l2Token) public view returns (bool) {\\n        return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);\\n    }\\n}\\n\",\"keccak256\":\"0x4ee97e2948d55ffd8a44769e452ee5e8de4fcb073388aef12a4c4e53bc99af21\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 5530,
                                "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                "label": "timerAddress",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 5381,
                                "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                "label": "_notEntered",
                                "offset": 20,
                                "slot": "0",
                                "type": "t_bool"
                            },
                            {
                                "astId": 8260,
                                "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                "label": "chainId",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8262,
                                "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                "label": "l1Weth",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_address"
                            },
                            {
                                "astId": 8264,
                                "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                "label": "numberOfDeposits",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8278,
                                "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                "label": "whitelistedTokens",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)"
                            },
                            {
                                "astId": 8280,
                                "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                "label": "minimumBridgingDelay",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_uint64"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => struct BridgeDepositBox.L2TokenRelationships)",
                                "numberOfBytes": "32",
                                "value": "t_struct(L2TokenRelationships)8273_storage"
                            },
                            "t_struct(L2TokenRelationships)8273_storage": {
                                "encoding": "inplace",
                                "label": "struct BridgeDepositBox.L2TokenRelationships",
                                "members": [
                                    {
                                        "astId": 8266,
                                        "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                        "label": "l1Token",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8268,
                                        "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                        "label": "l1BridgePool",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8270,
                                        "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                        "label": "lastBridgeTime",
                                        "offset": 20,
                                        "slot": "1",
                                        "type": "t_uint64"
                                    },
                                    {
                                        "astId": 8272,
                                        "contract": "contracts/insured-bridge/BridgeDepositBox.sol:BridgeDepositBox",
                                        "label": "depositsEnabled",
                                        "offset": 28,
                                        "slot": "1",
                                        "type": "t_bool"
                                    }
                                ],
                                "numberOfBytes": "64"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            },
                            "t_uint64": {
                                "encoding": "inplace",
                                "label": "uint64",
                                "numberOfBytes": "8"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "canBridge(address)": {
                                "notice": "Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted)."
                            },
                            "constructor": {
                                "notice": "Construct the Bridge Deposit Box"
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "notice": "Called by L2 user to bridge funds between L2 and L1."
                            },
                            "getCurrentTime()": {
                                "notice": "Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp."
                            },
                            "isWhitelistToken(address)": {
                                "notice": "Checks if a given L2 token is whitelisted."
                            },
                            "setCurrentTime(uint256)": {
                                "notice": "Sets the current time."
                            }
                        },
                        "notice": "Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.",
                        "version": 1
                    }
                },
                "TokenLike": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "guy",
                                    "type": "address"
                                }
                            ],
                            "name": "balanceOf",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "wad",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "balanceOf(address)": "70a08231"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/BridgeDepositBox.sol\":\"TokenLike\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        // solhint-disable-next-line max-line-length\\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n    }\\n\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            uint256 newAllowance = oldAllowance - value;\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        if (returndata.length > 0) { // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"},\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Testable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Timer.sol\\\";\\n\\n/**\\n * @title Base class that provides time overrides, but only if being run in test mode.\\n */\\nabstract contract Testable {\\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\\n    // Note: this variable should be set on construction and never modified.\\n    address public timerAddress;\\n\\n    /**\\n     * @notice Constructs the Testable contract. Called by child contracts.\\n     * @param _timerAddress Contract that stores the current time in a testing environment.\\n     * Must be set to 0x0 for production environments that use live time.\\n     */\\n    constructor(address _timerAddress) {\\n        timerAddress = _timerAddress;\\n    }\\n\\n    /**\\n     * @notice Reverts if not running in test mode.\\n     */\\n    modifier onlyIfTest {\\n        require(timerAddress != address(0x0));\\n        _;\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set current Testable time to.\\n     */\\n    function setCurrentTime(uint256 time) external onlyIfTest {\\n        Timer(timerAddress).setCurrentTime(time);\\n    }\\n\\n    /**\\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\\n     * Otherwise, it will return the block timestamp.\\n     * @return uint for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view virtual returns (uint256) {\\n        if (timerAddress != address(0x0)) {\\n            return Timer(timerAddress).getCurrentTime();\\n        } else {\\n            return block.timestamp; // solhint-disable-line not-rely-on-time\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../common/implementation/Testable.sol\\\";\\nimport \\\"../common/implementation/Lockable.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface TokenLike {\\n    function balanceOf(address guy) external returns (uint256 wad);\\n}\\n\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 wad) external;\\n}\\n\\n/**\\n * @title OVM Bridge Deposit Box.\\n * @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\\n */\\n\\nabstract contract BridgeDepositBox is Testable, Lockable {\\n    using SafeERC20 for IERC20;\\n    /*************************************\\n     *  OVM DEPOSIT BOX DATA STRUCTURES  *\\n     *************************************/\\n\\n    // ChainID of the L2 this deposit box is deployed on.\\n    uint256 public chainId;\\n\\n    // Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.\\n    address public l1Weth;\\n\\n    // Track the total number of deposits. Used as a unique identifier for bridged transfers.\\n    uint256 public numberOfDeposits;\\n\\n    struct L2TokenRelationships {\\n        address l1Token;\\n        address l1BridgePool;\\n        uint64 lastBridgeTime;\\n        bool depositsEnabled;\\n    }\\n\\n    // Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token\\n    // type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.\\n    mapping(address => L2TokenRelationships) public whitelistedTokens;\\n\\n    // Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.\\n    uint64 public minimumBridgingDelay;\\n\\n    /****************************************\\n     *                EVENTS                *\\n     ****************************************/\\n\\n    event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);\\n    event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);\\n    event DepositsEnabled(address l2Token, bool depositsEnabled);\\n    event FundsDeposited(\\n        uint256 chainId,\\n        uint256 depositId,\\n        address l1Recipient,\\n        address l2Sender,\\n        address l1Token,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    );\\n    event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);\\n\\n    /****************************************\\n     *               MODIFIERS              *\\n     ****************************************/\\n\\n    modifier onlyIfDepositsEnabled(address l2Token) {\\n        require(whitelistedTokens[l2Token].depositsEnabled, \\\"Contract is disabled\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the Bridge Deposit Box\\n     * @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\\n     * @param _chainId Chain identifier for the Bridge deposit box.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) Testable(timerAddress) {\\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\\n        chainId = _chainId;\\n        l1Weth = _l1Weth;\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {\\n        minimumBridgingDelay = newMinimumBridgingDelay;\\n        emit SetMinimumBridgingDelay(minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function _whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) internal {\\n        whitelistedTokens[l2Token] = L2TokenRelationships({\\n            l1Token: l1Token,\\n            l1BridgePool: l1BridgePool,\\n            lastBridgeTime: uint64(getCurrentTime()),\\n            depositsEnabled: true\\n        });\\n\\n        emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {\\n        whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;\\n        emit DepositsEnabled(l2Token, depositsEnabled);\\n    }\\n\\n    function bridgeTokens(address l2Token, uint32 l2Gas) public virtual;\\n\\n    /**************************************\\n     *         DEPOSITOR FUNCTIONS        *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by L2 user to bridge funds between L2 and L1.\\n     * @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\\n     * @dev The caller must first approve this contract to spend `amount` of `l2Token`.\\n     * @param l1Recipient L1 address that should receive the tokens.\\n     * @param l2Token L2 token to deposit.\\n     * @param amount How many L2 tokens should be deposited.\\n     * @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\\n     * @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\\n     * @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\\n     *    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\\n     */\\n    function deposit(\\n        address l1Recipient,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    ) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {\\n        require(isWhitelistToken(l2Token), \\\"deposit token not whitelisted\\\");\\n        // We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.\\n        // The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.\\n        require(slowRelayFeePct <= 0.25e18, \\\"slowRelayFeePct must be <= 25%\\\");\\n        require(instantRelayFeePct <= 0.25e18, \\\"instantRelayFeePct must be <= 25%\\\");\\n\\n        // Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp\\n        // corresponds to the L1 timestamp of the last confirmed L1 \\u21d2 L2 transaction. The quoteTime must be within 10\\n        // mins of the current time to allow for this variance.\\n        // Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result\\n        // in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.\\n        // Consider requiring `quoteTimestamp >= 10 minutes`.\\n        require(\\n            getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,\\n            \\\"deposit mined after deadline\\\"\\n        );\\n        // If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user\\n        // is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.\\n        if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {\\n            require(msg.value == amount, \\\"msg.value must match amount\\\");\\n            WETH9Like(address(l2Token)).deposit{ value: msg.value }();\\n        }\\n        // Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.\\n        // Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In\\n        // this case the msg.value will be set to 0, indicating a \\\"normal\\\" ERC20 bridging action.\\n        else IERC20(l2Token).safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit FundsDeposited(\\n            chainId,\\n            numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).\\n            l1Recipient,\\n            msg.sender,\\n            whitelistedTokens[l2Token].l1Token,\\n            l2Token,\\n            amount,\\n            slowRelayFeePct,\\n            instantRelayFeePct,\\n            quoteTimestamp\\n        );\\n\\n        numberOfDeposits += 1;\\n    }\\n\\n    /**************************************\\n     *           VIEW FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Checks if a given L2 token is whitelisted.\\n     * @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\\n     * the token has been whitelisted.\\n     * @param l2Token L2 token to check against the whitelist.\\n     * @return true if token is whitelised.\\n     */\\n    function isWhitelistToken(address l2Token) public view returns (bool) {\\n        return whitelistedTokens[l2Token].lastBridgeTime != 0;\\n    }\\n\\n    function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {\\n        return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;\\n    }\\n\\n    /**\\n     * @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\\n     * balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\\n     * and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\\n     * @dev This function is also public for caller convenience.\\n     * @param l2Token L2 token to check bridging status.\\n     * @return true if token is whitelised and enough time has elapsed since the previous bridge.\\n     */\\n    function canBridge(address l2Token) public view returns (bool) {\\n        return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);\\n    }\\n}\\n\",\"keccak256\":\"0x4ee97e2948d55ffd8a44769e452ee5e8de4fcb073388aef12a4c4e53bc99af21\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                },
                "WETH9Like": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "wad",
                                    "type": "uint256"
                                }
                            ],
                            "name": "withdraw",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "deposit()": "d0e30db0",
                            "withdraw(uint256)": "2e1a7d4d"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/BridgeDepositBox.sol\":\"WETH9Like\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        // solhint-disable-next-line max-line-length\\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n    }\\n\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            uint256 newAllowance = oldAllowance - value;\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        if (returndata.length > 0) { // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"},\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Testable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Timer.sol\\\";\\n\\n/**\\n * @title Base class that provides time overrides, but only if being run in test mode.\\n */\\nabstract contract Testable {\\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\\n    // Note: this variable should be set on construction and never modified.\\n    address public timerAddress;\\n\\n    /**\\n     * @notice Constructs the Testable contract. Called by child contracts.\\n     * @param _timerAddress Contract that stores the current time in a testing environment.\\n     * Must be set to 0x0 for production environments that use live time.\\n     */\\n    constructor(address _timerAddress) {\\n        timerAddress = _timerAddress;\\n    }\\n\\n    /**\\n     * @notice Reverts if not running in test mode.\\n     */\\n    modifier onlyIfTest {\\n        require(timerAddress != address(0x0));\\n        _;\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set current Testable time to.\\n     */\\n    function setCurrentTime(uint256 time) external onlyIfTest {\\n        Timer(timerAddress).setCurrentTime(time);\\n    }\\n\\n    /**\\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\\n     * Otherwise, it will return the block timestamp.\\n     * @return uint for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view virtual returns (uint256) {\\n        if (timerAddress != address(0x0)) {\\n            return Timer(timerAddress).getCurrentTime();\\n        } else {\\n            return block.timestamp; // solhint-disable-line not-rely-on-time\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../common/implementation/Testable.sol\\\";\\nimport \\\"../common/implementation/Lockable.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface TokenLike {\\n    function balanceOf(address guy) external returns (uint256 wad);\\n}\\n\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 wad) external;\\n}\\n\\n/**\\n * @title OVM Bridge Deposit Box.\\n * @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\\n */\\n\\nabstract contract BridgeDepositBox is Testable, Lockable {\\n    using SafeERC20 for IERC20;\\n    /*************************************\\n     *  OVM DEPOSIT BOX DATA STRUCTURES  *\\n     *************************************/\\n\\n    // ChainID of the L2 this deposit box is deployed on.\\n    uint256 public chainId;\\n\\n    // Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.\\n    address public l1Weth;\\n\\n    // Track the total number of deposits. Used as a unique identifier for bridged transfers.\\n    uint256 public numberOfDeposits;\\n\\n    struct L2TokenRelationships {\\n        address l1Token;\\n        address l1BridgePool;\\n        uint64 lastBridgeTime;\\n        bool depositsEnabled;\\n    }\\n\\n    // Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token\\n    // type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.\\n    mapping(address => L2TokenRelationships) public whitelistedTokens;\\n\\n    // Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.\\n    uint64 public minimumBridgingDelay;\\n\\n    /****************************************\\n     *                EVENTS                *\\n     ****************************************/\\n\\n    event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);\\n    event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);\\n    event DepositsEnabled(address l2Token, bool depositsEnabled);\\n    event FundsDeposited(\\n        uint256 chainId,\\n        uint256 depositId,\\n        address l1Recipient,\\n        address l2Sender,\\n        address l1Token,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    );\\n    event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);\\n\\n    /****************************************\\n     *               MODIFIERS              *\\n     ****************************************/\\n\\n    modifier onlyIfDepositsEnabled(address l2Token) {\\n        require(whitelistedTokens[l2Token].depositsEnabled, \\\"Contract is disabled\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the Bridge Deposit Box\\n     * @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\\n     * @param _chainId Chain identifier for the Bridge deposit box.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) Testable(timerAddress) {\\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\\n        chainId = _chainId;\\n        l1Weth = _l1Weth;\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {\\n        minimumBridgingDelay = newMinimumBridgingDelay;\\n        emit SetMinimumBridgingDelay(minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function _whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) internal {\\n        whitelistedTokens[l2Token] = L2TokenRelationships({\\n            l1Token: l1Token,\\n            l1BridgePool: l1BridgePool,\\n            lastBridgeTime: uint64(getCurrentTime()),\\n            depositsEnabled: true\\n        });\\n\\n        emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {\\n        whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;\\n        emit DepositsEnabled(l2Token, depositsEnabled);\\n    }\\n\\n    function bridgeTokens(address l2Token, uint32 l2Gas) public virtual;\\n\\n    /**************************************\\n     *         DEPOSITOR FUNCTIONS        *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by L2 user to bridge funds between L2 and L1.\\n     * @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\\n     * @dev The caller must first approve this contract to spend `amount` of `l2Token`.\\n     * @param l1Recipient L1 address that should receive the tokens.\\n     * @param l2Token L2 token to deposit.\\n     * @param amount How many L2 tokens should be deposited.\\n     * @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\\n     * @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\\n     * @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\\n     *    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\\n     */\\n    function deposit(\\n        address l1Recipient,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    ) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {\\n        require(isWhitelistToken(l2Token), \\\"deposit token not whitelisted\\\");\\n        // We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.\\n        // The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.\\n        require(slowRelayFeePct <= 0.25e18, \\\"slowRelayFeePct must be <= 25%\\\");\\n        require(instantRelayFeePct <= 0.25e18, \\\"instantRelayFeePct must be <= 25%\\\");\\n\\n        // Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp\\n        // corresponds to the L1 timestamp of the last confirmed L1 \\u21d2 L2 transaction. The quoteTime must be within 10\\n        // mins of the current time to allow for this variance.\\n        // Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result\\n        // in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.\\n        // Consider requiring `quoteTimestamp >= 10 minutes`.\\n        require(\\n            getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,\\n            \\\"deposit mined after deadline\\\"\\n        );\\n        // If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user\\n        // is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.\\n        if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {\\n            require(msg.value == amount, \\\"msg.value must match amount\\\");\\n            WETH9Like(address(l2Token)).deposit{ value: msg.value }();\\n        }\\n        // Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.\\n        // Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In\\n        // this case the msg.value will be set to 0, indicating a \\\"normal\\\" ERC20 bridging action.\\n        else IERC20(l2Token).safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit FundsDeposited(\\n            chainId,\\n            numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).\\n            l1Recipient,\\n            msg.sender,\\n            whitelistedTokens[l2Token].l1Token,\\n            l2Token,\\n            amount,\\n            slowRelayFeePct,\\n            instantRelayFeePct,\\n            quoteTimestamp\\n        );\\n\\n        numberOfDeposits += 1;\\n    }\\n\\n    /**************************************\\n     *           VIEW FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Checks if a given L2 token is whitelisted.\\n     * @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\\n     * the token has been whitelisted.\\n     * @param l2Token L2 token to check against the whitelist.\\n     * @return true if token is whitelised.\\n     */\\n    function isWhitelistToken(address l2Token) public view returns (bool) {\\n        return whitelistedTokens[l2Token].lastBridgeTime != 0;\\n    }\\n\\n    function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {\\n        return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;\\n    }\\n\\n    /**\\n     * @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\\n     * balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\\n     * and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\\n     * @dev This function is also public for caller convenience.\\n     * @param l2Token L2 token to check bridging status.\\n     * @return true if token is whitelised and enough time has elapsed since the previous bridge.\\n     */\\n    function canBridge(address l2Token) public view returns (bool) {\\n        return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);\\n    }\\n}\\n\",\"keccak256\":\"0x4ee97e2948d55ffd8a44769e452ee5e8de4fcb073388aef12a4c4e53bc99af21\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/RateModelStore.sol": {
                "RateModelStore": {
                    "abi": [
                        {
                            "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": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "string",
                                    "name": "rateModel",
                                    "type": "string"
                                }
                            ],
                            "name": "UpdatedRateModel",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "l1TokenRateModels",
                            "outputs": [
                                {
                                    "internalType": "string",
                                    "name": "",
                                    "type": "string"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "data",
                                    "type": "bytes[]"
                                }
                            ],
                            "name": "multicall",
                            "outputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "results",
                                    "type": "bytes[]"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "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"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "string",
                                    "name": "rateModel",
                                    "type": "string"
                                }
                            ],
                            "name": "updateRateModel",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "This contract is designed to be queried by off-chain relayers that need to compute realized LP fee %'s before submitting relay transactions to a BridgePool contract. Therefore, this contract does not perform any validation on the shape of the rate model, which is stored as a string to enable arbitrary data encoding via a stringified JSON object. This leaves this contract unopionated on the parameters within the rate model, enabling governance to adjust the structure in the future.",
                        "kind": "dev",
                        "methods": {
                            "owner()": {
                                "details": "Returns the address of the current owner."
                            },
                            "renounceOwnership()": {
                                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
                            },
                            "transferOwnership(address)": {
                                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
                            },
                            "updateRateModel(address,string)": {
                                "params": {
                                    "l1Token": "the l1 token rate model to update.",
                                    "rateModel": "the updated rate model."
                                }
                            }
                        },
                        "title": "Maps rate model objects to L1 token.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_655": {
                                    "entryPoint": null,
                                    "id": 655,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610d37806100616000396000f3fe6080604052600436106100655760003560e01c80638da5cb5b116100435780638da5cb5b146100d7578063ac9650d81461010c578063f2fde38b1461012c57600080fd5b80630be5512b1461006a578063715018a61461008c57806374cc3f3e146100a1575b600080fd5b34801561007657600080fd5b5061008a6100853660046108f6565b61014c565b005b34801561009857600080fd5b5061008a61025b565b3480156100ad57600080fd5b506100c16100bc366004610987565b61034b565b6040516100ce9190610a23565b60405180910390f35b3480156100e357600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ce565b61011f61011a366004610a36565b6103e5565b6040516100ce9190610aab565b34801561013857600080fd5b5061008a610147366004610987565b6105bf565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160209081526040909120825161020892840190610770565b508173ffffffffffffffffffffffffffffffffffffffff167fffbed0e73ca0e16b79488dd92e2cea865dd04b08d41dd27f05abbad9584581388260405161024f9190610a23565b60405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c9565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6001602052600090815260409020805461036490610b2b565b80601f016020809104026020016040519081016040528092919081815260200182805461039090610b2b565b80156103dd5780601f106103b2576101008083540402835291602001916103dd565b820191906000526020600020905b8154815290600101906020018083116103c057829003601f168201915b505050505081565b6060341561044f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c7565000000000060448201526064016101c9565b8167ffffffffffffffff81111561046857610468610832565b60405190808252806020026020018201604052801561049b57816020015b60608152602001906001900390816104865790505b50905060005b828110156105b857600080308686858181106104bf576104bf610b7f565b90506020028101906104d19190610bae565b6040516104df929190610c1a565b600060405180830381855af49150503d806000811461051a576040519150601f19603f3d011682016040523d82523d6000602084013e61051f565b606091505b5091509150816105855760448151101561053857600080fd5b600481019050808060200190518101906105529190610c2a565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c99190610a23565b8084848151811061059857610598610b7f565b6020026020010181905250505080806105b090610ca1565b9150506104a1565b5092915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c9565b73ffffffffffffffffffffffffffffffffffffffff81166106e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101c9565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805461077c90610b2b565b90600052602060002090601f01602090048101928261079e57600085556107e4565b82601f106107b757805160ff19168380011785556107e4565b828001600101855582156107e4579182015b828111156107e45782518255916020019190600101906107c9565b506107f09291506107f4565b5090565b5b808211156107f057600081556001016107f5565b803573ffffffffffffffffffffffffffffffffffffffff8116811461082d57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108a8576108a8610832565b604052919050565b600067ffffffffffffffff8211156108ca576108ca610832565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806040838503121561090957600080fd5b61091283610809565b9150602083013567ffffffffffffffff81111561092e57600080fd5b8301601f8101851361093f57600080fd5b803561095261094d826108b0565b610861565b81815286602083850101111561096757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561099957600080fd5b6109a282610809565b9392505050565b60005b838110156109c45781810151838201526020016109ac565b838111156109d3576000848401525b50505050565b600081518084526109f18160208601602086016109a9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109a260208301846109d9565b60008060208385031215610a4957600080fd5b823567ffffffffffffffff80821115610a6157600080fd5b818501915085601f830112610a7557600080fd5b813581811115610a8457600080fd5b8660208260051b8501011115610a9957600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610b1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610b0c8583516109d9565b94509285019290850190600101610ad2565b5092979650505050505050565b600181811c90821680610b3f57607f821691505b60208210811415610b79577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610be357600080fd5b83018035915067ffffffffffffffff821115610bfe57600080fd5b602001915036819003821315610c1357600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215610c3c57600080fd5b815167ffffffffffffffff811115610c5357600080fd5b8201601f81018413610c6457600080fd5b8051610c7261094d826108b0565b818152856020838501011115610c8757600080fd5b610c988260208301602086016109a9565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610cfa577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122090dbfcb878b9d9a38a4df23721dfef55201e4816fd2bf5b2e3156e8411c025a064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH2 0xD37 DUP1 PUSH2 0x61 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBE5512B EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x74CC3F3E EQ PUSH2 0xA1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F6 JUMP JUMPDEST PUSH2 0x14C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x25B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC1 PUSH2 0xBC CALLDATASIZE PUSH1 0x4 PUSH2 0x987 JUMP JUMPDEST PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0xA23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCE JUMP JUMPDEST PUSH2 0x11F PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x3E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0xAAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x147 CALLDATASIZE PUSH1 0x4 PUSH2 0x987 JUMP JUMPDEST PUSH2 0x5BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP3 MLOAD PUSH2 0x208 SWAP3 DUP5 ADD SWAP1 PUSH2 0x770 JUMP JUMPDEST POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFBED0E73CA0E16B79488DD92E2CEA865DD04B08D41DD27F05ABBAD958458138 DUP3 PUSH1 0x40 MLOAD PUSH2 0x24F SWAP2 SWAP1 PUSH2 0xA23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x364 SWAP1 PUSH2 0xB2B 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 0x390 SWAP1 PUSH2 0xB2B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3DD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0x44F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1C9 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x468 JUMPI PUSH2 0x468 PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x49B JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x486 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x4BF JUMPI PUSH2 0x4BF PUSH2 0xB7F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x4D1 SWAP2 SWAP1 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4DF SWAP3 SWAP2 SWAP1 PUSH2 0xC1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x51A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x51F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x585 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x552 SWAP2 SWAP1 PUSH2 0xC2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0xA23 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x598 JUMPI PUSH2 0x598 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x5B0 SWAP1 PUSH2 0xCA1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4A1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1C9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x77C SWAP1 PUSH2 0xB2B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x79E JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x7E4 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x7B7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x7E4 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x7E4 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x7E4 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x7C9 JUMP JUMPDEST POP PUSH2 0x7F0 SWAP3 SWAP2 POP PUSH2 0x7F4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x7F5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x82D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x8A8 JUMPI PUSH2 0x8A8 PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x8CA JUMPI PUSH2 0x8CA PUSH2 0x832 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x912 DUP4 PUSH2 0x809 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x952 PUSH2 0x94D DUP3 PUSH2 0x8B0 JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9A2 DUP3 PUSH2 0x809 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9C4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9AC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x9F1 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x9A2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xA84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xB1E JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0xB0C DUP6 DUP4 MLOAD PUSH2 0x9D9 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xAD2 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xB3F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xB79 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xBFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xC13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0xC64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xC72 PUSH2 0x94D DUP3 PUSH2 0x8B0 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC98 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9A9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xCFA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 0xDB 0xFC 0xB8 PUSH25 0xB9D9A38A4DF23721DFEF55201E4816FD2BF5B2E3156E8411C0 0x25 LOG0 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "733:554:45:-:0;;;;;;;;;;;;-1:-1:-1;867:17:5;909:18;;-1:-1:-1;;;;;;909:18:5;665:10:12;909:18:5;;;;;942:43;;665:10:12;;;;942:43:5;;867:17;;942:43;857:135;733:554:45;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@l1TokenRateModels_8646": {
                                    "entryPoint": 843,
                                    "id": 8646,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@multicall_5523": {
                                    "entryPoint": 997,
                                    "id": 5523,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@owner_664": {
                                    "entryPoint": null,
                                    "id": 664,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@renounceOwnership_700": {
                                    "entryPoint": 603,
                                    "id": 700,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@transferOwnership_728": {
                                    "entryPoint": 1471,
                                    "id": 728,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@updateRateModel_8674": {
                                    "entryPoint": 332,
                                    "id": 8674,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_decode_address": {
                                    "entryPoint": 2057,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 2439,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_string_memory_ptr": {
                                    "entryPoint": 2294,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                                    "entryPoint": 2614,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                                    "entryPoint": 3114,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_string": {
                                    "entryPoint": 2521,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 3098,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 2731,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 2595,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "access_calldata_tail_t_bytes_calldata_ptr": {
                                    "entryPoint": 2990,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "allocate_memory": {
                                    "entryPoint": 2145,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "array_allocation_size_string": {
                                    "entryPoint": 2224,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 2473,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 2859,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "increment_t_uint256": {
                                    "entryPoint": 3233,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x32": {
                                    "entryPoint": 2943,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 2098,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:8082:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "63:147:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "73:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "95:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "82:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "82:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "73:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "188:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "197:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "200:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "190:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "190:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "190:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "124:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "135:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "142:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "131:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "131:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "121:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "121:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "114:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "114:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "111:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "42:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "53:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "247:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "264:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "267:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "257:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "257:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "257:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "361:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "364:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "354:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "354:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "354:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "385:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "388:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "378:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "378:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "378:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "215:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "449:289:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "459:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "475:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "469:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "469:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "459:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "487:117:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "509:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "size",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "525:4:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "531:2:66",
                                                                                        "type": "",
                                                                                        "value": "31"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "521:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "521:13:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "536:66:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "517:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "517:86:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "505:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "505:99:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "491:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "679:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "681:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "681:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "681:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "622:10:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "634:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "619:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "619:34:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "658:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "670:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "655:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "655:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "616:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "616:62:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "613:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "717:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "721:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "710:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "710:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "710:22:66"
                                                        }
                                                    ]
                                                },
                                                "name": "allocate_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "size",
                                                        "nodeType": "YulTypedName",
                                                        "src": "429:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "438:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "404:334:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "801:188:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "845:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "847:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "847:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "847:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "817:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "825:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "814:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "814:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "811:56:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "876:107:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "896:6:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "904:2:66",
                                                                                        "type": "",
                                                                                        "value": "31"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "892:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "892:15:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "909:66:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "888:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "888:88:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "978:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "884:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "884:99:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "size",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "876:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "array_allocation_size_string",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "781:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "size",
                                                        "nodeType": "YulTypedName",
                                                        "src": "792:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "743:246:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1091:650:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1137:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1146:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1149:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1139:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1139:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1139:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1112:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1121:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1108:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1108:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1133:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1104:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1104:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1101:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1162:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1191:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1172:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1172:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1162:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1210:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1241:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1252:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1237:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1237:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1224:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1224:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1214:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1299:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1308:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1311:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1301:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1301:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1301:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1271:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1279:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1268:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1268:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1265:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1324:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1338:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1349:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1334:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1334:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1328:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1404:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1413:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1416:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1406:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1406:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1406:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1383:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1387:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1379:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1379:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1394:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1375:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1375:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1368:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1368:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1365:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1429:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1452:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1439:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1439:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1433:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1464:62:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1522:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "array_allocation_size_string",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1493:28:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1493:32:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "allocate_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1477:15:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1477:49:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "array",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1468:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "array",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1542:5:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1549:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1535:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1535:17:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1535:17:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1598:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1607:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1610:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1600:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1600:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1600:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1575:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1579:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1571:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1571:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1584:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1567:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1567:20:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1589:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1564:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1564:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1561:53:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "array",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1640:5:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1647:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1636:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1636:14:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1656:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1660:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1652:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1652:11:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1665:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1623:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1623:45:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1623:45:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "array",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1692:5:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1699:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1688:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1688:14:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1704:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1684:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1684:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1709:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1677:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1677:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1677:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1720:15:66",
                                                            "value": {
                                                                "name": "array",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1730:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1720:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_string_memory_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1049:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1060:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1072:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1080:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "994:747:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1816:116:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1862:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1871:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1874:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1864:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1864:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1864:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1837:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1846:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1833:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1833:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1858:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1829:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1829:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1826:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1887:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1916:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1897:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1897:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1887:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1782:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1793:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1805:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1746:186:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1990:205:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2000:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2009:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2004:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2069:63:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2094:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2099:1:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2090:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2090:11:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2113:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2118:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2109:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2109:11:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2103:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2103:18:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2083:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2083:39:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2083:39:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2030:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2033:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2027:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2027:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2041:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2043:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2052:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2055:2:66",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2048:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2048:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2043:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2023:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "2019:113:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2158:31:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2171:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2176:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2167:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2167:16:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2185:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2160:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2160:27:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2160:27:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2147:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2150:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2144:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2144:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2141:48:66"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1968:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1973:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1978:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1937:258:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2250:267:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2260:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2280:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2274:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2274:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2264:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2302:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2307:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2295:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2295:19:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2295:19:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2349:5:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2356:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2345:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2345:16:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2367:3:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2372:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2363:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2363:14:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2379:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2323:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2323:63:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2323:63:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2395:116:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2410:3:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2423:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "2431:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2419:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2419:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2436:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2415:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2415:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2406:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2406:98:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2506:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2402:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2402:109:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2395:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_string",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2227:5:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2234:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2242:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2200:317:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2643:99:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2660:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2671:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2653:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2653:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2653:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2683:53:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2709:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2721:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2732:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2717:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2717:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_string",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2691:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2691:45:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2683:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2612:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2623:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2634:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2522:220:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2848:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2858:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2870:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2881:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2866:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2866:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2858:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2900:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2915:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2923:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2911:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2911:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2893:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2893:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2893:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2817:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2828:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2839:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2747:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3094:510:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3140:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3149:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3152:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3142:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3142:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3142:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3115:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3124:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3111:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3111:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3136:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3107:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3107:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3104:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3165:37:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3192:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3179:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3179:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3169:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3211:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3221:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3215:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3266:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3275:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3278:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3268:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3268:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3268:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3254:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3262:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3251:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3251:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3248:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3291:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3305:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3316:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3301:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3301:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3295:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3371:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3380:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3383:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3373:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3373:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3373:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3350:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3354:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3346:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3346:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3361:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3342:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3342:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3335:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3335:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3332:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3396:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3423:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3410:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3410:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3400:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3453:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3462:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3465:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3455:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3455:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3455:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3441:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3449:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3438:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3438:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3435:34:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3527:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3536:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3539:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3529:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3529:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3529:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3492:2:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3500:1:66",
                                                                                                "type": "",
                                                                                                "value": "5"
                                                                                            },
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3503:6:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3496:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3496:14:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3488:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3488:23:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3513:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3484:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3484:32:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3518:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3481:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3481:45:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3478:65:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3552:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3566:2:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3570:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3562:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3562:11:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3552:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3582:16:66",
                                                            "value": {
                                                                "name": "length",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3592:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3582:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3052:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3063:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3075:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3083:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2978:626:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3778:691:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3788:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3798:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3792:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3809:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3827:9:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3838:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3823:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3823:18:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3813:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3857:9:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3868:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3850:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3850:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3850:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3880:17:66",
                                                            "value": {
                                                                "name": "tail_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3891:6:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3884:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3906:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3926:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3920:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3920:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3910:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "tail_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3949:6:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3957:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3942:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3942:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3942:22:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3973:25:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3984:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3995:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3980:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3980:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3973:3:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4007:53:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4029:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4044:1:66",
                                                                                        "type": "",
                                                                                        "value": "5"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4047:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4040:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4040:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4025:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4025:30:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4057:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4021:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4021:39:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4011:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4069:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4087:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4095:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4083:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4083:15:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4073:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4107:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4116:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4111:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4175:265:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4196:3:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "tail_2",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "4209:6:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "4217:9:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "sub",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "4205:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "4205:22:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "4229:66:66",
                                                                                            "type": "",
                                                                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4201:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "4201:95:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4189:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4189:108:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4189:108:66"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "4310:50:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "srcPtr",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4344:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4338:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "4338:13:66"
                                                                                },
                                                                                {
                                                                                    "name": "tail_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4353:6:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "abi_encode_string",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4320:17:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4320:40:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "tail_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4310:6:66"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "4373:25:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "srcPtr",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4387:6:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4395:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4383:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4383:15:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "srcPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4373:6:66"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "4411:19:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4422:3:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4427:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4418:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4418:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4411:3:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4137:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4140:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4134:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4134:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4148:18:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "4150:14:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4159:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4162:1:66",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4155:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4155:9:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4150:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4130:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "4126:314:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4449:14:66",
                                                            "value": {
                                                                "name": "tail_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4457:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4449:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3747:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3758:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3769:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3609:860:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4648:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4665:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4676:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4658:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4658:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4658:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4699:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4710:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4695:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4695:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4715:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4688:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4688:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4688:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4738:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4749:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4734:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4734:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4754:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: caller is not the owner"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4727:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4727:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4727:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4798:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4810:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4821:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4806:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4806:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4798:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4625:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4639:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4474:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4890:382:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4900:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4914:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4917:4:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4910:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4910:12:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4900:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4931:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4961:4:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4967:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4957:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4957:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4935:18:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5008:31:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "5010:27:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5024:6:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5032:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5020:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5020:17:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5010:6:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4988:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4981:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4981:26:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4978:61:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5098:168:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5119:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5122:77:66",
                                                                                    "type": "",
                                                                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5112:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5112:88:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5112:88:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5220:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5223:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5213:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5213:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5213:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5248:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5251:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5241:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5241:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5241:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5054:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5077:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5085:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5074:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5074:14:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5051:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5051:38:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5048:218:66"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4870:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4879:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4835:437:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5451:177:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5468:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5479:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5461:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5461:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5461:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5502:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5513:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5498:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5498:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5518:2:66",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5491:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5491:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5491:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5541:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5552:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5537:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5537:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f6e6c79206d756c746963616c6c207769746820302076616c7565",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5557:29:66",
                                                                        "type": "",
                                                                        "value": "Only multicall with 0 value"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5530:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5530:57:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5530:57:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5596:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5608:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5619:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5604:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5604:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5596:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5428:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5442:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5277:351:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5665:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5682:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5685:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5675:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5675:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5675:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5779:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5782:4:66",
                                                                        "type": "",
                                                                        "value": "0x32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5772:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5772:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5772:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5803:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5806:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5796:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5796:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5796:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x32",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "5633:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5916:486:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5926:51:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "ptr_to_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5965:11:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5952:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5952:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "rel_offset_of_tail",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5930:18:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6125:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6134:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6137:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6127:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6127:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6127:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "rel_offset_of_tail",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6000:18:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [],
                                                                                                "functionName": {
                                                                                                    "name": "calldatasize",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6028:12:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "6028:14:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "base_ref",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "6044:8:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6024:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6024:29:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6055:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6020:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6020:102:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5996:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5996:127:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5989:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5989:135:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5986:155:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6150:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "base_ref",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6168:8:66"
                                                                    },
                                                                    {
                                                                        "name": "rel_offset_of_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6178:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6164:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6164:33:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "addr_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6154:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6206:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6229:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6216:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6216:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6206:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6279:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6288:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6291:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6281:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6281:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6281:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6251:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6259:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6248:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6248:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6245:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6304:25:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6316:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6324:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6312:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6312:17:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "addr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6304:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6380:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6389:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6392:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6382:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6382:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6382:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6345:4:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [],
                                                                                "functionName": {
                                                                                    "name": "calldatasize",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6355:12:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6355:14:66"
                                                                            },
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6371:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6351:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6351:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sgt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6341:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6341:38:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6338:58:66"
                                                        }
                                                    ]
                                                },
                                                "name": "access_calldata_tail_t_bytes_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "base_ref",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5873:8:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "ptr_to_tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5883:11:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "addr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5899:4:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5905:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5822:580:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6554:124:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6577:3:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6582:6:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6590:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6564:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6564:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6564:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6606:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6620:3:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6625:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6616:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6616:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6610:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6648:2:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6652:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6641:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6641:13:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6641:13:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6663:9:66",
                                                            "value": {
                                                                "name": "_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6670:2:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6663:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6522:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6527:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6535:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6546:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6407:271:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6774:545:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6820:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6829:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6832:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6822:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6822:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6822:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6795:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6804:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6791:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6791:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6816:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6787:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6787:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6784:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6845:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6865:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6859:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6859:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6849:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6918:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6927:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6930:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6920:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6920:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6920:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6890:6:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6898:18:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6887:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6887:30:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6884:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6943:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6957:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6968:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6953:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6953:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6947:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7023:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7032:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7035:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7025:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7025:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7025:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "7002:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "7006:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6998:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6998:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7013:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6994:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6994:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6987:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6987:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6984:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7048:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7064:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7058:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7058:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7052:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7076:62:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7134:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "array_allocation_size_string",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7105:28:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7105:32:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "allocate_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7089:15:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7089:49:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "array",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7080:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "array",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7154:5:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7161:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7147:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7147:17:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7147:17:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7210:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7219:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7222:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7212:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7212:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7212:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "7187:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "7191:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "7183:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "7183:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7196:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7179:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7179:20:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7201:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7176:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7176:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7173:53:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7261:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7265:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7257:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7257:11:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "array",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7274:5:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7281:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7270:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7270:14:66"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7286:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7235:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7235:54:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7235:54:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7298:15:66",
                                                            "value": {
                                                                "name": "array",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7308:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7298:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6740:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6751:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6763:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6683:636:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7371:302:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7470:168:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7491:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7494:77:66",
                                                                                    "type": "",
                                                                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7484:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7484:88:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7484:88:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7592:1:66",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7595:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x11"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7585:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7585:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7585:15:66"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7620:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7623:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7613:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7613:15:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7613:15:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7387:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7394:66:66",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7384:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7384:77:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7381:257:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7647:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7658:5:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7665:1:66",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7654:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7654:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7647:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7353:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7363:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7324:349:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7852:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7869:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7880:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7862:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7862:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7862:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7903:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7914:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7899:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7899:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7919:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7892:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7892:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7892:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7942:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7953:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7938:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7938:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7958:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: new owner is the zero a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7931:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7931:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7931:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8013:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8024:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8009:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8009:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8029:8:66",
                                                                        "type": "",
                                                                        "value": "ddress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8002:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8002:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8002:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8047:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8059:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8070:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8055:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8055:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8047:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7829:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7843:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7678:402:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_string(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function abi_decode_tuple_t_addresst_string_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := calldataload(_1)\n        let array := allocate_memory(array_allocation_size_string(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, 32), add(_1, 32), _2)\n        mstore(add(add(array, _2), 32), 0)\n        value1 := array\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_string(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Only multicall with 0 value\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := mload(_1)\n        let array := allocate_memory(array_allocation_size_string(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600436106100655760003560e01c80638da5cb5b116100435780638da5cb5b146100d7578063ac9650d81461010c578063f2fde38b1461012c57600080fd5b80630be5512b1461006a578063715018a61461008c57806374cc3f3e146100a1575b600080fd5b34801561007657600080fd5b5061008a6100853660046108f6565b61014c565b005b34801561009857600080fd5b5061008a61025b565b3480156100ad57600080fd5b506100c16100bc366004610987565b61034b565b6040516100ce9190610a23565b60405180910390f35b3480156100e357600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ce565b61011f61011a366004610a36565b6103e5565b6040516100ce9190610aab565b34801561013857600080fd5b5061008a610147366004610987565b6105bf565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160209081526040909120825161020892840190610770565b508173ffffffffffffffffffffffffffffffffffffffff167fffbed0e73ca0e16b79488dd92e2cea865dd04b08d41dd27f05abbad9584581388260405161024f9190610a23565b60405180910390a25050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c9565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6001602052600090815260409020805461036490610b2b565b80601f016020809104026020016040519081016040528092919081815260200182805461039090610b2b565b80156103dd5780601f106103b2576101008083540402835291602001916103dd565b820191906000526020600020905b8154815290600101906020018083116103c057829003601f168201915b505050505081565b6060341561044f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c7565000000000060448201526064016101c9565b8167ffffffffffffffff81111561046857610468610832565b60405190808252806020026020018201604052801561049b57816020015b60608152602001906001900390816104865790505b50905060005b828110156105b857600080308686858181106104bf576104bf610b7f565b90506020028101906104d19190610bae565b6040516104df929190610c1a565b600060405180830381855af49150503d806000811461051a576040519150601f19603f3d011682016040523d82523d6000602084013e61051f565b606091505b5091509150816105855760448151101561053857600080fd5b600481019050808060200190518101906105529190610c2a565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c99190610a23565b8084848151811061059857610598610b7f565b6020026020010181905250505080806105b090610ca1565b9150506104a1565b5092915050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101c9565b73ffffffffffffffffffffffffffffffffffffffff81166106e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101c9565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805461077c90610b2b565b90600052602060002090601f01602090048101928261079e57600085556107e4565b82601f106107b757805160ff19168380011785556107e4565b828001600101855582156107e4579182015b828111156107e45782518255916020019190600101906107c9565b506107f09291506107f4565b5090565b5b808211156107f057600081556001016107f5565b803573ffffffffffffffffffffffffffffffffffffffff8116811461082d57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108a8576108a8610832565b604052919050565b600067ffffffffffffffff8211156108ca576108ca610832565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000806040838503121561090957600080fd5b61091283610809565b9150602083013567ffffffffffffffff81111561092e57600080fd5b8301601f8101851361093f57600080fd5b803561095261094d826108b0565b610861565b81815286602083850101111561096757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561099957600080fd5b6109a282610809565b9392505050565b60005b838110156109c45781810151838201526020016109ac565b838111156109d3576000848401525b50505050565b600081518084526109f18160208601602086016109a9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109a260208301846109d9565b60008060208385031215610a4957600080fd5b823567ffffffffffffffff80821115610a6157600080fd5b818501915085601f830112610a7557600080fd5b813581811115610a8457600080fd5b8660208260051b8501011115610a9957600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610b1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610b0c8583516109d9565b94509285019290850190600101610ad2565b5092979650505050505050565b600181811c90821680610b3f57607f821691505b60208210811415610b79577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610be357600080fd5b83018035915067ffffffffffffffff821115610bfe57600080fd5b602001915036819003821315610c1357600080fd5b9250929050565b8183823760009101908152919050565b600060208284031215610c3c57600080fd5b815167ffffffffffffffff811115610c5357600080fd5b8201601f81018413610c6457600080fd5b8051610c7261094d826108b0565b818152856020838501011115610c8757600080fd5b610c988260208301602086016109a9565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610cfa577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122090dbfcb878b9d9a38a4df23721dfef55201e4816fd2bf5b2e3156e8411c025a064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBE5512B EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x74CC3F3E EQ PUSH2 0xA1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0x8F6 JUMP JUMPDEST PUSH2 0x14C JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x25B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC1 PUSH2 0xBC CALLDATASIZE PUSH1 0x4 PUSH2 0x987 JUMP JUMPDEST PUSH2 0x34B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0xA23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xCE JUMP JUMPDEST PUSH2 0x11F PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x3E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xCE SWAP2 SWAP1 PUSH2 0xAAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x147 CALLDATASIZE PUSH1 0x4 PUSH2 0x987 JUMP JUMPDEST PUSH2 0x5BF JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP3 MLOAD PUSH2 0x208 SWAP3 DUP5 ADD SWAP1 PUSH2 0x770 JUMP JUMPDEST POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFBED0E73CA0E16B79488DD92E2CEA865DD04B08D41DD27F05ABBAD958458138 DUP3 PUSH1 0x40 MLOAD PUSH2 0x24F SWAP2 SWAP1 PUSH2 0xA23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2DC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x364 SWAP1 PUSH2 0xB2B 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 0x390 SWAP1 PUSH2 0xB2B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3DD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B2 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0x44F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1C9 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x468 JUMPI PUSH2 0x468 PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x49B JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x486 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x4BF JUMPI PUSH2 0x4BF PUSH2 0xB7F JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x4D1 SWAP2 SWAP1 PUSH2 0xBAE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4DF SWAP3 SWAP2 SWAP1 PUSH2 0xC1A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x51A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x51F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x585 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x538 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x552 SWAP2 SWAP1 PUSH2 0xC2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1C9 SWAP2 SWAP1 PUSH2 0xA23 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x598 JUMPI PUSH2 0x598 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x5B0 SWAP1 PUSH2 0xCA1 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4A1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x640 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1C9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH2 0x77C SWAP1 PUSH2 0xB2B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH2 0x79E JUMPI PUSH1 0x0 DUP6 SSTORE PUSH2 0x7E4 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH2 0x7B7 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x7E4 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x7E4 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x7E4 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x7C9 JUMP JUMPDEST POP PUSH2 0x7F0 SWAP3 SWAP2 POP PUSH2 0x7F4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x7F5 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x82D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x8A8 JUMPI PUSH2 0x8A8 PUSH2 0x832 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x8CA JUMPI PUSH2 0x8CA PUSH2 0x832 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x909 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x912 DUP4 PUSH2 0x809 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x92E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x93F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x952 PUSH2 0x94D DUP3 PUSH2 0x8B0 JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP7 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x999 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9A2 DUP3 PUSH2 0x809 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9C4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9AC JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x9D3 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x9F1 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9A9 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x9A2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xA84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xB1E JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0xB0C DUP6 DUP4 MLOAD PUSH2 0x9D9 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xAD2 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xB3F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xB79 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xBE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xBFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xC13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0xC64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xC72 PUSH2 0x94D DUP3 PUSH2 0x8B0 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC98 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x9A9 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xCFA JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP1 0xDB 0xFC 0xB8 PUSH25 0xB9D9A38A4DF23721DFEF55201E4816FD2BF5B2E3156E8411C0 0x25 LOG0 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "733:554:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1093:192;;;;;;;;;;-1:-1:-1;1093:192:45;;;;;:::i;:::-;;:::i;:::-;;1700:145:5;;;;;;;;;;;;;:::i;787:51:45:-;;;;;;;;;;-1:-1:-1;787:51:45;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1068:85:5;;;;;;;;;;-1:-1:-1;1114:7:5;1140:6;1068:85;;1140:6;;;;2893:74:66;;2881:2;2866:18;1068:85:5;2747:226:66;528:710:29;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1994:240:5:-;;;;;;;;;;-1:-1:-1;1994:240:5;;;;;:::i;:::-;;:::i;1093:192:45:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;4676:2:66;1272:68:5;;;4658:21:66;;;4695:18;;;4688:30;4754:34;4734:18;;;4727:62;4806:18;;1272:68:5;;;;;;;;;1189:26:45::1;::::0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:38;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;1259:7;1242:36;;;1268:9;1242:36;;;;;;:::i;:::-;;;;;;;;1093:192:::0;;:::o;1700:145:5:-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;4676:2:66;1272:68:5;;;4658:21:66;;;4695:18;;;4688:30;4754:34;4734:18;;;4727:62;4806:18;;1272:68:5;4474:356:66;1272:68:5;1806:1:::1;1790:6:::0;;1769:40:::1;::::0;::::1;1790:6:::0;;::::1;::::0;1769:40:::1;::::0;1806:1;;1769:40:::1;1836:1;1819:19:::0;;;::::1;::::0;;1700:145::o;787:51:45:-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;528:710:29:-;596:22;638:9;:14;630:54;;;;;;;5479:2:66;630:54:29;;;5461:21:66;5518:2;5498:18;;;5491:30;5557:29;5537:18;;;5530:57;5604:18;;630:54:29;5277:351:66;630:54:29;716:4;704:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:34;;743:9;738:494;758:15;;;738:494;;;795:12;;840:4;859;;864:1;859:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;832:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;794:73;;;;887:7;882:306;;1014:2;998:6;:13;:18;994:32;;;1018:8;;;994:32;1097:4;1089:6;1085:17;1075:27;;1155:6;1144:28;;;;;;;;;;;;:::i;:::-;1137:36;;;;;;;;;;;:::i;882:306::-;1215:6;1202:7;1210:1;1202:10;;;;;;;;:::i;:::-;;;;;;:19;;;;780:452;;775:3;;;;;:::i;:::-;;;;738:494;;;;528:710;;;;:::o;1994:240:5:-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;4676:2:66;1272:68:5;;;4658:21:66;;;4695:18;;;4688:30;4754:34;4734:18;;;4727:62;4806:18;;1272:68:5;4474:356:66;1272:68:5;2082:22:::1;::::0;::::1;2074:73;;;::::0;::::1;::::0;;7880:2:66;2074:73:5::1;::::0;::::1;7862:21:66::0;7919:2;7899:18;;;7892:30;7958:34;7938:18;;;7931:62;8029:8;8009:18;;;8002:36;8055:19;;2074:73:5::1;7678:402:66::0;2074:73:5::1;2183:6;::::0;;2162:38:::1;::::0;::::1;::::0;;::::1;::::0;2183:6;::::1;::::0;2162:38:::1;::::0;::::1;2210:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1994:240::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:196:66;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:184::-;267:77;264:1;257:88;364:4;361:1;354:15;388:4;385:1;378:15;404:334;475:2;469:9;531:2;521:13;;536:66;517:86;505:99;;634:18;619:34;;655:22;;;616:62;613:88;;;681:18;;:::i;:::-;717:2;710:22;404:334;;-1:-1:-1;404:334:66:o;743:246::-;792:4;825:18;817:6;814:30;811:56;;;847:18;;:::i;:::-;-1:-1:-1;904:2:66;892:15;909:66;888:88;978:4;884:99;;743:246::o;994:747::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1172:29;1191:9;1172:29;:::i;:::-;1162:39;;1252:2;1241:9;1237:18;1224:32;1279:18;1271:6;1268:30;1265:50;;;1311:1;1308;1301:12;1265:50;1334:22;;1387:4;1379:13;;1375:27;-1:-1:-1;1365:55:66;;1416:1;1413;1406:12;1365:55;1452:2;1439:16;1477:49;1493:32;1522:2;1493:32;:::i;:::-;1477:49;:::i;:::-;1549:2;1542:5;1535:17;1589:7;1584:2;1579;1575;1571:11;1567:20;1564:33;1561:53;;;1610:1;1607;1600:12;1561:53;1665:2;1660;1656;1652:11;1647:2;1640:5;1636:14;1623:45;1709:1;1704:2;1699;1692:5;1688:14;1684:23;1677:34;1730:5;1720:15;;;;;994:747;;;;;:::o;1746:186::-;1805:6;1858:2;1846:9;1837:7;1833:23;1829:32;1826:52;;;1874:1;1871;1864:12;1826:52;1897:29;1916:9;1897:29;:::i;:::-;1887:39;1746:186;-1:-1:-1;;;1746:186:66:o;1937:258::-;2009:1;2019:113;2033:6;2030:1;2027:13;2019:113;;;2109:11;;;2103:18;2090:11;;;2083:39;2055:2;2048:10;2019:113;;;2150:6;2147:1;2144:13;2141:48;;;2185:1;2176:6;2171:3;2167:16;2160:27;2141:48;;1937:258;;;:::o;2200:317::-;2242:3;2280:5;2274:12;2307:6;2302:3;2295:19;2323:63;2379:6;2372:4;2367:3;2363:14;2356:4;2349:5;2345:16;2323:63;:::i;:::-;2431:2;2419:15;2436:66;2415:88;2406:98;;;;2506:4;2402:109;;2200:317;-1:-1:-1;;2200:317:66:o;2522:220::-;2671:2;2660:9;2653:21;2634:4;2691:45;2732:2;2721:9;2717:18;2709:6;2691:45;:::i;2978:626::-;3075:6;3083;3136:2;3124:9;3115:7;3111:23;3107:32;3104:52;;;3152:1;3149;3142:12;3104:52;3192:9;3179:23;3221:18;3262:2;3254:6;3251:14;3248:34;;;3278:1;3275;3268:12;3248:34;3316:6;3305:9;3301:22;3291:32;;3361:7;3354:4;3350:2;3346:13;3342:27;3332:55;;3383:1;3380;3373:12;3332:55;3423:2;3410:16;3449:2;3441:6;3438:14;3435:34;;;3465:1;3462;3455:12;3435:34;3518:7;3513:2;3503:6;3500:1;3496:14;3492:2;3488:23;3484:32;3481:45;3478:65;;;3539:1;3536;3529:12;3478:65;3570:2;3562:11;;;;;3592:6;;-1:-1:-1;2978:626:66;;-1:-1:-1;;;;2978:626:66:o;3609:860::-;3769:4;3798:2;3838;3827:9;3823:18;3868:2;3857:9;3850:21;3891:6;3926;3920:13;3957:6;3949;3942:22;3995:2;3984:9;3980:18;3973:25;;4057:2;4047:6;4044:1;4040:14;4029:9;4025:30;4021:39;4007:53;;4095:2;4087:6;4083:15;4116:1;4126:314;4140:6;4137:1;4134:13;4126:314;;;4229:66;4217:9;4209:6;4205:22;4201:95;4196:3;4189:108;4320:40;4353:6;4344;4338:13;4320:40;:::i;:::-;4310:50;-1:-1:-1;4418:12:66;;;;4383:15;;;;4162:1;4155:9;4126:314;;;-1:-1:-1;4457:6:66;;3609:860;-1:-1:-1;;;;;;;3609:860:66:o;4835:437::-;4914:1;4910:12;;;;4957;;;4978:61;;5032:4;5024:6;5020:17;5010:27;;4978:61;5085:2;5077:6;5074:14;5054:18;5051:38;5048:218;;;5122:77;5119:1;5112:88;5223:4;5220:1;5213:15;5251:4;5248:1;5241:15;5048:218;;4835:437;;;:::o;5633:184::-;5685:77;5682:1;5675:88;5782:4;5779:1;5772:15;5806:4;5803:1;5796:15;5822:580;5899:4;5905:6;5965:11;5952:25;6055:66;6044:8;6028:14;6024:29;6020:102;6000:18;5996:127;5986:155;;6137:1;6134;6127:12;5986:155;6164:33;;6216:20;;;-1:-1:-1;6259:18:66;6248:30;;6245:50;;;6291:1;6288;6281:12;6245:50;6324:4;6312:17;;-1:-1:-1;6355:14:66;6351:27;;;6341:38;;6338:58;;;6392:1;6389;6382:12;6338:58;5822:580;;;;;:::o;6407:271::-;6590:6;6582;6577:3;6564:33;6546:3;6616:16;;6641:13;;;6616:16;6407:271;-1:-1:-1;6407:271:66:o;6683:636::-;6763:6;6816:2;6804:9;6795:7;6791:23;6787:32;6784:52;;;6832:1;6829;6822:12;6784:52;6865:9;6859:16;6898:18;6890:6;6887:30;6884:50;;;6930:1;6927;6920:12;6884:50;6953:22;;7006:4;6998:13;;6994:27;-1:-1:-1;6984:55:66;;7035:1;7032;7025:12;6984:55;7064:2;7058:9;7089:49;7105:32;7134:2;7105:32;:::i;7089:49::-;7161:2;7154:5;7147:17;7201:7;7196:2;7191;7187;7183:11;7179:20;7176:33;7173:53;;;7222:1;7219;7212:12;7173:53;7235:54;7286:2;7281;7274:5;7270:14;7265:2;7261;7257:11;7235:54;:::i;:::-;7308:5;6683:636;-1:-1:-1;;;;;6683:636:66:o;7324:349::-;7363:3;7394:66;7387:5;7384:77;7381:257;;;7494:77;7491:1;7484:88;7595:4;7592:1;7585:15;7623:4;7620:1;7613:15;7381:257;-1:-1:-1;7665:1:66;7654:13;;7324:349::o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "676600",
                                "executionCost": "26481",
                                "totalCost": "703081"
                            },
                            "external": {
                                "l1TokenRateModels(address)": "infinite",
                                "multicall(bytes[])": "infinite",
                                "owner()": "2289",
                                "renounceOwnership()": "30149",
                                "transferOwnership(address)": "30369",
                                "updateRateModel(address,string)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "l1TokenRateModels(address)": "74cc3f3e",
                            "multicall(bytes[])": "ac9650d8",
                            "owner()": "8da5cb5b",
                            "renounceOwnership()": "715018a6",
                            "transferOwnership(address)": "f2fde38b",
                            "updateRateModel(address,string)": "0be5512b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"rateModel\",\"type\":\"string\"}],\"name\":\"UpdatedRateModel\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"l1TokenRateModels\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"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\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"rateModel\",\"type\":\"string\"}],\"name\":\"updateRateModel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is designed to be queried by off-chain relayers that need to compute realized LP fee %'s before submitting relay transactions to a BridgePool contract. Therefore, this contract does not perform any validation on the shape of the rate model, which is stored as a string to enable arbitrary data encoding via a stringified JSON object. This leaves this contract unopionated on the parameters within the rate model, enabling governance to adjust the structure in the future.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateRateModel(address,string)\":{\"params\":{\"l1Token\":\"the l1 token rate model to update.\",\"rateModel\":\"the updated rate model.\"}}},\"title\":\"Maps rate model objects to L1 token.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"updateRateModel(address,string)\":{\"notice\":\"Updates rate model string for L1 token.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/RateModelStore.sol\":\"RateModelStore\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"contracts/common/implementation/MultiCaller.sol\":{\"content\":\"// This contract is taken from Uniswaps's multi call implementation (https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol)\\n// and was modified to be solidity 0.8 compatible. Additionally, the method was restricted to only work with msg.value\\n// set to 0 to avoid any nasty attack vectors on function calls that use value sent with deposits.\\npragma solidity ^0.8.0;\\n\\n/// @title MultiCaller\\n/// @notice Enables calling multiple methods in a single call to the contract\\ncontract MultiCaller {\\n    function multicall(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        require(msg.value == 0, \\\"Only multicall with 0 value\\\");\\n        results = new bytes[](data.length);\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x31f18055b14fd9eeb459c6d6a88d1a60921bf3755031f6db4b709c3e01d078f7\"},\"contracts/insured-bridge/RateModelStore.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../common/implementation/MultiCaller.sol\\\";\\n\\n/**\\n * @title Maps rate model objects to L1 token.\\n * @dev This contract is designed to be queried by off-chain relayers that need to compute realized LP fee %'s before\\n * submitting relay transactions to a BridgePool contract. Therefore, this contract does not perform any validation on\\n * the shape of the rate model, which is stored as a string to enable arbitrary data encoding via a stringified JSON\\n * object. This leaves this contract unopionated on the parameters within the rate model, enabling governance to adjust\\n * the structure in the future.\\n */\\ncontract RateModelStore is Ownable, MultiCaller {\\n    mapping(address => string) public l1TokenRateModels;\\n\\n    event UpdatedRateModel(address indexed l1Token, string rateModel);\\n\\n    /**\\n     * @notice Updates rate model string for L1 token.\\n     * @param l1Token the l1 token rate model to update.\\n     * @param rateModel the updated rate model.\\n     */\\n    function updateRateModel(address l1Token, string memory rateModel) external onlyOwner {\\n        l1TokenRateModels[l1Token] = rateModel;\\n        emit UpdatedRateModel(l1Token, rateModel);\\n    }\\n}\\n\",\"keccak256\":\"0x939386fcf9e0e0bbeb2da64c3df450a992e233f8d8ca661ef5c21e2eb0c7e342\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 627,
                                "contract": "contracts/insured-bridge/RateModelStore.sol:RateModelStore",
                                "label": "_owner",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 8646,
                                "contract": "contracts/insured-bridge/RateModelStore.sol:RateModelStore",
                                "label": "l1TokenRateModels",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_mapping(t_address,t_string_storage)"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_mapping(t_address,t_string_storage)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => string)",
                                "numberOfBytes": "32",
                                "value": "t_string_storage"
                            },
                            "t_string_storage": {
                                "encoding": "bytes",
                                "label": "string",
                                "numberOfBytes": "32"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "updateRateModel(address,string)": {
                                "notice": "Updates rate model string for L1 token."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol": {
                "AVM_BridgeDepositBox": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_l2GatewayRouter",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_crossDomainAdmin",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "_minimumBridgingDelay",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "_chainId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_l1Weth",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "timerAddress",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "DepositsEnabled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "depositId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Sender",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "FundsDeposited",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "from",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "to",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "id",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "SentCrossDomainMessage",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetMinimumBridgingDelay",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "SetXDomainAdmin",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "numberOfTokensBridged",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "l1Gas",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "caller",
                                    "type": "address"
                                }
                            ],
                            "name": "TokensBridged",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "WhitelistToken",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "l1Gas",
                                    "type": "uint32"
                                }
                            ],
                            "name": "bridgeTokens",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "canBridge",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "chainId",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "crossDomainAdmin",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "isWhitelistToken",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1Weth",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l2GatewayRouter",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "minimumBridgingDelay",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "numberOfDeposits",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newCrossDomainAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "setCrossDomainAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "setEnableDeposits",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setMinimumBridgingDelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "timerAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1BridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "whitelistToken",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "whitelistedTokens",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1BridgePool",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Uses AVM cross-domain-enabled logic for access control.",
                        "kind": "dev",
                        "methods": {
                            "bridgeTokens(address,uint32)": {
                                "details": "The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam      on L1 as the finalization of a L2->L1 tx is quite expensive.",
                                "params": {
                                    "l1Gas": "Unused by Arbitrum, but included for potential forward compatibility considerations.",
                                    "l2Token": "L2 token to relay over the canonical bridge."
                                }
                            },
                            "canBridge(address)": {
                                "details": "This function is also public for caller convenience.",
                                "params": {
                                    "l2Token": "L2 token to check bridging status."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised and enough time has elapsed since the previous bridge."
                                }
                            },
                            "constructor": {
                                "params": {
                                    "_chainId": "L2 Chain identifier this deposit box is deployed on.",
                                    "_crossDomainAdmin": "Address of the L1 contract that can call admin functions on this contract from L1.",
                                    "_l1Weth": "Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.",
                                    "_l2GatewayRouter": "Address of the Arbitrum L2 token gateway router for sending tokens from L2->L1.",
                                    "_minimumBridgingDelay": "Minimum second that must elapse between L2->L1 token transfer to prevent dos.",
                                    "timerAddress": "Timer used to synchronize contract time in testing. Set to 0x000... in production."
                                }
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "details": "Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.",
                                "params": {
                                    "amount": "How many L2 tokens should be deposited.",
                                    "instantRelayFeePct": "Fraction of `amount` that the depositor is willing to pay as an instant relay fee.",
                                    "l1Recipient": "L1 address that should receive the tokens.",
                                    "l2Token": "L2 token to deposit.",
                                    "quoteTimestamp": "Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.",
                                    "slowRelayFeePct": "Max fraction of `amount` that the depositor is willing to pay as a slow relay fee."
                                }
                            },
                            "getCurrentTime()": {
                                "returns": {
                                    "_0": "uint for the current Testable timestamp."
                                }
                            },
                            "isWhitelistToken(address)": {
                                "details": "Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.",
                                "params": {
                                    "l2Token": "L2 token to check against the whitelist."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised."
                                }
                            },
                            "setCrossDomainAdmin(address)": {
                                "details": "This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which is expected to be the Arbitrum_Messenger.Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.",
                                "params": {
                                    "newCrossDomainAdmin": "address of the new L1 admin contract."
                                }
                            },
                            "setCurrentTime(uint256)": {
                                "details": "Will revert if not running in test mode.",
                                "params": {
                                    "time": "timestamp to set current Testable time to."
                                }
                            },
                            "setEnableDeposits(address,bool)": {
                                "details": "Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.",
                                "params": {
                                    "depositsEnabled": "bool to set if the deposit box should accept/reject deposits.",
                                    "l2Token": "address of L2 token to enable/disable deposits for."
                                }
                            },
                            "setMinimumBridgingDelay(uint64)": {
                                "details": "Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.",
                                "params": {
                                    "newMinimumBridgingDelay": "the new minimum delay."
                                }
                            },
                            "whitelistToken(address,address,address)": {
                                "details": "Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.",
                                "params": {
                                    "l1BridgePool": "Address of the L1 withdrawal pool linked to this L2+L1 token.",
                                    "l1Token": "Address of the canonical L1 token. This is the token users will receive on Ethereum.",
                                    "l2Token": "Address of the L2 token representation. This is the token users would deposit on Arbitrum."
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_5389": {
                                    "entryPoint": null,
                                    "id": 5389,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_5541": {
                                    "entryPoint": null,
                                    "id": 5541,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_8374": {
                                    "entryPoint": null,
                                    "id": 8374,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@_8737": {
                                    "entryPoint": null,
                                    "id": 8737,
                                    "parameterSlots": 6,
                                    "returnSlots": 0
                                },
                                "@_setCrossDomainAdmin_8899": {
                                    "entryPoint": 262,
                                    "id": 8899,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setMinimumBridgingDelay_8389": {
                                    "entryPoint": 178,
                                    "id": 8389,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_address_fromMemory": {
                                    "entryPoint": 433,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint64t_uint256t_addresst_address_fromMemory": {
                                    "entryPoint": 462,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 6
                                },
                                "abi_encode_tuple_t_stringliteral_aa0ab5a1cd950415cd9b3336f3396626bc2fbfb3d3bb8bee016bc0afd6493316__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:1437:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "74:117:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "84:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "99:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "93:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "93:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "84:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "169:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "178:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "181:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "171:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "171:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "171:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "128:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "139:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "154:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "159:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "150:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "150:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "163:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "146:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "146:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "135:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "135:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "125:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "125:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "118:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "118:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "115:70:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "53:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "64:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "361:527:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "408:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "417:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "420:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "410:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "410:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "410:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "382:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "391:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "378:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "378:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "403:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "374:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "374:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "371:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "433:50:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "473:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "443:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "443:40:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "433:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "492:59:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "536:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "547:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "532:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "532:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "502:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "502:49:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "492:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "560:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "583:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "594:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "579:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "579:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "573:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "573:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "564:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "660:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "669:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "672:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "662:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "662:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "662:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "620:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "631:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "646:2:66",
                                                                                                        "type": "",
                                                                                                        "value": "64"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "650:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "642:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "642:10:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "654:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "638:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "638:18:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "627:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "627:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "617:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "617:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "610:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "610:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "607:69:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "685:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "695:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "685:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "709:35:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "729:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "740:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "725:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "725:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "719:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "719:25:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "709:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "753:60:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "797:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "808:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "793:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "793:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "763:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "763:50:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "753:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "822:60:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "866:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "877:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "862:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "862:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "832:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "832:50:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "822:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint64t_uint256t_addresst_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "287:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "298:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "310:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "318:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "326:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "334:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "342:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "350:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "196:692:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "992:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1002:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1014:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1025:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1010:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1010:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1002:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1044:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1059:6:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1075:2:66",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1079:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1071:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1071:10:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1083:1:66",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1067:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1067:18:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1055:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1055:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1037:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1037:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1037:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "961:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "972:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "983:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "893:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1272:163:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1289:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1300:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1282:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1282:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1282:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1323:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1334:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1319:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1319:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1339:2:66",
                                                                        "type": "",
                                                                        "value": "13"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1312:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1312:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1312:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1362:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1373:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1358:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1358:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "456d7074792061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1378:15:66",
                                                                        "type": "",
                                                                        "value": "Empty address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1351:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1351:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1351:43:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1403:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1415:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1426:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1411:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1411:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1403:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_aa0ab5a1cd950415cd9b3336f3396626bc2fbfb3d3bb8bee016bc0afd6493316__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1249:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1263:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1098:337:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint64t_uint256t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        let value := mload(add(headStart, 64))\n        if iszero(eq(value, and(value, sub(shl(64, 1), 1)))) { revert(0, 0) }\n        value2 := value\n        value3 := mload(add(headStart, 96))\n        value4 := abi_decode_address_fromMemory(add(headStart, 128))\n        value5 := abi_decode_address_fromMemory(add(headStart, 160))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_aa0ab5a1cd950415cd9b3336f3396626bc2fbfb3d3bb8bee016bc0afd6493316__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Empty address\")\n        tail := add(headStart, 96)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60806040523480156200001157600080fd5b5060405162002302380380620023028339810160408190526200003491620001ce565b600080546001600160a81b0319166001600160a01b03831617600160a01b179055838383836200006484620000b2565b50600191909155600280546001600160a01b03199081166001600160a01b03938416179091556006805490911691891691909117905550620000a68562000106565b50505050505062000255565b600580546001600160401b0319166001600160401b0383169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b6001600160a01b038116620001515760405162461bcd60e51b815260206004820152600d60248201526c456d707479206164647265737360981b604482015260640160405180910390fd5b60058054600160401b600160e01b031916680100000000000000006001600160a01b0384811682029290921792839055604051920416907fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b80516001600160a01b0381168114620001c957600080fd5b919050565b60008060008060008060c08789031215620001e857600080fd5b620001f387620001b1565b95506200020360208801620001b1565b60408801519095506001600160401b03811681146200022157600080fd5b606088015190945092506200023960808801620001b1565b91506200024960a08801620001b1565b90509295509295509295565b61209d80620002656000396000f3fe6080604052600436106101295760003560e01c80639a8a0592116100a5578063c2d9dca911610074578063daf9c21011610059578063daf9c21014610386578063de7eba7814610465578063fbb9fcf71461048557600080fd5b8063c2d9dca914610346578063c83568591461035957600080fd5b80639a8a0592146102c05780639bfd2cdc146102d6578063a1244c67146102f6578063b2d6f4d41461030c57600080fd5b80632ec35b31116100fc5780635285e058116100e15780635285e05814610237578063563c7f601461027057806363635fd91461029057600080fd5b80632ec35b31146101f75780634dedca281461021757600080fd5b8063146bf4b11461012e5780631c39c38d1461018557806322f8e566146101b257806329cb924d146101d4575b600080fd5b34801561013a57600080fd5b5060025461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561019157600080fd5b5060005461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101be57600080fd5b506101d26101cd366004611c21565b6104ef565b005b3480156101e057600080fd5b506101e9610598565b60405190815260200161017c565b34801561020357600080fd5b506101d2610212366004611c57565b61065f565b34801561022357600080fd5b506101d2610232366004611c96565b610733565b34801561024357600080fd5b5060055461015b9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561027c57600080fd5b506101d261028b366004611cea565b610806565b34801561029c57600080fd5b506102b06102ab366004611d21565b6108d7565b604051901515815260200161017c565b3480156102cc57600080fd5b506101e960015481565b3480156102e257600080fd5b506101d26102f1366004611d3c565b61093a565b34801561030257600080fd5b506101e960035481565b34801561031857600080fd5b5060055461032d9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161017c565b6101d2610354366004611d71565b610d0b565b34801561036557600080fd5b5060065461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039257600080fd5b5061041c6103a1366004611d21565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff909116918301919091521515606082015260800161017c565b34801561047157600080fd5b506101d2610480366004611d21565b6112b5565b34801561049157600080fd5b506102b06104a0366004611d21565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff1661051157600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b15801561057d57600080fd5b505af1158015610591573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff161561065a5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561061d57600080fd5b505afa158015610631573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106559190611dde565b905090565b504290565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661068d81611380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f47415445574159000000000000000060448201526064015b60405180910390fd5b61072f826113a0565b5050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661076181611380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b61080084848461140d565b50505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661083481611380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b6108d283836115e5565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1615158015610934575061093482611698565b92915050565b61094261170f565b61096f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b1580156109d957600080fd5b505af11580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a119190611dde565b905060008111610a7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e730000000000000000604482015260640161071d565b610a86836108d7565b610b12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e740000000000000000000000000000000000606482015260840161071d565b610b1a610598565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020819052604080832060018101805467ffffffffffffffff9790971674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff88168117909155600654915492517f7b3a3c8b00000000000000000000000000000000000000000000000000000000815292861693830193909352918416948416949094176024850152604484018590526080606485015260848401919091521690637b3a3c8b9060a401600060405180830381600087803b158015610c1357600080fd5b505af1158015610c27573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c6d9190810190611e52565b506040805182815263ffffffff84166020820152339173ffffffffffffffffffffffffffffffffffffffff8616917f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a35061072f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff16610dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c6564000000000000000000000000604482015260640161071d565b610dc761170f565b610df4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c6973746564000000604482015260640161071d565b6703782dace9d900008467ffffffffffffffff161115610f21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d203235250000604482015260640161071d565b6703782dace9d900008367ffffffffffffffff161115610fc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f2500000000000000000000000000000000000000000000000000000000000000606482015260840161071d565b610fcf61025883611f41565b67ffffffffffffffff16610fe1610598565b1015801561100b5750610ff682610258611f6a565b67ffffffffffffffff16611008610598565b11155b611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e6500000000604482015260640161071d565b60025473ffffffffffffffffffffffffffffffffffffffff878116600090815260046020526040902054811691161480156110ac5750600034115b156111805784341461111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e740000000000604482015260640161071d565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561116257600080fd5b505af1158015611176573d6000803e3d6000fd5b50505050506111a2565b6111a273ffffffffffffffffffffffffffffffffffffffff8716333088611795565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a16001600360008282546112629190611f96565b909155506112ac9050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff166112e381611380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b61072f8261182a565b600061093473111100000000000000000000000000000000111183611fae565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001611458610598565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd8383611597610598565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081206001015490916116f69167ffffffffffffffff918216917401000000000000000000000000000000000000000090910416611f6a565b67ffffffffffffffff16611708610598565b1192915050565b60005474010000000000000000000000000000000000000000900460ff16611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610800908590611929565b73ffffffffffffffffffffffffffffffffffffffff81166118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456d707479206164647265737300000000000000000000000000000000000000604482015260640161071d565b600580547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff84811682029290921792839055604051920416907fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b600061198b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a359092919063ffffffff16565b8051909150156108d257808060200190518101906119a99190611fdd565b6108d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161071d565b6060611a448484600085611a4e565b90505b9392505050565b606082471015611ae0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161071d565b843b611b48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161071d565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611b719190611ffa565b60006040518083038185875af1925050503d8060008114611bae576040519150601f19603f3d011682016040523d82523d6000602084013e611bb3565b606091505b5091509150611bc3828286611bce565b979650505050505050565b60608315611bdd575081611a47565b825115611bed5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d9190612016565b600060208284031215611c3357600080fd5b5035919050565b803567ffffffffffffffff81168114611c5257600080fd5b919050565b600060208284031215611c6957600080fd5b611a4782611c3a565b803573ffffffffffffffffffffffffffffffffffffffff81168114611c5257600080fd5b600080600060608486031215611cab57600080fd5b611cb484611c72565b9250611cc260208501611c72565b9150611cd060408501611c72565b90509250925092565b8015158114611ce757600080fd5b50565b60008060408385031215611cfd57600080fd5b611d0683611c72565b91506020830135611d1681611cd9565b809150509250929050565b600060208284031215611d3357600080fd5b611a4782611c72565b60008060408385031215611d4f57600080fd5b611d5883611c72565b9150602083013563ffffffff81168114611d1657600080fd5b60008060008060008060c08789031215611d8a57600080fd5b611d9387611c72565b9550611da160208801611c72565b945060408701359350611db660608801611c3a565b9250611dc460808801611c3a565b9150611dd260a08801611c3a565b90509295509295509295565b600060208284031215611df057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015611e41578181015183820152602001611e29565b838111156108005750506000910152565b600060208284031215611e6457600080fd5b815167ffffffffffffffff80821115611e7c57600080fd5b818401915084601f830112611e9057600080fd5b815181811115611ea257611ea2611df7565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ee857611ee8611df7565b81604052828152876020848701011115611f0157600080fd5b611bc3836020830160208801611e26565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff83811690831681811015611f6257611f62611f12565b039392505050565b600067ffffffffffffffff808316818516808303821115611f8d57611f8d611f12565b01949350505050565b60008219821115611fa957611fa9611f12565b500190565b600073ffffffffffffffffffffffffffffffffffffffff808316818516808303821115611f8d57611f8d611f12565b600060208284031215611fef57600080fd5b8151611a4781611cd9565b6000825161200c818460208701611e26565b9190910192915050565b6020815260008251806020840152612035816040850160208701611e26565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212206879f651a1ded06aa976c85f28b0500a44e7c6a812b3a840054191e1dd69dd7064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2302 CODESIZE SUB DUP1 PUSH3 0x2302 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1CE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE DUP4 DUP4 DUP4 DUP4 PUSH3 0x64 DUP5 PUSH3 0xB2 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP1 SWAP2 AND SWAP2 DUP10 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0xA6 DUP6 PUSH3 0x106 JUMP JUMPDEST POP POP POP POP POP POP PUSH3 0x255 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x456D7074792061646472657373 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH9 0x10000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND SWAP1 PUSH32 0xA9E8C42C9E7FCA7F62755189A16B2F5314D43D8FB24E91BA54E6D65F9314E849 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1F3 DUP8 PUSH3 0x1B1 JUMP JUMPDEST SWAP6 POP PUSH3 0x203 PUSH1 0x20 DUP9 ADD PUSH3 0x1B1 JUMP JUMPDEST PUSH1 0x40 DUP9 ADD MLOAD SWAP1 SWAP6 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP9 ADD MLOAD SWAP1 SWAP5 POP SWAP3 POP PUSH3 0x239 PUSH1 0x80 DUP9 ADD PUSH3 0x1B1 JUMP JUMPDEST SWAP2 POP PUSH3 0x249 PUSH1 0xA0 DUP9 ADD PUSH3 0x1B1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH2 0x209D DUP1 PUSH3 0x265 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x129 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9A8A0592 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xC2D9DCA9 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDAF9C210 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDAF9C210 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xDE7EBA78 EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0xFBB9FCF7 EQ PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC2D9DCA9 EQ PUSH2 0x346 JUMPI DUP1 PUSH4 0xC8356859 EQ PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0x9BFD2CDC EQ PUSH2 0x2D6 JUMPI DUP1 PUSH4 0xA1244C67 EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0xB2D6F4D4 EQ PUSH2 0x30C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x5285E058 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x5285E058 EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x563C7F60 EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x63635FD9 EQ PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x4DEDCA28 EQ PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x146BF4B1 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x1D4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x1C21 JUMP JUMPDEST PUSH2 0x4EF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH2 0x598 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C57 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C96 JUMP JUMPDEST PUSH2 0x733 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x15B SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x28B CALLDATASIZE PUSH1 0x4 PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x806 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B0 PUSH2 0x2AB CALLDATASIZE PUSH1 0x4 PUSH2 0x1D21 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x2F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D3C JUMP JUMPDEST PUSH2 0x93A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x32D SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH2 0x1D2 PUSH2 0x354 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D71 JUMP JUMPDEST PUSH2 0xD0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41C PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D21 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 DUP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x480 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D21 JUMP JUMPDEST PUSH2 0x12B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B0 PUSH2 0x4A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D21 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x22F8E56600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x591 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x631 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x655 SWAP2 SWAP1 PUSH2 0x1DDE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x68D DUP2 PUSH2 0x1380 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x726 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x72F DUP3 PUSH2 0x13A0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x761 DUP2 PUSH2 0x1380 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0x800 DUP5 DUP5 DUP5 PUSH2 0x140D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x834 DUP2 PUSH2 0x1380 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0x8D2 DUP4 DUP4 PUSH2 0x15E5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 ISZERO PUSH2 0x934 JUMPI POP PUSH2 0x934 DUP3 PUSH2 0x1698 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x942 PUSH2 0x170F JUMP JUMPDEST PUSH2 0x96F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA11 SWAP2 SWAP1 PUSH2 0x1DDE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0xA7D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x63616E277420627269646765207A65726F20746F6B656E730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0xA86 DUP4 PUSH2 0x8D7 JUMP JUMPDEST PUSH2 0xB12 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F6E2D77686974656C697374656420746F6B656E206F72206C617374206272 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964676520746F6F20726563656E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0xB1A PUSH2 0x598 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP8 SWAP1 SWAP8 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 SLOAD SWAP2 SLOAD SWAP3 MLOAD PUSH32 0x7B3A3C8B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 DUP7 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP5 AND SWAP5 DUP5 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE AND SWAP1 PUSH4 0x7B3A3C8B SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC27 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC6D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E52 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH32 0x95B5EC953BD38FBAA6F859725352BF73202C155A6809E5622C95CEEF331EAC6C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x72F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP6 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xDBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742069732064697361626C6564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0xDC7 PUSH2 0x170F JUMP JUMPDEST PUSH2 0xDF4 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xEA5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F73697420746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xF21 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6F7752656C6179466565506374206D757374206265203C3D203235250000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E7374616E7452656C6179466565506374206D757374206265203C3D203235 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0xFCF PUSH2 0x258 DUP4 PUSH2 0x1F41 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xFE1 PUSH2 0x598 JUMP JUMPDEST LT ISZERO DUP1 ISZERO PUSH2 0x100B JUMPI POP PUSH2 0xFF6 DUP3 PUSH2 0x258 PUSH2 0x1F6A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1008 PUSH2 0x598 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0x1071 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F736974206D696E656420616674657220646561646C696E6500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP2 AND EQ DUP1 ISZERO PUSH2 0x10AC JUMPI POP PUSH1 0x0 CALLVALUE GT JUMPDEST ISZERO PUSH2 0x1180 JUMPI DUP5 CALLVALUE EQ PUSH2 0x111A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206D757374206D6174636820616D6F756E740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1176 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11A2 JUMP JUMPDEST PUSH2 0x11A2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP9 PUSH2 0x1795 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP7 DUP8 MSTORE SWAP1 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP12 DUP4 AND SWAP1 DUP6 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP1 DUP6 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH32 0xAB77617F2B9BDBB101FC328E585470FB3C845C92B25C4B080CB7B66F7163CF72 SWAP1 PUSH2 0x140 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1262 SWAP2 SWAP1 PUSH2 0x1F96 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x12AC SWAP1 POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12E3 DUP2 PUSH2 0x1380 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1377 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0x72F DUP3 PUSH2 0x182A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x934 PUSH20 0x1111000000000000000000000000000000001111 DUP4 PUSH2 0x1FAE JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1458 PUSH2 0x598 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP6 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 DUP5 AND OR DUP2 SSTORE SWAP5 DUP7 ADD MLOAD SWAP5 SWAP1 SWAP3 ADD DUP1 SLOAD SWAP3 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP1 SWAP2 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH21 0x10000000000000000000000000000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH32 0x93F23ADD56B90352EA2EF3BC2123262792AF300DC6060C99F6EE06A7026863BD DUP4 DUP4 PUSH2 0x1597 PUSH2 0x598 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP7 ISZERO ISZERO SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF84482204FF927822D3068D71E16E14B51CB1B2ADAFA7D6E11EDC1B8DFD8C0DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 PUSH2 0x16F6 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x1F6A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1708 PUSH2 0x598 JUMP JUMPDEST GT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1793 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x800 SWAP1 DUP6 SWAP1 PUSH2 0x1929 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x18A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456D707479206164647265737300000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND SWAP1 PUSH32 0xA9E8C42C9E7FCA7F62755189A16B2F5314D43D8FB24E91BA54E6D65F9314E849 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x198B DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A35 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x8D2 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x19A9 SWAP2 SWAP1 PUSH2 0x1FDD JUMP JUMPDEST PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1A44 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x1A4E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x1AE0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71D JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x1B48 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1B71 SWAP2 SWAP1 PUSH2 0x1FFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BAE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BB3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1BC3 DUP3 DUP3 DUP7 PUSH2 0x1BCE JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1BDD JUMPI POP DUP2 PUSH2 0x1A47 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1BED JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x71D SWAP2 SWAP1 PUSH2 0x2016 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1C52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A47 DUP3 PUSH2 0x1C3A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1C52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1CAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CB4 DUP5 PUSH2 0x1C72 JUMP JUMPDEST SWAP3 POP PUSH2 0x1CC2 PUSH1 0x20 DUP6 ADD PUSH2 0x1C72 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CD0 PUSH1 0x40 DUP6 ADD PUSH2 0x1C72 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D06 DUP4 PUSH2 0x1C72 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1D16 DUP2 PUSH2 0x1CD9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A47 DUP3 PUSH2 0x1C72 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D58 DUP4 PUSH2 0x1C72 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1D16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1D8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D93 DUP8 PUSH2 0x1C72 JUMP JUMPDEST SWAP6 POP PUSH2 0x1DA1 PUSH1 0x20 DUP9 ADD PUSH2 0x1C72 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1DB6 PUSH1 0x60 DUP9 ADD PUSH2 0x1C3A JUMP JUMPDEST SWAP3 POP PUSH2 0x1DC4 PUSH1 0x80 DUP9 ADD PUSH2 0x1C3A JUMP JUMPDEST SWAP2 POP PUSH2 0x1DD2 PUSH1 0xA0 DUP9 ADD PUSH2 0x1C3A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E41 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E29 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x800 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1E90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1EA2 JUMPI PUSH2 0x1EA2 PUSH2 0x1DF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1EE8 JUMPI PUSH2 0x1EE8 PUSH2 0x1DF7 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1F01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BC3 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x1E26 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x1F62 JUMPI PUSH2 0x1F62 PUSH2 0x1F12 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1F8D JUMPI PUSH2 0x1F8D PUSH2 0x1F12 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1FA9 JUMPI PUSH2 0x1FA9 PUSH2 0x1F12 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1F8D JUMPI PUSH2 0x1F8D PUSH2 0x1F12 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1A47 DUP2 PUSH2 0x1CD9 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x200C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1E26 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2035 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1E26 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x79F651A1DED06AA976 0xC8 0x5F 0x28 0xB0 POP EXP DIFFICULTY 0xE7 0xC6 0xA8 SLT 0xB3 0xA8 BLOCKHASH SDIV COINBASE SWAP2 0xE1 0xDD PUSH10 0xDD7064736F6C63430008 MULMOD STOP CALLER ",
                            "sourceMap": "488:6051:46:-:0;;;1549:379;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;728:12:30;:28;;-1:-1:-1;;;;;;874:18:28;-1:-1:-1;;;;;728:28:30;;874:18:28;-1:-1:-1;;;874:18:28;;;1772:21:46;1795:8;1805:7;1814:12;3589:47:44::1;1772:21:46::0;3589:24:44::1;:47::i;:::-;-1:-1:-1::0;3646:7:44::1;:18:::0;;;;3674:6:::1;:16:::0;;-1:-1:-1;;;;;;3674:16:44;;::::1;-1:-1:-1::0;;;;;3674:16:44;;::::1;;::::0;;;1838:15:46::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;1882:39:46::1;1903:17:::0;1882:20:::1;:39::i;:::-;1549:379:::0;;;;;;488:6051;;4015:198:44;4100:20;:46;;-1:-1:-1;;;;;;4100:46:44;-1:-1:-1;;;;;4100:46:44;;;;;;;;4161:45;;1037:50:66;;;4161:45:44;;1025:2:66;1010:18;4161:45:44;;;;;;;4015:198;:::o;6297:240:46:-;-1:-1:-1;;;;;6383:33:46;;6375:59;;;;-1:-1:-1;;;6375:59:46;;1300:2:66;6375:59:46;;;1282:21:66;1339:2;1319:18;;;1312:30;-1:-1:-1;;;1358:18:66;;;1351:43;1411:18;;6375:59:46;;;;;;;;6444:16;:38;;-1:-1:-1;;;;;;;;6444:38:46;;-1:-1:-1;;;;;6444:38:46;;;;;;;;;;;;;6497:33;;6513:16;;;;6497:33;;-1:-1:-1;;6497:33:46;6297:240;:::o;14:177:66:-;93:13;;-1:-1:-1;;;;;135:31:66;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:692::-;310:6;318;326;334;342;350;403:3;391:9;382:7;378:23;374:33;371:53;;;420:1;417;410:12;371:53;443:40;473:9;443:40;:::i;:::-;433:50;;502:49;547:2;536:9;532:18;502:49;:::i;:::-;594:2;579:18;;573:25;492:59;;-1:-1:-1;;;;;;627:30:66;;617:41;;607:69;;672:1;669;662:12;607:69;740:2;725:18;;719:25;695:5;;-1:-1:-1;719:25:66;-1:-1:-1;763:50:66;808:3;793:19;;763:50;:::i;:::-;753:60;;832:50;877:3;866:9;862:19;832:50;:::i;:::-;822:60;;196:692;;;;;;;;:::o;1098:337::-;488:6051:46;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_callOptionalReturn_1654": {
                                    "entryPoint": 6441,
                                    "id": 1654,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_hasEnoughTimeElapsedToBridge_8615": {
                                    "entryPoint": 5784,
                                    "id": 8615,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_postEntranceReset_5436": {
                                    "entryPoint": null,
                                    "id": 5436,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_5420": {
                                    "entryPoint": 5903,
                                    "id": 5420,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_5428": {
                                    "entryPoint": null,
                                    "id": 5428,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_setCrossDomainAdmin_8899": {
                                    "entryPoint": 6186,
                                    "id": 8899,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setEnableDeposits_8447": {
                                    "entryPoint": 5605,
                                    "id": 8447,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_setMinimumBridgingDelay_8389": {
                                    "entryPoint": 5024,
                                    "id": 8389,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_verifyCallResult_1950": {
                                    "entryPoint": 7118,
                                    "id": 1950,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@_whitelistToken_8426": {
                                    "entryPoint": 5133,
                                    "id": 8426,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@applyL1ToL2Alias_5713": {
                                    "entryPoint": 4992,
                                    "id": 5713,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@bridgeTokens_8875": {
                                    "entryPoint": 2362,
                                    "id": 8875,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@canBridge_8632": {
                                    "entryPoint": 2263,
                                    "id": 8632,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@chainId_8260": {
                                    "entryPoint": null,
                                    "id": 8260,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@crossDomainAdmin_8700": {
                                    "entryPoint": null,
                                    "id": 8700,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@deposit_8581": {
                                    "entryPoint": 3339,
                                    "id": 8581,
                                    "parameterSlots": 6,
                                    "returnSlots": 0
                                },
                                "@functionCallWithValue_1816": {
                                    "entryPoint": 6734,
                                    "id": 1816,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "@functionCall_1746": {
                                    "entryPoint": 6709,
                                    "id": 1746,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@getCurrentTime_5596": {
                                    "entryPoint": 1432,
                                    "id": 5596,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@isContract_1675": {
                                    "entryPoint": null,
                                    "id": 1675,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@isWhitelistToken_8597": {
                                    "entryPoint": null,
                                    "id": 8597,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@l1Weth_8262": {
                                    "entryPoint": null,
                                    "id": 8262,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@l2GatewayRouter_8702": {
                                    "entryPoint": null,
                                    "id": 8702,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@minimumBridgingDelay_8280": {
                                    "entryPoint": null,
                                    "id": 8280,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@numberOfDeposits_8264": {
                                    "entryPoint": null,
                                    "id": 8264,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@safeTransferFrom_1488": {
                                    "entryPoint": 6037,
                                    "id": 1488,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@setCrossDomainAdmin_8751": {
                                    "entryPoint": 4789,
                                    "id": 8751,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setCurrentTime_5571": {
                                    "entryPoint": 1263,
                                    "id": 5571,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setEnableDeposits_8802": {
                                    "entryPoint": 2054,
                                    "id": 8802,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@setMinimumBridgingDelay_8765": {
                                    "entryPoint": 1631,
                                    "id": 8765,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@timerAddress_5530": {
                                    "entryPoint": null,
                                    "id": 5530,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@whitelistToken_8785": {
                                    "entryPoint": 1843,
                                    "id": 8785,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@whitelistedTokens_8278": {
                                    "entryPoint": null,
                                    "id": 8278,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_address": {
                                    "entryPoint": 7282,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 7457,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_addresst_address": {
                                    "entryPoint": 7318,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64": {
                                    "entryPoint": 7537,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 6
                                },
                                "abi_decode_tuple_t_addresst_bool": {
                                    "entryPoint": 7402,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_uint32": {
                                    "entryPoint": 7484,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_bool_fromMemory": {
                                    "entryPoint": 8157,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes_memory_ptr_fromMemory": {
                                    "entryPoint": 7762,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 7201,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": 7646,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64": {
                                    "entryPoint": 7255,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint64": {
                                    "entryPoint": 7226,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 8186,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 8214,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_aa0ab5a1cd950415cd9b3336f3396626bc2fbfb3d3bb8bee016bc0afd6493316__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 11,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint160": {
                                    "entryPoint": 8110,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 8086,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint64": {
                                    "entryPoint": 8042,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_uint64": {
                                    "entryPoint": 8001,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 7718,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 7954,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 7671,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_bool": {
                                    "entryPoint": 7385,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:15825:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "182:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "190:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "178:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "315:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "361:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "370:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "373:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "363:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "363:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "363:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "336:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "345:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "332:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "332:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "357:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "328:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "328:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "325:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "386:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "409:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "396:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "396:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "386:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "281:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "292:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "304:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "245:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "531:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "541:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "553:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "564:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "549:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "549:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "541:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "583:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "594:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "576:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "576:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "576:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "500:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "511:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "522:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "430:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "660:123:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "670:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "692:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "679:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "679:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "670:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "761:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "770:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "773:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "763:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "763:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "763:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "721:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "732:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "739:18:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "728:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "728:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "718:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "718:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "711:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "711:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "708:69:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "639:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "650:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "612:171:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "857:115:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "903:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "912:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "915:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "905:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "905:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "905:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "878:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "887:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "874:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "874:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "899:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "870:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "870:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "867:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "928:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "956:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "938:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "938:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "928:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "823:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "834:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "846:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "788:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1026:147:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1036:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1058:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1045:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1045:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1036:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1151:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1160:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1163:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1153:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1153:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1153:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1087:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1098:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1105:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1094:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1094:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1084:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1084:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1077:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1077:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1074:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1005:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1016:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "977:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1282:230:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1328:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1337:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1340:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1330:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1330:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1330:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1303:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1312:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1299:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1299:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1324:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1295:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1295:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1292:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1353:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1382:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1363:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1363:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1353:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1401:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1434:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1445:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1430:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1430:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1411:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1411:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1401:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1458:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1491:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1502:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1487:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1487:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1468:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1468:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1458:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1232:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1243:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1255:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1263:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1271:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1178:334:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1559:76:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1613:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1622:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1625:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1615:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1615:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1615:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1582:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1603:5:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1596:6:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1596:13:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1589:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1589:21:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1579:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1579:32:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1572:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1572:40:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1569:60:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1548:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1517:118:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1724:231:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1770:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1779:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1782:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1772:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1772:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1772:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1745:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1754:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1741:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1741:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1766:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1737:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1737:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1734:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1795:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1824:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1805:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1805:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1795:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1843:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1873:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1884:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1869:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1869:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1856:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1856:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1847:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1919:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1897:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1897:28:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1897:28:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1934:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1944:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1934:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1682:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1693:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1705:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1713:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1640:315:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2030:116:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2076:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2085:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2088:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2078:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2078:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2078:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2051:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2060:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2047:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2047:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2072:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2043:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2043:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2040:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2101:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2130:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2111:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2111:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2101:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1996:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2007:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2019:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1960:186:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2246:92:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2256:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2268:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2279:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2264:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2264:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2256:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2298:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2323:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2316:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2316:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2309:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2309:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2291:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2291:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2291:41:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2215:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2226:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2237:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2151:187:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2429:264:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2475:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2484:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2487:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2477:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2477:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2477:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2450:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2459:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2446:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2446:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2471:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2442:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2442:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2439:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2500:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2529:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2510:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2510:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2500:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2548:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2578:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2589:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2574:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2574:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2561:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2561:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2552:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2647:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2656:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2659:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2649:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2649:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2649:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2615:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2626:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2633:10:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2622:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2622:22:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2612:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2612:33:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2605:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2605:41:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2602:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2672:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2682:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2672:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2387:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2398:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2410:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2418:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2343:350:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2797:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2807:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2819:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2830:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2815:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2815:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2807:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2849:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2864:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2872:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2860:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2860:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2842:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2842:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2842:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2766:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2777:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2788:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2698:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3055:395:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3102:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3111:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3114:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3104:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3104:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3104:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3076:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3085:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3072:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3072:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3097:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3068:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3068:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3065:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3127:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3156:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3137:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3137:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3127:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3175:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3208:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3219:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3204:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3204:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3185:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3185:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3175:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3232:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3259:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3270:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3255:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3255:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3242:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3242:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3232:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3283:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3315:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3326:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3311:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3311:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3293:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3293:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3283:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3339:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3371:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3382:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3367:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3367:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3349:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3349:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3339:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3396:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3428:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3439:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3424:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3424:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3406:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3406:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3396:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2981:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2992:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3004:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3012:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3020:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3028:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3036:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3044:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2903:547:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3632:326:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3642:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3654:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3665:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3650:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3650:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3642:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3678:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3688:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3682:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3746:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3761:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3769:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3757:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3757:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3739:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3739:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3739:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3793:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3804:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3789:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3789:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3813:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3821:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3809:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3809:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3782:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3782:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3782:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3845:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3856:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3841:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3841:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3865:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3873:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3861:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3861:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3834:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3834:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3834:59:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3913:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3924:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3909:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3909:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3943:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3936:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3936:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3929:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3929:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3902:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3902:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3902:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3577:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3588:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3596:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3604:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3612:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3623:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3455:503:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4044:103:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4090:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4099:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4102:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4092:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4092:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4092:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4065:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4074:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4061:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4061:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4086:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4057:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4057:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4054:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4115:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4131:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4125:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4125:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4115:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4010:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4021:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4033:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3963:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4326:174:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4343:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4354:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4336:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4336:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4336:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4377:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4388:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4373:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4373:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4393:2:66",
                                                                        "type": "",
                                                                        "value": "24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4366:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4366:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4366:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4416:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4427:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4412:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4412:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f4e4c595f434f554e544552504152545f47415445574159",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4432:26:66",
                                                                        "type": "",
                                                                        "value": "ONLY_COUNTERPART_GATEWAY"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4405:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4405:54:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4405:54:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4468:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4480:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4491:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4476:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4476:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4468:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4303:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4317:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4152:348:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4679:174:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4696:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4707:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4689:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4689:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4689:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4730:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4741:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4726:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4726:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4746:2:66",
                                                                        "type": "",
                                                                        "value": "24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4719:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4719:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4719:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4769:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4780:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4765:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4765:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "63616e277420627269646765207a65726f20746f6b656e73",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4785:26:66",
                                                                        "type": "",
                                                                        "value": "can't bridge zero tokens"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4758:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4758:54:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4758:54:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4821:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4833:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4844:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4829:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4829:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4821:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4656:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4670:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4505:348:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5032:237:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5049:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5060:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5042:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5042:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5042:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5083:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5094:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5079:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5079:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5099:2:66",
                                                                        "type": "",
                                                                        "value": "47"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5072:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5072:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5072:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5122:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5133:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5118:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5118:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6e6f6e2d77686974656c697374656420746f6b656e206f72206c617374206272",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5138:34:66",
                                                                        "type": "",
                                                                        "value": "non-whitelisted token or last br"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5111:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5111:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5111:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5193:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5204:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5189:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5189:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6964676520746f6f20726563656e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5209:17:66",
                                                                        "type": "",
                                                                        "value": "idge too recent"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5182:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5182:45:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5182:45:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5236:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5248:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5259:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5244:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5244:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5236:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5009:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5023:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4858:411:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5531:321:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5541:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "5551:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5545:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5609:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5624:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5632:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5620:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5620:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5602:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5602:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5602:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5656:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5667:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5652:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5652:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5676:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5684:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5672:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5672:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5645:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5645:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5645:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5708:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5719:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5704:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5704:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5724:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5697:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5697:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5697:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5751:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5762:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5747:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5747:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5767:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5740:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5740:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5740:31:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5791:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5802:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5787:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5787:19:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5808:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5780:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5780:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5780:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5819:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5831:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5842:3:66",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5827:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5827:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5819:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5484:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5495:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5503:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5511:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5522:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5274:578:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5889:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5906:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5909:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5899:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5899:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5899:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6003:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6006:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5996:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5996:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5996:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6027:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6030:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6020:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6020:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6020:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "5857:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6099:205:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6109:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "6118:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6113:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6178:63:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6203:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6208:1:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6199:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "6199:11:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6222:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6227:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "6218:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "6218:11:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6212:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "6212:18:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6192:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6192:39:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6192:39:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6139:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6142:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6136:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6136:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6150:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "6152:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6161:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6164:2:66",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6157:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6157:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6152:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6132:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "6128:113:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6267:31:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6280:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6285:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6276:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "6276:16:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6294:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6269:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6269:27:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6269:27:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6256:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6259:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6253:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6253:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6250:48:66"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6077:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6082:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6087:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6046:258:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6399:852:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6445:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6454:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6457:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6447:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6447:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6447:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6420:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6429:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6416:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6416:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6441:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6412:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6412:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6409:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6470:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6490:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6484:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6484:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6474:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6509:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "6519:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6513:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6564:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6573:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6576:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6566:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6566:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6566:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6552:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6560:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6549:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6549:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6546:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6589:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6603:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6614:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6599:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6599:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6593:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6669:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6678:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "6681:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6671:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6671:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6671:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6648:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6652:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6644:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6644:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6659:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6640:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6640:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6633:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6633:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6630:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6694:19:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6710:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6704:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6704:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6698:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6736:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6738:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6738:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6738:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6728:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6732:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6725:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6725:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6722:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6767:76:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "6777:66:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6771:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6852:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6872:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6866:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6866:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6856:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6884:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6906:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "6930:2:66"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "6934:4:66",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "6926:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "6926:13:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "6941:2:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6922:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6922:22:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6946:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6918:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6918:31:66"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6951:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6914:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6914:40:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6902:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6902:53:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6888:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7014:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7016:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7016:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7016:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6973:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6985:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6970:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6970:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6993:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7005:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6990:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6990:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6967:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6967:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6964:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7052:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7056:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7045:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7045:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7045:22:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7083:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7091:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7076:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7076:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7076:18:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7140:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7149:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7152:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7142:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7142:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7142:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "7117:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "7121:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "7113:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "7113:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7126:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7109:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7109:20:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7131:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7106:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7106:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7103:53:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7191:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7195:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7187:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7187:11:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7204:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7212:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7200:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7200:15:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7217:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7165:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7165:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7165:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7229:16:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7239:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7229:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6365:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6376:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6388:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6309:942:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7384:136:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7394:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7406:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7417:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7402:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7402:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7394:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7436:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7447:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7429:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7429:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7429:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7474:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7485:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7470:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7470:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7494:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7502:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7490:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7490:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7463:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7463:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7463:51:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7345:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7356:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7364:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7375:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7256:264:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7699:170:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7716:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7727:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7709:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7709:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7709:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7750:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7761:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7746:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7746:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7766:2:66",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7739:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7739:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7739:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7789:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7800:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7785:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7785:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "436f6e74726163742069732064697361626c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7805:22:66",
                                                                        "type": "",
                                                                        "value": "Contract is disabled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7778:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7778:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7778:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7837:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7849:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7860:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7845:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7845:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7837:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7676:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7690:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7525:344:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8048:179:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8065:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8076:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8058:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8058:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8058:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8099:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8110:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8095:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8095:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8115:2:66",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8088:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8088:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8088:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8138:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8149:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8134:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8134:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6465706f73697420746f6b656e206e6f742077686974656c6973746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8154:31:66",
                                                                        "type": "",
                                                                        "value": "deposit token not whitelisted"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8127:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8127:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8127:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8195:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8207:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8218:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8203:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8203:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8195:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8025:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8039:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7874:353:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8406:180:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8423:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8434:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8416:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8416:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8416:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8457:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8468:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8453:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8453:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8473:2:66",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8446:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8446:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8446:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8496:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8507:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8492:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8492:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "736c6f7752656c6179466565506374206d757374206265203c3d20323525",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8512:32:66",
                                                                        "type": "",
                                                                        "value": "slowRelayFeePct must be <= 25%"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8485:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8485:60:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8485:60:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8554:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8566:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8577:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8562:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8562:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8554:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8383:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8397:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8232:354:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8765:223:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8782:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8793:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8775:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8775:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8775:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8816:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8827:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8812:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8812:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8832:2:66",
                                                                        "type": "",
                                                                        "value": "33"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8805:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8805:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8805:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8855:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8866:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8851:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8851:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "696e7374616e7452656c6179466565506374206d757374206265203c3d203235",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8871:34:66",
                                                                        "type": "",
                                                                        "value": "instantRelayFeePct must be <= 25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8844:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8844:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8844:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8926:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8937:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8922:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8922:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "25",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8942:3:66",
                                                                        "type": "",
                                                                        "value": "%"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8915:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8915:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8915:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8955:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8967:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8978:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8963:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8963:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8955:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8742:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8756:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8591:397:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9025:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9042:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9045:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9035:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9035:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9035:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9139:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9142:4:66",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9132:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9132:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9132:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9163:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9166:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9156:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9156:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9156:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "8993:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9230:181:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9240:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9250:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9244:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9277:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9292:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9295:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9288:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9288:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9281:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9307:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9322:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9325:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9318:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9318:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9311:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9353:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9355:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9355:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9355:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9343:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9348:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9340:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9340:12:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9337:38:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9384:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9396:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9401:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9392:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9392:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9384:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9212:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9215:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9221:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9182:229:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9463:189:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9473:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9483:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9477:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9510:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9525:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9528:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9521:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9521:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9514:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9540:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9555:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9558:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9551:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9551:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9544:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9595:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9597:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9597:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9597:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9576:3:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9585:2:66"
                                                                            },
                                                                            {
                                                                                "name": "y_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9589:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9581:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9581:12:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9573:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9573:21:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9570:47:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9626:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9637:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9642:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9633:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9633:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9626:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9446:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9449:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9455:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9416:236:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9831:178:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9848:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9859:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9841:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9841:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9841:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9882:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9893:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9878:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9878:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9898:2:66",
                                                                        "type": "",
                                                                        "value": "28"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9871:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9871:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9871:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9921:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9932:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9917:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9917:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6465706f736974206d696e656420616674657220646561646c696e65",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9937:30:66",
                                                                        "type": "",
                                                                        "value": "deposit mined after deadline"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9910:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9910:58:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9910:58:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9977:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9989:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10000:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9985:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9985:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9977:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9808:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9822:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9657:352:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10188:177:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10205:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10216:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10198:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10198:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10198:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10239:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10250:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10235:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10235:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10255:2:66",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10228:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10228:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10228:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10278:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10289:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10274:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10274:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6d73672e76616c7565206d757374206d6174636820616d6f756e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10294:29:66",
                                                                        "type": "",
                                                                        "value": "msg.value must match amount"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10267:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10267:57:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10267:57:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10333:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10345:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10356:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10341:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10341:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10333:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10165:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10179:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10014:351:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10717:631:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10727:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10739:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10750:3:66",
                                                                        "type": "",
                                                                        "value": "320"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10735:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10735:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10727:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10770:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10781:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10763:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10763:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10763:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10808:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10819:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10804:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10804:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10824:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10797:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10797:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10797:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10840:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10850:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10844:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10912:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10923:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10908:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10908:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10932:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10940:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10928:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10928:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10901:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10901:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10901:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10964:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10975:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10960:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10960:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10984:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10992:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10980:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10980:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10953:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10953:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10953:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11016:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11027:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11012:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11012:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11037:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11045:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11033:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11033:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11005:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11005:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11005:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11069:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11080:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11065:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11065:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value5",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11090:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11098:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11086:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11086:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11058:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11058:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11058:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11122:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11133:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11118:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11118:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11139:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11111:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11111:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11111:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11155:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "11165:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11159:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11203:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11214:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11199:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11199:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value7",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11224:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11232:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11220:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11220:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11192:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11192:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11192:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11256:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11267:3:66",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11252:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11252:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value8",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11277:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11285:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11273:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11273:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11245:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11245:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11245:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11309:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11320:3:66",
                                                                                "type": "",
                                                                                "value": "288"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11305:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11305:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value9",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11330:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11338:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11326:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11326:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11298:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11298:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11298:44:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10614:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value9",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10625:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value8",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10633:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10641:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10649:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10657:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10665:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10673:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10681:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10689:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10697:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10708:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10370:978:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11401:80:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "11428:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11430:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "11430:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "11430:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11417:1:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11424:1:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11420:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11420:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11414:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11414:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11411:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11459:16:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11470:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11473:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11466:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11466:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11459:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11384:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11387:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11393:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11353:128:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11534:213:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11544:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "11554:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11548:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11605:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11620:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11623:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11616:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11616:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11609:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11635:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11650:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11653:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11646:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11646:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11639:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "11690:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11692:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "11692:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "11692:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11671:3:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11680:2:66"
                                                                            },
                                                                            {
                                                                                "name": "y_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11684:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11676:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11676:12:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11668:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11668:21:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11665:47:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11721:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11732:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11737:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11728:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11728:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11721:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint160",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11517:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11520:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11526:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11486:261:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11935:319:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11945:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11957:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11968:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11953:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11953:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11945:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11981:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "11991:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11985:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12049:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12064:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12072:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12060:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12060:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12042:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12042:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12042:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12096:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12107:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12092:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12092:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12116:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12124:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12112:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12112:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12085:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12085:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12085:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12148:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12159:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12144:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12144:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12168:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12176:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12164:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12164:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12137:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12137:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12137:59:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12216:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12227:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12212:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12212:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12236:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12244:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12232:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12232:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12205:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12205:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12205:43:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11880:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11891:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11899:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11907:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11915:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11926:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11752:502:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12382:184:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12392:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12404:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12415:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12400:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12400:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12392:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12434:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12449:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12457:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12445:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12445:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12427:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12427:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12427:74:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12521:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12532:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12517:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12517:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "12551:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "12544:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "12544:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12537:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12537:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12510:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12510:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12510:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12343:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12354:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12362:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12373:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12259:307:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12745:181:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12762:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12773:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12755:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12755:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12755:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12796:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12807:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12792:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12792:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12812:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12785:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12785:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12785:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12835:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12846:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12831:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12831:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12851:33:66",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12824:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12824:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12824:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12894:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12906:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12917:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12902:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12902:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12894:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12722:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12736:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12571:355:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13088:241:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13098:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13110:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13121:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13106:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13106:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13098:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13133:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "13143:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13137:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13201:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13216:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13224:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13212:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13212:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13194:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13194:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13194:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13248:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13259:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13244:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13244:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13268:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13276:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13264:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13264:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13237:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13237:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13237:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13300:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13311:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13296:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13296:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13316:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13289:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13289:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13289:34:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13041:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13052:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13060:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13068:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13079:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12931:398:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13508:163:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13525:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13536:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13518:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13518:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13518:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13559:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13570:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13555:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13555:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13575:2:66",
                                                                        "type": "",
                                                                        "value": "13"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13548:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13548:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13548:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13598:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13609:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13594:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13594:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "456d7074792061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13614:15:66",
                                                                        "type": "",
                                                                        "value": "Empty address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13587:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13587:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13587:43:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13639:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13651:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13662:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13647:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13647:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13639:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_aa0ab5a1cd950415cd9b3336f3396626bc2fbfb3d3bb8bee016bc0afd6493316__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13485:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13499:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13334:337:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13754:167:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "13800:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "13809:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "13812:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13802:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "13802:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "13802:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13775:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13784:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13771:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13771:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13796:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13767:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13767:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "13764:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13825:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13844:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13838:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13838:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13829:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13885:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13863:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13863:28:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13863:28:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13900:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13910:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13900:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13720:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13731:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13743:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13676:245:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14100:232:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14117:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14128:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14110:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14110:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14110:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14151:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14162:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14147:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14147:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14167:2:66",
                                                                        "type": "",
                                                                        "value": "42"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14140:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14140:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14140:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14190:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14201:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14186:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14186:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14206:34:66",
                                                                        "type": "",
                                                                        "value": "SafeERC20: ERC20 operation did n"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14179:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14179:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14179:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14261:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14272:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14257:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14257:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6f742073756363656564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14277:12:66",
                                                                        "type": "",
                                                                        "value": "ot succeed"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14250:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14250:40:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14250:40:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14299:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14311:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14322:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14307:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14307:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14299:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14077:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14091:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13926:406:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14511:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14528:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14539:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14521:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14521:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14521:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14562:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14573:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14558:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14558:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14578:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14551:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14551:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14551:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14601:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14612:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14597:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14597:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14617:34:66",
                                                                        "type": "",
                                                                        "value": "Address: insufficient balance fo"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14590:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14590:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14590:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14672:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14683:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14668:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14668:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "722063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14688:8:66",
                                                                        "type": "",
                                                                        "value": "r call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14661:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14661:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14661:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14706:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14718:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14729:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14714:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14714:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14706:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14488:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14502:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14337:402:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14918:179:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14935:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14946:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14928:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14928:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14928:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14969:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14980:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14965:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14965:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14985:2:66",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14958:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14958:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14958:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15008:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15019:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15004:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15004:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15024:31:66",
                                                                        "type": "",
                                                                        "value": "Address: call to non-contract"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14997:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14997:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14997:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15065:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15077:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15088:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15073:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15073:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15065:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14895:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14909:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14744:353:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15239:137:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15249:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15269:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15263:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15263:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15253:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15311:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15319:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15307:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15307:17:66"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15326:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15331:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15285:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15285:53:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15285:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15347:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15358:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15363:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15354:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15354:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15347:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15215:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15220:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15231:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15102:274:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15502:321:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15519:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15530:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15512:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15512:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15512:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15542:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15562:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15556:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15556:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15546:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15589:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15600:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15585:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15585:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15605:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15578:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15578:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15578:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15647:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15655:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15643:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15643:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15664:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15675:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15660:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15660:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15680:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15621:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15621:66:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15621:66:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15696:121:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15712:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15731:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15739:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15727:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15727:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "15744:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15723:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15723:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15708:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15708:104:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15814:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15704:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15704:113:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15696:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15471:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15482:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15493:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15381:442:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_addresst_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint64(add(headStart, 96))\n        value4 := abi_decode_uint64(add(headStart, 128))\n        value5 := abi_decode_uint64(add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ONLY_COUNTERPART_GATEWAY\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"can't bridge zero tokens\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"non-whitelisted token or last br\")\n        mstore(add(headStart, 96), \"idge too recent\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        mstore(add(headStart, 128), 0)\n        tail := add(headStart, 160)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Contract is disabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"deposit token not whitelisted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"slowRelayFeePct must be <= 25%\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"instantRelayFeePct must be <= 25\")\n        mstore(add(headStart, 96), \"%\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint64(x, y) -> diff\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function checked_add_t_uint64(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"deposit mined after deadline\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"msg.value must match amount\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed(headStart, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 320)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), and(value5, _1))\n        mstore(add(headStart, 192), value6)\n        let _2 := 0xffffffffffffffff\n        mstore(add(headStart, 224), and(value7, _2))\n        mstore(add(headStart, 256), and(value8, _2))\n        mstore(add(headStart, 288), and(value9, _2))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_add_t_uint160(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 96), and(value3, _1))\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_aa0ab5a1cd950415cd9b3336f3396626bc2fbfb3d3bb8bee016bc0afd6493316__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Empty address\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n        mstore(add(headStart, 96), \"ot succeed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r call\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600436106101295760003560e01c80639a8a0592116100a5578063c2d9dca911610074578063daf9c21011610059578063daf9c21014610386578063de7eba7814610465578063fbb9fcf71461048557600080fd5b8063c2d9dca914610346578063c83568591461035957600080fd5b80639a8a0592146102c05780639bfd2cdc146102d6578063a1244c67146102f6578063b2d6f4d41461030c57600080fd5b80632ec35b31116100fc5780635285e058116100e15780635285e05814610237578063563c7f601461027057806363635fd91461029057600080fd5b80632ec35b31146101f75780634dedca281461021757600080fd5b8063146bf4b11461012e5780631c39c38d1461018557806322f8e566146101b257806329cb924d146101d4575b600080fd5b34801561013a57600080fd5b5060025461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561019157600080fd5b5060005461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101be57600080fd5b506101d26101cd366004611c21565b6104ef565b005b3480156101e057600080fd5b506101e9610598565b60405190815260200161017c565b34801561020357600080fd5b506101d2610212366004611c57565b61065f565b34801561022357600080fd5b506101d2610232366004611c96565b610733565b34801561024357600080fd5b5060055461015b9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561027c57600080fd5b506101d261028b366004611cea565b610806565b34801561029c57600080fd5b506102b06102ab366004611d21565b6108d7565b604051901515815260200161017c565b3480156102cc57600080fd5b506101e960015481565b3480156102e257600080fd5b506101d26102f1366004611d3c565b61093a565b34801561030257600080fd5b506101e960035481565b34801561031857600080fd5b5060055461032d9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161017c565b6101d2610354366004611d71565b610d0b565b34801561036557600080fd5b5060065461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039257600080fd5b5061041c6103a1366004611d21565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff909116918301919091521515606082015260800161017c565b34801561047157600080fd5b506101d2610480366004611d21565b6112b5565b34801561049157600080fd5b506102b06104a0366004611d21565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff1661051157600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b15801561057d57600080fd5b505af1158015610591573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff161561065a5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561061d57600080fd5b505afa158015610631573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106559190611dde565b905090565b504290565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661068d81611380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f47415445574159000000000000000060448201526064015b60405180910390fd5b61072f826113a0565b5050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661076181611380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b61080084848461140d565b50505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661083481611380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b6108d283836115e5565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1615158015610934575061093482611698565b92915050565b61094261170f565b61096f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b1580156109d957600080fd5b505af11580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a119190611dde565b905060008111610a7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e730000000000000000604482015260640161071d565b610a86836108d7565b610b12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e740000000000000000000000000000000000606482015260840161071d565b610b1a610598565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260046020819052604080832060018101805467ffffffffffffffff9790971674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff88168117909155600654915492517f7b3a3c8b00000000000000000000000000000000000000000000000000000000815292861693830193909352918416948416949094176024850152604484018590526080606485015260848401919091521690637b3a3c8b9060a401600060405180830381600087803b158015610c1357600080fd5b505af1158015610c27573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c6d9190810190611e52565b506040805182815263ffffffff84166020820152339173ffffffffffffffffffffffffffffffffffffffff8616917f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a35061072f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff16610dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c6564000000000000000000000000604482015260640161071d565b610dc761170f565b610df4600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c6973746564000000604482015260640161071d565b6703782dace9d900008467ffffffffffffffff161115610f21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d203235250000604482015260640161071d565b6703782dace9d900008367ffffffffffffffff161115610fc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f2500000000000000000000000000000000000000000000000000000000000000606482015260840161071d565b610fcf61025883611f41565b67ffffffffffffffff16610fe1610598565b1015801561100b5750610ff682610258611f6a565b67ffffffffffffffff16611008610598565b11155b611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e6500000000604482015260640161071d565b60025473ffffffffffffffffffffffffffffffffffffffff878116600090815260046020526040902054811691161480156110ac5750600034115b156111805784341461111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e740000000000604482015260640161071d565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561116257600080fd5b505af1158015611176573d6000803e3d6000fd5b50505050506111a2565b6111a273ffffffffffffffffffffffffffffffffffffffff8716333088611795565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a16001600360008282546112629190611f96565b909155506112ac9050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff166112e381611380565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f4e4c595f434f554e544552504152545f474154455741590000000000000000604482015260640161071d565b61072f8261182a565b600061093473111100000000000000000000000000000000111183611fae565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001611458610598565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd8383611597610598565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081206001015490916116f69167ffffffffffffffff918216917401000000000000000000000000000000000000000090910416611f6a565b67ffffffffffffffff16611708610598565b1192915050565b60005474010000000000000000000000000000000000000000900460ff16611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161071d565b565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610800908590611929565b73ffffffffffffffffffffffffffffffffffffffff81166118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f456d707479206164647265737300000000000000000000000000000000000000604482015260640161071d565b600580547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff84811682029290921792839055604051920416907fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b600061198b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a359092919063ffffffff16565b8051909150156108d257808060200190518101906119a99190611fdd565b6108d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161071d565b6060611a448484600085611a4e565b90505b9392505050565b606082471015611ae0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161071d565b843b611b48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161071d565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611b719190611ffa565b60006040518083038185875af1925050503d8060008114611bae576040519150601f19603f3d011682016040523d82523d6000602084013e611bb3565b606091505b5091509150611bc3828286611bce565b979650505050505050565b60608315611bdd575081611a47565b825115611bed5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071d9190612016565b600060208284031215611c3357600080fd5b5035919050565b803567ffffffffffffffff81168114611c5257600080fd5b919050565b600060208284031215611c6957600080fd5b611a4782611c3a565b803573ffffffffffffffffffffffffffffffffffffffff81168114611c5257600080fd5b600080600060608486031215611cab57600080fd5b611cb484611c72565b9250611cc260208501611c72565b9150611cd060408501611c72565b90509250925092565b8015158114611ce757600080fd5b50565b60008060408385031215611cfd57600080fd5b611d0683611c72565b91506020830135611d1681611cd9565b809150509250929050565b600060208284031215611d3357600080fd5b611a4782611c72565b60008060408385031215611d4f57600080fd5b611d5883611c72565b9150602083013563ffffffff81168114611d1657600080fd5b60008060008060008060c08789031215611d8a57600080fd5b611d9387611c72565b9550611da160208801611c72565b945060408701359350611db660608801611c3a565b9250611dc460808801611c3a565b9150611dd260a08801611c3a565b90509295509295509295565b600060208284031215611df057600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015611e41578181015183820152602001611e29565b838111156108005750506000910152565b600060208284031215611e6457600080fd5b815167ffffffffffffffff80821115611e7c57600080fd5b818401915084601f830112611e9057600080fd5b815181811115611ea257611ea2611df7565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ee857611ee8611df7565b81604052828152876020848701011115611f0157600080fd5b611bc3836020830160208801611e26565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff83811690831681811015611f6257611f62611f12565b039392505050565b600067ffffffffffffffff808316818516808303821115611f8d57611f8d611f12565b01949350505050565b60008219821115611fa957611fa9611f12565b500190565b600073ffffffffffffffffffffffffffffffffffffffff808316818516808303821115611f8d57611f8d611f12565b600060208284031215611fef57600080fd5b8151611a4781611cd9565b6000825161200c818460208701611e26565b9190910192915050565b6020815260008251806020840152612035816040850160208701611e26565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212206879f651a1ded06aa976c85f28b0500a44e7c6a812b3a840054191e1dd69dd7064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x129 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9A8A0592 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xC2D9DCA9 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDAF9C210 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDAF9C210 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xDE7EBA78 EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0xFBB9FCF7 EQ PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC2D9DCA9 EQ PUSH2 0x346 JUMPI DUP1 PUSH4 0xC8356859 EQ PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0x9BFD2CDC EQ PUSH2 0x2D6 JUMPI DUP1 PUSH4 0xA1244C67 EQ PUSH2 0x2F6 JUMPI DUP1 PUSH4 0xB2D6F4D4 EQ PUSH2 0x30C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x5285E058 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x5285E058 EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x563C7F60 EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x63635FD9 EQ PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x4DEDCA28 EQ PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x146BF4B1 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x1D4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x1C21 JUMP JUMPDEST PUSH2 0x4EF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH2 0x598 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C57 JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x232 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C96 JUMP JUMPDEST PUSH2 0x733 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x15B SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x28B CALLDATASIZE PUSH1 0x4 PUSH2 0x1CEA JUMP JUMPDEST PUSH2 0x806 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B0 PUSH2 0x2AB CALLDATASIZE PUSH1 0x4 PUSH2 0x1D21 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x2F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D3C JUMP JUMPDEST PUSH2 0x93A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x318 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x32D SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH2 0x1D2 PUSH2 0x354 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D71 JUMP JUMPDEST PUSH2 0xD0B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x365 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41C PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D21 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 DUP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x480 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D21 JUMP JUMPDEST PUSH2 0x12B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B0 PUSH2 0x4A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D21 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x22F8E56600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x591 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x631 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x655 SWAP2 SWAP1 PUSH2 0x1DDE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x68D DUP2 PUSH2 0x1380 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x726 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x72F DUP3 PUSH2 0x13A0 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x761 DUP2 PUSH2 0x1380 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0x800 DUP5 DUP5 DUP5 PUSH2 0x140D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x834 DUP2 PUSH2 0x1380 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0x8D2 DUP4 DUP4 PUSH2 0x15E5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 ISZERO PUSH2 0x934 JUMPI POP PUSH2 0x934 DUP3 PUSH2 0x1698 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x942 PUSH2 0x170F JUMP JUMPDEST PUSH2 0x96F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9ED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA11 SWAP2 SWAP1 PUSH2 0x1DDE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0xA7D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x63616E277420627269646765207A65726F20746F6B656E730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0xA86 DUP4 PUSH2 0x8D7 JUMP JUMPDEST PUSH2 0xB12 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F6E2D77686974656C697374656420746F6B656E206F72206C617374206272 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964676520746F6F20726563656E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0xB1A PUSH2 0x598 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP8 SWAP1 SWAP8 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 SLOAD SWAP2 SLOAD SWAP3 MLOAD PUSH32 0x7B3A3C8B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 DUP7 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP5 AND SWAP5 DUP5 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x84 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE AND SWAP1 PUSH4 0x7B3A3C8B SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC13 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC27 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xC6D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1E52 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH32 0x95B5EC953BD38FBAA6F859725352BF73202C155A6809E5622C95CEEF331EAC6C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x72F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP6 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xDBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742069732064697361626C6564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0xDC7 PUSH2 0x170F JUMP JUMPDEST PUSH2 0xDF4 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xEA5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F73697420746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xF21 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6F7752656C6179466565506374206D757374206265203C3D203235250000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E7374616E7452656C6179466565506374206D757374206265203C3D203235 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0xFCF PUSH2 0x258 DUP4 PUSH2 0x1F41 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xFE1 PUSH2 0x598 JUMP JUMPDEST LT ISZERO DUP1 ISZERO PUSH2 0x100B JUMPI POP PUSH2 0xFF6 DUP3 PUSH2 0x258 PUSH2 0x1F6A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1008 PUSH2 0x598 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0x1071 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F736974206D696E656420616674657220646561646C696E6500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP2 AND EQ DUP1 ISZERO PUSH2 0x10AC JUMPI POP PUSH1 0x0 CALLVALUE GT JUMPDEST ISZERO PUSH2 0x1180 JUMPI DUP5 CALLVALUE EQ PUSH2 0x111A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206D757374206D6174636820616D6F756E740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1176 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11A2 JUMP JUMPDEST PUSH2 0x11A2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP9 PUSH2 0x1795 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP7 DUP8 MSTORE SWAP1 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP12 DUP4 AND SWAP1 DUP6 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP1 DUP6 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH32 0xAB77617F2B9BDBB101FC328E585470FB3C845C92B25C4B080CB7B66F7163CF72 SWAP1 PUSH2 0x140 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1262 SWAP2 SWAP1 PUSH2 0x1F96 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x12AC SWAP1 POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12E3 DUP2 PUSH2 0x1380 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1377 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434F554E544552504152545F474154455741590000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH2 0x72F DUP3 PUSH2 0x182A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x934 PUSH20 0x1111000000000000000000000000000000001111 DUP4 PUSH2 0x1FAE JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1458 PUSH2 0x598 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP6 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 DUP5 AND OR DUP2 SSTORE SWAP5 DUP7 ADD MLOAD SWAP5 SWAP1 SWAP3 ADD DUP1 SLOAD SWAP3 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP1 SWAP2 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH21 0x10000000000000000000000000000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH32 0x93F23ADD56B90352EA2EF3BC2123262792AF300DC6060C99F6EE06A7026863BD DUP4 DUP4 PUSH2 0x1597 PUSH2 0x598 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP7 ISZERO ISZERO SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF84482204FF927822D3068D71E16E14B51CB1B2ADAFA7D6E11EDC1B8DFD8C0DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 PUSH2 0x16F6 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x1F6A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1708 PUSH2 0x598 JUMP JUMPDEST GT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1793 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x800 SWAP1 DUP6 SWAP1 PUSH2 0x1929 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x18A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x456D707479206164647265737300000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND SWAP1 PUSH32 0xA9E8C42C9E7FCA7F62755189A16B2F5314D43D8FB24E91BA54E6D65F9314E849 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x198B DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A35 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x8D2 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x19A9 SWAP2 SWAP1 PUSH2 0x1FDD JUMP JUMPDEST PUSH2 0x8D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71D JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1A44 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x1A4E JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x1AE0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x71D JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x1B48 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x71D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1B71 SWAP2 SWAP1 PUSH2 0x1FFA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BAE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BB3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1BC3 DUP3 DUP3 DUP7 PUSH2 0x1BCE JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1BDD JUMPI POP DUP2 PUSH2 0x1A47 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1BED JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x71D SWAP2 SWAP1 PUSH2 0x2016 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1C52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A47 DUP3 PUSH2 0x1C3A JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1C52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1CAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1CB4 DUP5 PUSH2 0x1C72 JUMP JUMPDEST SWAP3 POP PUSH2 0x1CC2 PUSH1 0x20 DUP6 ADD PUSH2 0x1C72 JUMP JUMPDEST SWAP2 POP PUSH2 0x1CD0 PUSH1 0x40 DUP6 ADD PUSH2 0x1C72 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1CE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1CFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D06 DUP4 PUSH2 0x1C72 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1D16 DUP2 PUSH2 0x1CD9 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A47 DUP3 PUSH2 0x1C72 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D58 DUP4 PUSH2 0x1C72 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1D16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1D8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1D93 DUP8 PUSH2 0x1C72 JUMP JUMPDEST SWAP6 POP PUSH2 0x1DA1 PUSH1 0x20 DUP9 ADD PUSH2 0x1C72 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1DB6 PUSH1 0x60 DUP9 ADD PUSH2 0x1C3A JUMP JUMPDEST SWAP3 POP PUSH2 0x1DC4 PUSH1 0x80 DUP9 ADD PUSH2 0x1C3A JUMP JUMPDEST SWAP2 POP PUSH2 0x1DD2 PUSH1 0xA0 DUP9 ADD PUSH2 0x1C3A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E41 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E29 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x800 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1E90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x1EA2 JUMPI PUSH2 0x1EA2 PUSH2 0x1DF7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1EE8 JUMPI PUSH2 0x1EE8 PUSH2 0x1DF7 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1F01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BC3 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x1E26 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x1F62 JUMPI PUSH2 0x1F62 PUSH2 0x1F12 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1F8D JUMPI PUSH2 0x1F8D PUSH2 0x1F12 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1FA9 JUMPI PUSH2 0x1FA9 PUSH2 0x1F12 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1F8D JUMPI PUSH2 0x1F8D PUSH2 0x1F12 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1A47 DUP2 PUSH2 0x1CD9 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x200C DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1E26 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2035 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1E26 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH9 0x79F651A1DED06AA976 0xC8 0x5F 0x28 0xB0 POP EXP DIFFICULTY 0xE7 0xC6 0xA8 SLT 0xB3 0xA8 BLOCKHASH SDIV COINBASE SWAP2 0xE1 0xDD PUSH10 0xDD7064736F6C63430008 MULMOD STOP CALLER ",
                            "sourceMap": "488:6051:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1076:21:44;;;;;;;;;;-1:-1:-1;1076:21:44;;;;;;;;;;;190:42:66;178:55;;;160:74;;148:2;133:18;1076:21:44;;;;;;;;391:27:30;;;;;;;;;;-1:-1:-1;391:27:30;;;;;;;;1097:115;;;;;;;;;;-1:-1:-1;1097:115:30;;;;;:::i;:::-;;:::i;:::-;;1457:276;;;;;;;;;;;;;:::i;:::-;;;576:25:66;;;564:2;549:18;1457:276:30;430:177:66;2977:203:46;;;;;;;;;;-1:-1:-1;2977:203:46;;;;;:::i;:::-;;:::i;3699:226::-;;;;;;;;;;-1:-1:-1;3699:226:46;;;;;:::i;:::-;;:::i;653:31::-;;;;;;;;;;-1:-1:-1;653:31:46;;;;;;;;;;;4290:199;;;;;;;;;;-1:-1:-1;4290:199:46;;;;;:::i;:::-;;:::i;10863:154:44:-;;;;;;;;;;-1:-1:-1;10863:154:44;;;;;:::i;:::-;;:::i;:::-;;;2316:14:66;;2309:22;2291:41;;2279:2;2264:18;10863:154:44;2151:187:66;929:22:44;;;;;;;;;;;;;;;;5182:975:46;;;;;;;;;;-1:-1:-1;5182:975:46;;;;;:::i;:::-;;:::i;1198:31:44:-;;;;;;;;;;;;;;;;1795:34;;;;;;;;;;-1:-1:-1;1795:34:44;;;;;;;;;;;2872:18:66;2860:31;;;2842:50;;2830:2;2815:18;1795:34:44;2698:200:66;6672:2809:44;;;;;;:::i;:::-;;:::i;740:30:46:-;;;;;;;;;;-1:-1:-1;740:30:46;;;;;;;;1602:65:44;;;;;;;;;;-1:-1:-1;1602:65:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3688:42:66;3757:15;;;3739:34;;3809:15;;;;3804:2;3789:18;;3782:43;3873:18;3861:31;;;3841:18;;;3834:59;;;;3936:14;3929:22;3924:2;3909:18;;3902:50;3665:3;3650:19;1602:65:44;3455:503:66;2527:168:46;;;;;;;;;;-1:-1:-1;2527:168:46;;;;;:::i;:::-;;:::i;9947:140:44:-;;;;;;;;;;-1:-1:-1;9947:140:44;;;;;:::i;:::-;10034:26;;10011:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;:46;;;9947:140;1097:115:30;899:3;875:12;:28;:12;867:37;;;;;;1171:12:::1;::::0;1165:40:::1;::::0;;;;::::1;::::0;::::1;576:25:66::0;;;1171:12:30::1;::::0;;::::1;::::0;1165:34:::1;::::0;549:18:66;;1165:40:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1097:115:::0;:::o;1457:276::-;1512:7;1535:12;;:28;:12;:28;1531:196;;1592:12;;;;;;;;;;1586:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1579:43;;1457:276;:::o;1531:196::-;-1:-1:-1;1660:15:30;;1457:276::o;2977:203:46:-;3092:16;;;;;;;503:31:33;3092:16:46;503::33;:31::i;:::-;489:45;;:10;:45;;;481:82;;;;;;;4354:2:66;481:82:33;;;4336:21:66;4393:2;4373:18;;;4366:30;4432:26;4412:18;;;4405:54;4476:18;;481:82:33;;;;;;;;;3124:49:46::1;3149:23;3124:24;:49::i;:::-;2977:203:::0;;:::o;3699:226::-;3843:16;;;;;;;503:31:33;3843:16:46;503::33;:31::i;:::-;489:45;;:10;:45;;;481:82;;;;;;;4354:2:66;481:82:33;;;4336:21:66;4393:2;4373:18;;;4366:30;4432:26;4412:18;;;4405:54;4476:18;;481:82:33;4152:348:66;481:82:33;3871:47:46::1;3887:7;3896;3905:12;3871:15;:47::i;:::-;3699:226:::0;;;;:::o;4290:199::-;4406:16;;;;;;;503:31:33;4406:16:46;503::33;:31::i;:::-;489:45;;:10;:45;;;481:82;;;;;;;4354:2:66;481:82:33;;;4336:21:66;4393:2;4373:18;;;4366:30;4432:26;4412:18;;;4405:54;4476:18;;481:82:33;4152:348:66;481:82:33;4438:44:46::1;4457:7;4466:15;4438:18;:44::i;:::-;4290:199:::0;;;:::o;10863:154:44:-;10034:26;;;10920:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;:46;;10943:67;;;;;10972:38;11002:7;10972:29;:38::i;:::-;10936:74;10863:154;-1:-1:-1;;10863:154:44:o;5182:975:46:-;1317:19:28;:17;:19::i;:::-;1346:17;2459:5;2445:19;;;;;;2335:136;1346:17;5310:43:46::1;::::0;;;;5347:4:::1;5310:43;::::0;::::1;160:74:66::0;5276:31:46::1;::::0;5310:28:::1;::::0;::::1;::::0;::::1;::::0;133:18:66;;5310:43:46::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5276:77;;5397:1;5371:23;:27;5363:64;;;::::0;::::1;::::0;;4707:2:66;5363:64:46::1;::::0;::::1;4689:21:66::0;4746:2;4726:18;;;4719:30;4785:26;4765:18;;;4758:54;4829:18;;5363:64:46::1;4505:348:66::0;5363:64:46::1;5445:18;5455:7;5445:9;:18::i;:::-;5437:78;;;::::0;::::1;::::0;;5060:2:66;5437:78:46::1;::::0;::::1;5042:21:66::0;5099:2;5079:18;;;5072:30;5138:34;5118:18;;;5111:62;5209:17;5189:18;;;5182:45;5244:19;;5437:78:46::1;4858:411:66::0;5437:78:46::1;5577:16;:14;:16::i;:::-;5526:26;::::0;;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:41:::1;::::0;::::1;:68:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;5624:15:::1;::::0;5671:34;;5605:463;;;;;5671:34;;::::1;5605:463:::0;;::::1;5602:34:66::0;;;;5772:39:46;;;;;;;;;;5652:18:66;;;5645:43;5704:18;;;5697:34;;;5767:3;5747:18;;;5740:31;5787:19;;;5780:30;;;;5624:15:46::1;::::0;5605:52:::1;::::0;5827:19:66;;5605:463:46::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;6084:66:46::1;::::0;;7429:25:66;;;7502:10;7490:23;;7485:2;7470:18;;7463:51;6139:10:46::1;::::0;6084:66:::1;::::0;::::1;::::0;::::1;::::0;7402:18:66;6084:66:46::1;;;;;;;5266:891;1384:20:28::0;2658:11;:18;;;;;;;;2477:206;6672:2809:44;2850:26;;;;;;;:17;:26;;;;;:42;;;:26;;:42;;;;;2842:75;;;;;;;7727:2:66;2842:75:44;;;7709:21:66;7766:2;7746:18;;;7739:30;7805:22;7785:18;;;7778:50;7845:18;;2842:75:44;7525:344:66;2842:75:44;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;10034:26:44::0;;;10011:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;6942:67:::2;;;::::0;::::2;::::0;;8076:2:66;6942:67:44::2;::::0;::::2;8058:21:66::0;8115:2;8095:18;;;8088:30;8154:31;8134:18;;;8127:59;8203:18;;6942:67:44::2;7874:353:66::0;6942:67:44::2;7276:7;7257:15;:26;;;;7249:69;;;::::0;::::2;::::0;;8434:2:66;7249:69:44::2;::::0;::::2;8416:21:66::0;8473:2;8453:18;;;8446:30;8512:32;8492:18;;;8485:60;8562:18;;7249:69:44::2;8232:354:66::0;7249:69:44::2;7358:7;7336:18;:29;;;;7328:75;;;::::0;::::2;::::0;;8793:2:66;7328:75:44::2;::::0;::::2;8775:21:66::0;8832:2;8812:18;;;8805:30;8871:34;8851:18;;;8844:62;8942:3;8922:18;;;8915:31;8963:19;;7328:75:44::2;8591:397:66::0;7328:75:44::2;8061:27;8078:10;8061:14:::0;:27:::2;:::i;:::-;8041:47;;:16;:14;:16::i;:::-;:47;;:98;;;;-1:-1:-1::0;8112:27:44::2;:14:::0;8129:10:::2;8112:27;:::i;:::-;8092:47;;:16;:14;:16::i;:::-;:47;;8041:98;8020:173;;;::::0;::::2;::::0;;9859:2:66;8020:173:44::2;::::0;::::2;9841:21:66::0;9898:2;9878:18;;;9871:30;9937;9917:18;;;9910:58;9985:18;;8020:173:44::2;9657:352:66::0;8020:173:44::2;8468:6;::::0;::::2;8430:26:::0;;::::2;8468:6;8430:26:::0;;;:17:::2;:26;::::0;;;;:34;;::::2;8468:6:::0;::::2;8430:44;:61:::0;::::2;;;;8490:1;8478:9;:13;8430:61;8426:623;;;8528:6;8515:9;:19;8507:59;;;::::0;::::2;::::0;;10216:2:66;8507:59:44::2;::::0;::::2;10198:21:66::0;10255:2;10235:18;;;10228:30;10294:29;10274:18;;;10267:57;10341:18;;8507:59:44::2;10014:351:66::0;8507:59:44::2;8598:7;8580:35;;;8624:9;8580:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;8426:623;;;8982:67;:32;::::0;::::2;9015:10;9035:4;9042:6:::0;8982:32:::2;:67::i;:::-;9093:7;::::0;9114:16:::2;::::0;9268:26:::2;::::0;;::::2;;::::0;;;:17:::2;:26;::::0;;;;;;;;:34;9065:377;;10763:25:66;;;10804:18;;;10797:34;;;;10928:15;;;10908:18;;;10901:43;9244:10:44::2;10975:2:66::0;10960:18;;10953:43;9268:34:44;::::2;11027:3:66::0;11012:19;;11005:44;11080:3;11065:19;;11058:44;11133:3;11118:19;;11111:35;;;11165:18;11220:15;;;11214:3;11199:19;;11192:44;11273:15;;;11267:3;11252:19;;11245:44;11326:15;;11320:3;11305:19;;11298:44;9065:377:44::2;::::0;10750:3:66;10735:19;9065:377:44::2;;;;;;;9473:1;9453:16;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;1384:20:28::1;::::0;-1:-1:-1;2658:11:28;:18;;;;;;;;2477:206;1384:20:::1;6672:2809:44::0;;;;;;;:::o;2527:168:46:-;2619:16;;;;;;;503:31:33;2619:16:46;503::33;:31::i;:::-;489:45;;:10;:45;;;481:82;;;;;;;4354:2:66;481:82:33;;;4336:21:66;4393:2;4373:18;;;4366:30;4432:26;4412:18;;;4405:54;4476:18;;481:82:33;4152:348:66;481:82:33;2647:41:46::1;2668:19;2647:20;:41::i;826:152:33:-:0;894:17;943:27;621:42;951:9;943:27;:::i;4015:198:44:-;4100:20;:46;;;;;;;;;;;;;4161:45;;2842:50:66;;;4161:45:44;;2830:2:66;2815:18;4161:45:44;;;;;;;4015:198;:::o;4632:445::-;4791:191;;;;;;;;4835:7;4791:191;;;;;;4870:12;4791:191;;;;;;4919:16;:14;:16::i;:::-;4791:191;;;;;;4967:4;4791:191;;;;;;;4762:26;;;;-1:-1:-1;4762:26:44;;;:17;:26;;;;;;;:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4998:72;5013:7;4762:26;5038:16;:14;:16::i;:::-;4998:72;;;11991:42:66;12060:15;;;12042:34;;12112:15;;;12107:2;12092:18;;12085:43;12176:18;12164:31;;;12144:18;;;12137:59;12232:15;;;12227:2;12212:18;;12205:43;11968:3;11953:19;4998:72:44;;;;;;;4632:445;;;:::o;5342:209::-;5428:26;;;;;;;:17;:26;;;;;;;;;:42;;:60;;;;;;;;;;;;;;;;;;5503:41;;12427:74:66;;;12517:18;;;12510:50;5503:41:44;;12400:18:66;5503:41:44;;;;;;;5342:209;;:::o;10093:192::-;10258:20;;10214:26;;;10172:4;10214:26;;;:17;:26;;;;;10258:20;10214:41;;10172:4;;10214:64;;10258:20;;;;;10214:41;;;;;:64;:::i;:::-;10195:83;;:16;:14;:16::i;:::-;:83;;10093:192;-1:-1:-1;;10093:192:44:o;2143:186:28:-;2275:11;;;;;;;2267:55;;;;;;;12773:2:66;2267:55:28;;;12755:21:66;12812:2;12792:18;;;12785:30;12851:33;12831:18;;;12824:61;12902:18;;2267:55:28;12571:355:66;2267:55:28;2143:186::o;815:203:10:-;942:68;;;13143:42:66;13212:15;;;942:68:10;;;13194:34:66;13264:15;;13244:18;;;13237:43;13296:18;;;;13289:34;;;942:68:10;;;;;;;;;;13106:18:66;;;;942:68:10;;;;;;;;;;965:27;942:68;;;915:96;;935:5;;915:19;:96::i;6297:240:46:-;6383:33;;;6375:59;;;;;;;13536:2:66;6375:59:46;;;13518:21:66;13575:2;13555:18;;;13548:30;13614:15;13594:18;;;13587:43;13647:18;;6375:59:46;13334:337:66;6375:59:46;6444:16;:38;;;;;;;;;;;;;;;;;;;6497:33;;6513:16;;;;6497:33;;-1:-1:-1;;6497:33:46;6297:240;:::o;3022:751:10:-;3441:23;3467:69;3495:4;3467:69;;;;;;;;;;;;;;;;;3475:5;3467:27;;;;:69;;;;;:::i;:::-;3550:17;;3441:95;;-1:-1:-1;3550:21:10;3546:221;;3690:10;3679:30;;;;;;;;;;;;:::i;:::-;3671:85;;;;;;;14128:2:66;3671:85:10;;;14110:21:66;14167:2;14147:18;;;14140:30;14206:34;14186:18;;;14179:62;14277:12;14257:18;;;14250:40;14307:19;;3671:85:10;13926:406:66;3573:193:11;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;:::-;3700:59;;3573:193;;;;;;:::o;4600:523::-;4727:12;4784:5;4759:21;:30;;4751:81;;;;;;;14539:2:66;4751:81:11;;;14521:21:66;14578:2;14558:18;;;14551:30;14617:34;14597:18;;;14590:62;14688:8;14668:18;;;14661:36;14714:19;;4751:81:11;14337:402:66;4751:81:11;1078:20;;4842:60;;;;;;;14946:2:66;4842:60:11;;;14928:21:66;14985:2;14965:18;;;14958:30;15024:31;15004:18;;;14997:59;15073:18;;4842:60:11;14744:353:66;4842:60:11;4973:12;4987:23;5014:6;:11;;5034:5;5042:4;5014:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:11:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:11;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7363:429;7764:12;7757:20;;;;;;;;;;;:::i;245:180:66:-;304:6;357:2;345:9;336:7;332:23;328:32;325:52;;;373:1;370;363:12;325:52;-1:-1:-1;396:23:66;;245:180;-1:-1:-1;245:180:66:o;612:171::-;679:20;;739:18;728:30;;718:41;;708:69;;773:1;770;763:12;708:69;612:171;;;:::o;788:184::-;846:6;899:2;887:9;878:7;874:23;870:32;867:52;;;915:1;912;905:12;867:52;938:28;956:9;938:28;:::i;977:196::-;1045:20;;1105:42;1094:54;;1084:65;;1074:93;;1163:1;1160;1153:12;1178:334;1255:6;1263;1271;1324:2;1312:9;1303:7;1299:23;1295:32;1292:52;;;1340:1;1337;1330:12;1292:52;1363:29;1382:9;1363:29;:::i;:::-;1353:39;;1411:38;1445:2;1434:9;1430:18;1411:38;:::i;:::-;1401:48;;1468:38;1502:2;1491:9;1487:18;1468:38;:::i;:::-;1458:48;;1178:334;;;;;:::o;1517:118::-;1603:5;1596:13;1589:21;1582:5;1579:32;1569:60;;1625:1;1622;1615:12;1569:60;1517:118;:::o;1640:315::-;1705:6;1713;1766:2;1754:9;1745:7;1741:23;1737:32;1734:52;;;1782:1;1779;1772:12;1734:52;1805:29;1824:9;1805:29;:::i;:::-;1795:39;;1884:2;1873:9;1869:18;1856:32;1897:28;1919:5;1897:28;:::i;:::-;1944:5;1934:15;;;1640:315;;;;;:::o;1960:186::-;2019:6;2072:2;2060:9;2051:7;2047:23;2043:32;2040:52;;;2088:1;2085;2078:12;2040:52;2111:29;2130:9;2111:29;:::i;2343:350::-;2410:6;2418;2471:2;2459:9;2450:7;2446:23;2442:32;2439:52;;;2487:1;2484;2477:12;2439:52;2510:29;2529:9;2510:29;:::i;:::-;2500:39;;2589:2;2578:9;2574:18;2561:32;2633:10;2626:5;2622:22;2615:5;2612:33;2602:61;;2659:1;2656;2649:12;2903:547;3004:6;3012;3020;3028;3036;3044;3097:3;3085:9;3076:7;3072:23;3068:33;3065:53;;;3114:1;3111;3104:12;3065:53;3137:29;3156:9;3137:29;:::i;:::-;3127:39;;3185:38;3219:2;3208:9;3204:18;3185:38;:::i;:::-;3175:48;;3270:2;3259:9;3255:18;3242:32;3232:42;;3293:37;3326:2;3315:9;3311:18;3293:37;:::i;:::-;3283:47;;3349:38;3382:3;3371:9;3367:19;3349:38;:::i;:::-;3339:48;;3406:38;3439:3;3428:9;3424:19;3406:38;:::i;:::-;3396:48;;2903:547;;;;;;;;:::o;3963:184::-;4033:6;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;-1:-1:-1;4125:16:66;;3963:184;-1:-1:-1;3963:184:66:o;5857:::-;5909:77;5906:1;5899:88;6006:4;6003:1;5996:15;6030:4;6027:1;6020:15;6046:258;6118:1;6128:113;6142:6;6139:1;6136:13;6128:113;;;6218:11;;;6212:18;6199:11;;;6192:39;6164:2;6157:10;6128:113;;;6259:6;6256:1;6253:13;6250:48;;;-1:-1:-1;;6294:1:66;6276:16;;6269:27;6046:258::o;6309:942::-;6388:6;6441:2;6429:9;6420:7;6416:23;6412:32;6409:52;;;6457:1;6454;6447:12;6409:52;6490:9;6484:16;6519:18;6560:2;6552:6;6549:14;6546:34;;;6576:1;6573;6566:12;6546:34;6614:6;6603:9;6599:22;6589:32;;6659:7;6652:4;6648:2;6644:13;6640:27;6630:55;;6681:1;6678;6671:12;6630:55;6710:2;6704:9;6732:2;6728;6725:10;6722:36;;;6738:18;;:::i;:::-;6872:2;6866:9;6934:4;6926:13;;6777:66;6922:22;;;6946:2;6918:31;6914:40;6902:53;;;6970:18;;;6990:22;;;6967:46;6964:72;;;7016:18;;:::i;:::-;7056:10;7052:2;7045:22;7091:2;7083:6;7076:18;7131:7;7126:2;7121;7117;7113:11;7109:20;7106:33;7103:53;;;7152:1;7149;7142:12;7103:53;7165:55;7217:2;7212;7204:6;7200:15;7195:2;7191;7187:11;7165:55;:::i;8993:184::-;9045:77;9042:1;9035:88;9142:4;9139:1;9132:15;9166:4;9163:1;9156:15;9182:229;9221:4;9250:18;9318:10;;;;9288;;9340:12;;;9337:38;;;9355:18;;:::i;:::-;9392:13;;9182:229;-1:-1:-1;;;9182:229:66:o;9416:236::-;9455:3;9483:18;9528:2;9525:1;9521:10;9558:2;9555:1;9551:10;9589:3;9585:2;9581:12;9576:3;9573:21;9570:47;;;9597:18;;:::i;:::-;9633:13;;9416:236;-1:-1:-1;;;;9416:236:66:o;11353:128::-;11393:3;11424:1;11420:6;11417:1;11414:13;11411:39;;;11430:18;;:::i;:::-;-1:-1:-1;11466:9:66;;11353:128::o;11486:261::-;11526:3;11554:42;11623:2;11620:1;11616:10;11653:2;11650:1;11646:10;11684:3;11680:2;11676:12;11671:3;11668:21;11665:47;;;11692:18;;:::i;13676:245::-;13743:6;13796:2;13784:9;13775:7;13771:23;13767:32;13764:52;;;13812:1;13809;13802:12;13764:52;13844:9;13838:16;13863:28;13885:5;13863:28;:::i;15102:274::-;15231:3;15269:6;15263:13;15285:53;15331:6;15326:3;15319:4;15311:6;15307:17;15285:53;:::i;:::-;15354:16;;;;;15102:274;-1:-1:-1;;15102:274:66:o;15381:442::-;15530:2;15519:9;15512:21;15493:4;15562:6;15556:13;15605:6;15600:2;15589:9;15585:18;15578:34;15621:66;15680:6;15675:2;15664:9;15660:18;15655:2;15647:6;15643:15;15621:66;:::i;:::-;15739:2;15727:15;15744:66;15723:88;15708:104;;;;15814:2;15704:113;;15381:442;-1:-1:-1;;15381:442:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "1669800",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "bridgeTokens(address,uint32)": "infinite",
                                "canBridge(address)": "infinite",
                                "chainId()": "2318",
                                "crossDomainAdmin()": "2358",
                                "deposit(address,address,uint256,uint64,uint64,uint64)": "infinite",
                                "getCurrentTime()": "infinite",
                                "isWhitelistToken(address)": "2636",
                                "l1Weth()": "2326",
                                "l2GatewayRouter()": "2369",
                                "minimumBridgingDelay()": "2402",
                                "numberOfDeposits()": "2362",
                                "setCrossDomainAdmin(address)": "28119",
                                "setCurrentTime(uint256)": "infinite",
                                "setEnableDeposits(address,bool)": "28451",
                                "setMinimumBridgingDelay(uint64)": "27956",
                                "timerAddress()": "2348",
                                "whitelistToken(address,address,address)": "infinite",
                                "whitelistedTokens(address)": "4823"
                            },
                            "internal": {
                                "_setCrossDomainAdmin(address)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "bridgeTokens(address,uint32)": "9bfd2cdc",
                            "canBridge(address)": "63635fd9",
                            "chainId()": "9a8a0592",
                            "crossDomainAdmin()": "5285e058",
                            "deposit(address,address,uint256,uint64,uint64,uint64)": "c2d9dca9",
                            "getCurrentTime()": "29cb924d",
                            "isWhitelistToken(address)": "fbb9fcf7",
                            "l1Weth()": "146bf4b1",
                            "l2GatewayRouter()": "c8356859",
                            "minimumBridgingDelay()": "b2d6f4d4",
                            "numberOfDeposits()": "a1244c67",
                            "setCrossDomainAdmin(address)": "de7eba78",
                            "setCurrentTime(uint256)": "22f8e566",
                            "setEnableDeposits(address,bool)": "563c7f60",
                            "setMinimumBridgingDelay(uint64)": "2ec35b31",
                            "timerAddress()": "1c39c38d",
                            "whitelistToken(address,address,address)": "4dedca28",
                            "whitelistedTokens(address)": "daf9c210"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l2GatewayRouter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_crossDomainAdmin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_minimumBridgingDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_l1Weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"timerAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"DepositsEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"FundsDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"SentCrossDomainMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"SetMinimumBridgingDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetXDomainAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numberOfTokensBridged\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1Gas\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"TokensBridged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"name\":\"WhitelistToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"l1Gas\",\"type\":\"uint32\"}],\"name\":\"bridgeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"canBridge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"crossDomainAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"isWhitelistToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Weth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2GatewayRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumBridgingDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCrossDomainAdmin\",\"type\":\"address\"}],\"name\":\"setCrossDomainAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"setEnableDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"setMinimumBridgingDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l1BridgePool\",\"type\":\"address\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l1BridgePool\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Uses AVM cross-domain-enabled logic for access control.\",\"kind\":\"dev\",\"methods\":{\"bridgeTokens(address,uint32)\":{\"details\":\"The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam      on L1 as the finalization of a L2->L1 tx is quite expensive.\",\"params\":{\"l1Gas\":\"Unused by Arbitrum, but included for potential forward compatibility considerations.\",\"l2Token\":\"L2 token to relay over the canonical bridge.\"}},\"canBridge(address)\":{\"details\":\"This function is also public for caller convenience.\",\"params\":{\"l2Token\":\"L2 token to check bridging status.\"},\"returns\":{\"_0\":\"true if token is whitelised and enough time has elapsed since the previous bridge.\"}},\"constructor\":{\"params\":{\"_chainId\":\"L2 Chain identifier this deposit box is deployed on.\",\"_crossDomainAdmin\":\"Address of the L1 contract that can call admin functions on this contract from L1.\",\"_l1Weth\":\"Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\",\"_l2GatewayRouter\":\"Address of the Arbitrum L2 token gateway router for sending tokens from L2->L1.\",\"_minimumBridgingDelay\":\"Minimum second that must elapse between L2->L1 token transfer to prevent dos.\",\"timerAddress\":\"Timer used to synchronize contract time in testing. Set to 0x000... in production.\"}},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"details\":\"Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.\",\"params\":{\"amount\":\"How many L2 tokens should be deposited.\",\"instantRelayFeePct\":\"Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\",\"l1Recipient\":\"L1 address that should receive the tokens.\",\"l2Token\":\"L2 token to deposit.\",\"quoteTimestamp\":\"Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\",\"slowRelayFeePct\":\"Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current Testable timestamp.\"}},\"isWhitelistToken(address)\":{\"details\":\"Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.\",\"params\":{\"l2Token\":\"L2 token to check against the whitelist.\"},\"returns\":{\"_0\":\"true if token is whitelised.\"}},\"setCrossDomainAdmin(address)\":{\"details\":\"This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which is expected to be the Arbitrum_Messenger.Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\",\"params\":{\"newCrossDomainAdmin\":\"address of the new L1 admin contract.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set current Testable time to.\"}},\"setEnableDeposits(address,bool)\":{\"details\":\"Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\",\"params\":{\"depositsEnabled\":\"bool to set if the deposit box should accept/reject deposits.\",\"l2Token\":\"address of L2 token to enable/disable deposits for.\"}},\"setMinimumBridgingDelay(uint64)\":{\"details\":\"Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\",\"params\":{\"newMinimumBridgingDelay\":\"the new minimum delay.\"}},\"whitelistToken(address,address,address)\":{\"details\":\"Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\",\"params\":{\"l1BridgePool\":\"Address of the L1 withdrawal pool linked to this L2+L1 token.\",\"l1Token\":\"Address of the canonical L1 token. This is the token users will receive on Ethereum.\",\"l2Token\":\"Address of the L2 token representation. This is the token users would deposit on Arbitrum.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"bridgeTokens(address,uint32)\":{\"notice\":\"Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical      token bridge, to the L1 Withdraw box.\"},\"canBridge(address)\":{\"notice\":\"Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\"},\"constructor\":{\"notice\":\"Construct the Arbitrum Bridge Deposit Box\"},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"notice\":\"Called by L2 user to bridge funds between L2 and L1.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp.\"},\"isWhitelistToken(address)\":{\"notice\":\"Checks if a given L2 token is whitelisted.\"},\"setCrossDomainAdmin(address)\":{\"notice\":\"Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"},\"setEnableDeposits(address,bool)\":{\"notice\":\"L1 owner can enable/disable deposits for a whitelisted token.\"},\"setMinimumBridgingDelay(uint64)\":{\"notice\":\"Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\"},\"whitelistToken(address,address,address)\":{\"notice\":\"Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\"}},\"notice\":\"AVM specific bridge deposit box.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol\":\"AVM_BridgeDepositBox\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        // solhint-disable-next-line max-line-length\\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n    }\\n\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            uint256 newAllowance = oldAllowance - value;\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        if (returndata.length > 0) { // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"},\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Testable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Timer.sol\\\";\\n\\n/**\\n * @title Base class that provides time overrides, but only if being run in test mode.\\n */\\nabstract contract Testable {\\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\\n    // Note: this variable should be set on construction and never modified.\\n    address public timerAddress;\\n\\n    /**\\n     * @notice Constructs the Testable contract. Called by child contracts.\\n     * @param _timerAddress Contract that stores the current time in a testing environment.\\n     * Must be set to 0x0 for production environments that use live time.\\n     */\\n    constructor(address _timerAddress) {\\n        timerAddress = _timerAddress;\\n    }\\n\\n    /**\\n     * @notice Reverts if not running in test mode.\\n     */\\n    modifier onlyIfTest {\\n        require(timerAddress != address(0x0));\\n        _;\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set current Testable time to.\\n     */\\n    function setCurrentTime(uint256 time) external onlyIfTest {\\n        Timer(timerAddress).setCurrentTime(time);\\n    }\\n\\n    /**\\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\\n     * Otherwise, it will return the block timestamp.\\n     * @return uint for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view virtual returns (uint256) {\\n        if (timerAddress != address(0x0)) {\\n            return Timer(timerAddress).getCurrentTime();\\n        } else {\\n            return block.timestamp; // solhint-disable-line not-rely-on-time\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"},\"contracts/external/avm/AVM_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l2/L2CrossDomainEnabled.sol\\n// with a change to the solidity version.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./interfaces/ArbSys.sol\\\";\\n\\nabstract contract AVM_CrossDomainEnabled {\\n    event SentCrossDomainMessage(address indexed from, address indexed to, uint256 indexed id, bytes data);\\n\\n    modifier onlyFromCrossDomainAccount(address l1Counterpart) {\\n        require(msg.sender == applyL1ToL2Alias(l1Counterpart), \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n\\n    uint160 constant offset = uint160(0x1111000000000000000000000000000000001111);\\n\\n    // l1 addresses are transformed during l1->l2 calls. See https://developer.offchainlabs.com/docs/l1_l2_messages#address-aliasing for more information.\\n    function applyL1ToL2Alias(address l1Address) internal pure returns (address l2Address) {\\n        l2Address = address(uint160(l1Address) + offset);\\n    }\\n\\n    // Sends a message to L1 via the ArbSys contract. See https://developer.offchainlabs.com/docs/arbsys.\\n    // After the Arbitrum chain advances some set amount of time, ArbOS gathers all outgoing messages, Merklizes them,\\n    // and publishes the root as an OutboxEntry in the chain's outbox. Note that this happens \\\"automatically\\\";\\n    // i.e., it requires no additional action from the user. After the Outbox entry is published on the L1 chain,\\n    // the user (or anybody) can compute the Merkle proof of inclusion of their outgoing message. Anytime after the\\n    // dispute window passes (~7 days), any user can execute the L1 message by calling Outbox.executeTransaction;\\n    // if it reverts, it can be re-executed any number of times and with no upper time-bound.\\n    // To read more about the L2 --> L1 lifecycle, see: https://developer.offchainlabs.com/docs/l1_l2_messages#explanation.\\n    function sendCrossDomainMessage(\\n        address user,\\n        address to,\\n        bytes memory data\\n    ) internal returns (uint256) {\\n        // note: this method doesn't support sending ether to L1 together with a call\\n        uint256 id = ArbSys(address(100)).sendTxToL1(to, data);\\n\\n        emit SentCrossDomainMessage(user, to, id, data);\\n\\n        return id;\\n    }\\n}\\n\",\"keccak256\":\"0xd33f85bfbe0d9c941e9cba14a8952e4a5d97a199330501f1c95549e08b822b88\"},\"contracts/external/avm/interfaces/ArbSys.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/54a2109a97c5b1504824c6317d358e2d2733b5a3/contracts/arbitrum/ArbSys.sol\\n// with changes only to the solidity version and comments.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Precompiled contract that exists in every Arbitrum chain at address(100),\\n * 0x0000000000000000000000000000000000000064. Exposes a variety of system-level functionality. ArbSys provides\\n * systems functionality useful to some Arbitrum contracts. Any contract running on an Arbitrum Chain can call the\\n * chain's ArbSys.\\n */\\ninterface ArbSys {\\n    /**\\n     * @notice Get internal version number identifying an ArbOS build\\n     * @return version number as int\\n     */\\n    function arbOSVersion() external pure returns (uint256);\\n\\n    function arbChainID() external view returns (uint256);\\n\\n    /**\\n     * @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)\\n     * @return block number as int\\n     */\\n    function arbBlockNumber() external view returns (uint256);\\n\\n    /**\\n     * @notice Send given amount of Eth to dest from sender.\\n     * This is a convenience function, which is equivalent to calling sendTxToL1 with empty calldataForL1.\\n     * @param destination recipient address on L1\\n     * @return unique identifier for this L2-to-L1 transaction.\\n     */\\n    function withdrawEth(address destination) external payable returns (uint256);\\n\\n    /**\\n     * @notice Send a transaction to L1\\n     * @param destination recipient address on L1\\n     * @param calldataForL1 (optional) calldata for L1 contract call\\n     * @return a unique identifier for this L2-to-L1 transaction.\\n     */\\n    function sendTxToL1(address destination, bytes calldata calldataForL1) external payable returns (uint256);\\n\\n    /**\\n     * @notice get the number of transactions issued by the given external account or the account sequence number of the given contract\\n     * @param account target account\\n     * @return the number of transactions issued by the given external account or the account sequence number of the given contract\\n     */\\n    function getTransactionCount(address account) external view returns (uint256);\\n\\n    /**\\n     * @notice get the value of target L2 storage slot\\n     * This function is only callable from address 0 to prevent contracts from being able to call it\\n     * @param account target account\\n     * @param index target index of storage slot\\n     * @return stotage value for the given account at the given index\\n     */\\n    function getStorageAt(address account, uint256 index) external view returns (uint256);\\n\\n    /**\\n     * @notice check if current call is coming from l1\\n     * @return true if the caller of this was called directly from L1\\n     */\\n    function isTopLevelCall() external view returns (bool);\\n\\n    event EthWithdrawal(address indexed destAddr, uint256 amount);\\n\\n    event L2ToL1Transaction(\\n        address caller,\\n        address indexed destination,\\n        uint256 indexed uniqueId,\\n        uint256 indexed batchNumber,\\n        uint256 indexInBatch,\\n        uint256 arbBlockNum,\\n        uint256 ethBlockNum,\\n        uint256 timestamp,\\n        uint256 callvalue,\\n        bytes data\\n    );\\n}\\n\",\"keccak256\":\"0xb416d85bd67893bf55713735f4481a1eb9ebe6317f9fa089ae1cbede73258670\"},\"contracts/insured-bridge/BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../common/implementation/Testable.sol\\\";\\nimport \\\"../common/implementation/Lockable.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface TokenLike {\\n    function balanceOf(address guy) external returns (uint256 wad);\\n}\\n\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 wad) external;\\n}\\n\\n/**\\n * @title OVM Bridge Deposit Box.\\n * @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\\n */\\n\\nabstract contract BridgeDepositBox is Testable, Lockable {\\n    using SafeERC20 for IERC20;\\n    /*************************************\\n     *  OVM DEPOSIT BOX DATA STRUCTURES  *\\n     *************************************/\\n\\n    // ChainID of the L2 this deposit box is deployed on.\\n    uint256 public chainId;\\n\\n    // Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.\\n    address public l1Weth;\\n\\n    // Track the total number of deposits. Used as a unique identifier for bridged transfers.\\n    uint256 public numberOfDeposits;\\n\\n    struct L2TokenRelationships {\\n        address l1Token;\\n        address l1BridgePool;\\n        uint64 lastBridgeTime;\\n        bool depositsEnabled;\\n    }\\n\\n    // Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token\\n    // type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.\\n    mapping(address => L2TokenRelationships) public whitelistedTokens;\\n\\n    // Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.\\n    uint64 public minimumBridgingDelay;\\n\\n    /****************************************\\n     *                EVENTS                *\\n     ****************************************/\\n\\n    event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);\\n    event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);\\n    event DepositsEnabled(address l2Token, bool depositsEnabled);\\n    event FundsDeposited(\\n        uint256 chainId,\\n        uint256 depositId,\\n        address l1Recipient,\\n        address l2Sender,\\n        address l1Token,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    );\\n    event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);\\n\\n    /****************************************\\n     *               MODIFIERS              *\\n     ****************************************/\\n\\n    modifier onlyIfDepositsEnabled(address l2Token) {\\n        require(whitelistedTokens[l2Token].depositsEnabled, \\\"Contract is disabled\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the Bridge Deposit Box\\n     * @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\\n     * @param _chainId Chain identifier for the Bridge deposit box.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) Testable(timerAddress) {\\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\\n        chainId = _chainId;\\n        l1Weth = _l1Weth;\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {\\n        minimumBridgingDelay = newMinimumBridgingDelay;\\n        emit SetMinimumBridgingDelay(minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function _whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) internal {\\n        whitelistedTokens[l2Token] = L2TokenRelationships({\\n            l1Token: l1Token,\\n            l1BridgePool: l1BridgePool,\\n            lastBridgeTime: uint64(getCurrentTime()),\\n            depositsEnabled: true\\n        });\\n\\n        emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {\\n        whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;\\n        emit DepositsEnabled(l2Token, depositsEnabled);\\n    }\\n\\n    function bridgeTokens(address l2Token, uint32 l2Gas) public virtual;\\n\\n    /**************************************\\n     *         DEPOSITOR FUNCTIONS        *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by L2 user to bridge funds between L2 and L1.\\n     * @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\\n     * @dev The caller must first approve this contract to spend `amount` of `l2Token`.\\n     * @param l1Recipient L1 address that should receive the tokens.\\n     * @param l2Token L2 token to deposit.\\n     * @param amount How many L2 tokens should be deposited.\\n     * @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\\n     * @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\\n     * @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\\n     *    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\\n     */\\n    function deposit(\\n        address l1Recipient,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    ) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {\\n        require(isWhitelistToken(l2Token), \\\"deposit token not whitelisted\\\");\\n        // We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.\\n        // The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.\\n        require(slowRelayFeePct <= 0.25e18, \\\"slowRelayFeePct must be <= 25%\\\");\\n        require(instantRelayFeePct <= 0.25e18, \\\"instantRelayFeePct must be <= 25%\\\");\\n\\n        // Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp\\n        // corresponds to the L1 timestamp of the last confirmed L1 \\u21d2 L2 transaction. The quoteTime must be within 10\\n        // mins of the current time to allow for this variance.\\n        // Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result\\n        // in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.\\n        // Consider requiring `quoteTimestamp >= 10 minutes`.\\n        require(\\n            getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,\\n            \\\"deposit mined after deadline\\\"\\n        );\\n        // If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user\\n        // is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.\\n        if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {\\n            require(msg.value == amount, \\\"msg.value must match amount\\\");\\n            WETH9Like(address(l2Token)).deposit{ value: msg.value }();\\n        }\\n        // Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.\\n        // Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In\\n        // this case the msg.value will be set to 0, indicating a \\\"normal\\\" ERC20 bridging action.\\n        else IERC20(l2Token).safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit FundsDeposited(\\n            chainId,\\n            numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).\\n            l1Recipient,\\n            msg.sender,\\n            whitelistedTokens[l2Token].l1Token,\\n            l2Token,\\n            amount,\\n            slowRelayFeePct,\\n            instantRelayFeePct,\\n            quoteTimestamp\\n        );\\n\\n        numberOfDeposits += 1;\\n    }\\n\\n    /**************************************\\n     *           VIEW FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Checks if a given L2 token is whitelisted.\\n     * @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\\n     * the token has been whitelisted.\\n     * @param l2Token L2 token to check against the whitelist.\\n     * @return true if token is whitelised.\\n     */\\n    function isWhitelistToken(address l2Token) public view returns (bool) {\\n        return whitelistedTokens[l2Token].lastBridgeTime != 0;\\n    }\\n\\n    function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {\\n        return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;\\n    }\\n\\n    /**\\n     * @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\\n     * balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\\n     * and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\\n     * @dev This function is also public for caller convenience.\\n     * @param l2Token L2 token to check bridging status.\\n     * @return true if token is whitelised and enough time has elapsed since the previous bridge.\\n     */\\n    function canBridge(address l2Token) public view returns (bool) {\\n        return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);\\n    }\\n}\\n\",\"keccak256\":\"0x4ee97e2948d55ffd8a44769e452ee5e8de4fcb073388aef12a4c4e53bc99af21\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../BridgeDepositBox.sol\\\";\\nimport \\\"../../external/avm/AVM_CrossDomainEnabled.sol\\\";\\n\\ninterface StandardBridgeLike {\\n    function outboundTransfer(\\n        address _l1Token,\\n        address _to,\\n        uint256 _amount,\\n        bytes calldata _data\\n    ) external payable returns (bytes memory);\\n}\\n\\n/**\\n * @notice AVM specific bridge deposit box.\\n * @dev Uses AVM cross-domain-enabled logic for access control.\\n */\\n\\ncontract AVM_BridgeDepositBox is BridgeDepositBox, AVM_CrossDomainEnabled {\\n    // Address of the L1 contract that acts as the owner of this Bridge deposit box.\\n    address public crossDomainAdmin;\\n\\n    // Address of the Arbitrum L2 token gateway.\\n    address public l2GatewayRouter;\\n\\n    event SetXDomainAdmin(address indexed newAdmin);\\n\\n    /**\\n     * @notice Construct the Arbitrum Bridge Deposit Box\\n     * @param _l2GatewayRouter Address of the Arbitrum L2 token gateway router for sending tokens from L2->L1.\\n     * @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\\n     * @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\\n     * @param _chainId L2 Chain identifier this deposit box is deployed on.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        address _l2GatewayRouter,\\n        address _crossDomainAdmin,\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) BridgeDepositBox(_minimumBridgingDelay, _chainId, _l1Weth, timerAddress) {\\n        l2GatewayRouter = _l2GatewayRouter;\\n        _setCrossDomainAdmin(_crossDomainAdmin);\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\\n     * @dev This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which\\n     * is expected to be the Arbitrum_Messenger.\\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\\n     * @param newCrossDomainAdmin address of the new L1 admin contract.\\n     */\\n    function setCrossDomainAdmin(address newCrossDomainAdmin) public onlyFromCrossDomainAccount(crossDomainAdmin) {\\n        _setCrossDomainAdmin(newCrossDomainAdmin);\\n    }\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function setMinimumBridgingDelay(uint64 newMinimumBridgingDelay)\\n        public\\n        onlyFromCrossDomainAccount(crossDomainAdmin)\\n    {\\n        _setMinimumBridgingDelay(newMinimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on Arbitrum.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) public onlyFromCrossDomainAccount(crossDomainAdmin) {\\n        _whitelistToken(l1Token, l2Token, l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function setEnableDeposits(address l2Token, bool depositsEnabled)\\n        public\\n        onlyFromCrossDomainAccount(crossDomainAdmin)\\n    {\\n        _setEnableDeposits(l2Token, depositsEnabled);\\n    }\\n\\n    /**************************************\\n     *          RELAYER FUNCTIONS         *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\\n     *      token bridge, to the L1 Withdraw box.\\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\\n     * @param l2Token L2 token to relay over the canonical bridge.\\n     * @param l1Gas Unused by Arbitrum, but included for potential forward compatibility considerations.\\n     */\\n    function bridgeTokens(address l2Token, uint32 l1Gas) public override nonReentrant() {\\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\\n        require(bridgeDepositBoxBalance > 0, \\\"can't bridge zero tokens\\\");\\n        require(canBridge(l2Token), \\\"non-whitelisted token or last bridge too recent\\\");\\n\\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\\n\\n        StandardBridgeLike(l2GatewayRouter).outboundTransfer(\\n            whitelistedTokens[l2Token].l1Token, // _l1Token. Address of the L1 token to bridge over.\\n            whitelistedTokens[l2Token].l1BridgePool, // _to. Withdraw, over the bridge, to the l1 withdraw contract.\\n            bridgeDepositBoxBalance, // _amount. Send the full balance of the deposit box to bridge.\\n            \\\"\\\" // _data. We don't need to send any data for the bridging action.\\n        );\\n\\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\\n    }\\n\\n    /**************************************\\n     *         INTERNAL FUNCTIONS         *\\n     **************************************/\\n\\n    function _setCrossDomainAdmin(address newCrossDomainAdmin) internal {\\n        require(newCrossDomainAdmin != address(0), \\\"Empty address\\\");\\n        crossDomainAdmin = newCrossDomainAdmin;\\n        emit SetXDomainAdmin(crossDomainAdmin);\\n    }\\n}\\n\",\"keccak256\":\"0x680e7402964f35df3b702beead56aa1f8da98e2283d78222b5a719ad9c7cfe15\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 5530,
                                "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                "label": "timerAddress",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 5381,
                                "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                "label": "_notEntered",
                                "offset": 20,
                                "slot": "0",
                                "type": "t_bool"
                            },
                            {
                                "astId": 8260,
                                "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                "label": "chainId",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8262,
                                "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                "label": "l1Weth",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_address"
                            },
                            {
                                "astId": 8264,
                                "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                "label": "numberOfDeposits",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8278,
                                "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                "label": "whitelistedTokens",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)"
                            },
                            {
                                "astId": 8280,
                                "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                "label": "minimumBridgingDelay",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_uint64"
                            },
                            {
                                "astId": 8700,
                                "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                "label": "crossDomainAdmin",
                                "offset": 8,
                                "slot": "5",
                                "type": "t_address"
                            },
                            {
                                "astId": 8702,
                                "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                "label": "l2GatewayRouter",
                                "offset": 0,
                                "slot": "6",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => struct BridgeDepositBox.L2TokenRelationships)",
                                "numberOfBytes": "32",
                                "value": "t_struct(L2TokenRelationships)8273_storage"
                            },
                            "t_struct(L2TokenRelationships)8273_storage": {
                                "encoding": "inplace",
                                "label": "struct BridgeDepositBox.L2TokenRelationships",
                                "members": [
                                    {
                                        "astId": 8266,
                                        "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                        "label": "l1Token",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8268,
                                        "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                        "label": "l1BridgePool",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8270,
                                        "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                        "label": "lastBridgeTime",
                                        "offset": 20,
                                        "slot": "1",
                                        "type": "t_uint64"
                                    },
                                    {
                                        "astId": 8272,
                                        "contract": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol:AVM_BridgeDepositBox",
                                        "label": "depositsEnabled",
                                        "offset": 28,
                                        "slot": "1",
                                        "type": "t_bool"
                                    }
                                ],
                                "numberOfBytes": "64"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            },
                            "t_uint64": {
                                "encoding": "inplace",
                                "label": "uint64",
                                "numberOfBytes": "8"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "bridgeTokens(address,uint32)": {
                                "notice": "Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical      token bridge, to the L1 Withdraw box."
                            },
                            "canBridge(address)": {
                                "notice": "Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted)."
                            },
                            "constructor": {
                                "notice": "Construct the Arbitrum Bridge Deposit Box"
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "notice": "Called by L2 user to bridge funds between L2 and L1."
                            },
                            "getCurrentTime()": {
                                "notice": "Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp."
                            },
                            "isWhitelistToken(address)": {
                                "notice": "Checks if a given L2 token is whitelisted."
                            },
                            "setCrossDomainAdmin(address)": {
                                "notice": "Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box."
                            },
                            "setCurrentTime(uint256)": {
                                "notice": "Sets the current time."
                            },
                            "setEnableDeposits(address,bool)": {
                                "notice": "L1 owner can enable/disable deposits for a whitelisted token."
                            },
                            "setMinimumBridgingDelay(uint64)": {
                                "notice": "Changes the minimum time in seconds that must elapse between withdraws from L2->L1."
                            },
                            "whitelistToken(address,address,address)": {
                                "notice": "Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging."
                            }
                        },
                        "notice": "AVM specific bridge deposit box.",
                        "version": 1
                    }
                },
                "StandardBridgeLike": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_to",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "_amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "_data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "outboundTransfer",
                            "outputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "outboundTransfer(address,address,uint256,bytes)": "7b3a3c8b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"outboundTransfer\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol\":\"StandardBridgeLike\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        // solhint-disable-next-line max-line-length\\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n    }\\n\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            uint256 newAllowance = oldAllowance - value;\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        if (returndata.length > 0) { // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"},\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Testable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Timer.sol\\\";\\n\\n/**\\n * @title Base class that provides time overrides, but only if being run in test mode.\\n */\\nabstract contract Testable {\\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\\n    // Note: this variable should be set on construction and never modified.\\n    address public timerAddress;\\n\\n    /**\\n     * @notice Constructs the Testable contract. Called by child contracts.\\n     * @param _timerAddress Contract that stores the current time in a testing environment.\\n     * Must be set to 0x0 for production environments that use live time.\\n     */\\n    constructor(address _timerAddress) {\\n        timerAddress = _timerAddress;\\n    }\\n\\n    /**\\n     * @notice Reverts if not running in test mode.\\n     */\\n    modifier onlyIfTest {\\n        require(timerAddress != address(0x0));\\n        _;\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set current Testable time to.\\n     */\\n    function setCurrentTime(uint256 time) external onlyIfTest {\\n        Timer(timerAddress).setCurrentTime(time);\\n    }\\n\\n    /**\\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\\n     * Otherwise, it will return the block timestamp.\\n     * @return uint for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view virtual returns (uint256) {\\n        if (timerAddress != address(0x0)) {\\n            return Timer(timerAddress).getCurrentTime();\\n        } else {\\n            return block.timestamp; // solhint-disable-line not-rely-on-time\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"},\"contracts/external/avm/AVM_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l2/L2CrossDomainEnabled.sol\\n// with a change to the solidity version.\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./interfaces/ArbSys.sol\\\";\\n\\nabstract contract AVM_CrossDomainEnabled {\\n    event SentCrossDomainMessage(address indexed from, address indexed to, uint256 indexed id, bytes data);\\n\\n    modifier onlyFromCrossDomainAccount(address l1Counterpart) {\\n        require(msg.sender == applyL1ToL2Alias(l1Counterpart), \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n\\n    uint160 constant offset = uint160(0x1111000000000000000000000000000000001111);\\n\\n    // l1 addresses are transformed during l1->l2 calls. See https://developer.offchainlabs.com/docs/l1_l2_messages#address-aliasing for more information.\\n    function applyL1ToL2Alias(address l1Address) internal pure returns (address l2Address) {\\n        l2Address = address(uint160(l1Address) + offset);\\n    }\\n\\n    // Sends a message to L1 via the ArbSys contract. See https://developer.offchainlabs.com/docs/arbsys.\\n    // After the Arbitrum chain advances some set amount of time, ArbOS gathers all outgoing messages, Merklizes them,\\n    // and publishes the root as an OutboxEntry in the chain's outbox. Note that this happens \\\"automatically\\\";\\n    // i.e., it requires no additional action from the user. After the Outbox entry is published on the L1 chain,\\n    // the user (or anybody) can compute the Merkle proof of inclusion of their outgoing message. Anytime after the\\n    // dispute window passes (~7 days), any user can execute the L1 message by calling Outbox.executeTransaction;\\n    // if it reverts, it can be re-executed any number of times and with no upper time-bound.\\n    // To read more about the L2 --> L1 lifecycle, see: https://developer.offchainlabs.com/docs/l1_l2_messages#explanation.\\n    function sendCrossDomainMessage(\\n        address user,\\n        address to,\\n        bytes memory data\\n    ) internal returns (uint256) {\\n        // note: this method doesn't support sending ether to L1 together with a call\\n        uint256 id = ArbSys(address(100)).sendTxToL1(to, data);\\n\\n        emit SentCrossDomainMessage(user, to, id, data);\\n\\n        return id;\\n    }\\n}\\n\",\"keccak256\":\"0xd33f85bfbe0d9c941e9cba14a8952e4a5d97a199330501f1c95549e08b822b88\"},\"contracts/external/avm/interfaces/ArbSys.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/54a2109a97c5b1504824c6317d358e2d2733b5a3/contracts/arbitrum/ArbSys.sol\\n// with changes only to the solidity version and comments.\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Precompiled contract that exists in every Arbitrum chain at address(100),\\n * 0x0000000000000000000000000000000000000064. Exposes a variety of system-level functionality. ArbSys provides\\n * systems functionality useful to some Arbitrum contracts. Any contract running on an Arbitrum Chain can call the\\n * chain's ArbSys.\\n */\\ninterface ArbSys {\\n    /**\\n     * @notice Get internal version number identifying an ArbOS build\\n     * @return version number as int\\n     */\\n    function arbOSVersion() external pure returns (uint256);\\n\\n    function arbChainID() external view returns (uint256);\\n\\n    /**\\n     * @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)\\n     * @return block number as int\\n     */\\n    function arbBlockNumber() external view returns (uint256);\\n\\n    /**\\n     * @notice Send given amount of Eth to dest from sender.\\n     * This is a convenience function, which is equivalent to calling sendTxToL1 with empty calldataForL1.\\n     * @param destination recipient address on L1\\n     * @return unique identifier for this L2-to-L1 transaction.\\n     */\\n    function withdrawEth(address destination) external payable returns (uint256);\\n\\n    /**\\n     * @notice Send a transaction to L1\\n     * @param destination recipient address on L1\\n     * @param calldataForL1 (optional) calldata for L1 contract call\\n     * @return a unique identifier for this L2-to-L1 transaction.\\n     */\\n    function sendTxToL1(address destination, bytes calldata calldataForL1) external payable returns (uint256);\\n\\n    /**\\n     * @notice get the number of transactions issued by the given external account or the account sequence number of the given contract\\n     * @param account target account\\n     * @return the number of transactions issued by the given external account or the account sequence number of the given contract\\n     */\\n    function getTransactionCount(address account) external view returns (uint256);\\n\\n    /**\\n     * @notice get the value of target L2 storage slot\\n     * This function is only callable from address 0 to prevent contracts from being able to call it\\n     * @param account target account\\n     * @param index target index of storage slot\\n     * @return stotage value for the given account at the given index\\n     */\\n    function getStorageAt(address account, uint256 index) external view returns (uint256);\\n\\n    /**\\n     * @notice check if current call is coming from l1\\n     * @return true if the caller of this was called directly from L1\\n     */\\n    function isTopLevelCall() external view returns (bool);\\n\\n    event EthWithdrawal(address indexed destAddr, uint256 amount);\\n\\n    event L2ToL1Transaction(\\n        address caller,\\n        address indexed destination,\\n        uint256 indexed uniqueId,\\n        uint256 indexed batchNumber,\\n        uint256 indexInBatch,\\n        uint256 arbBlockNum,\\n        uint256 ethBlockNum,\\n        uint256 timestamp,\\n        uint256 callvalue,\\n        bytes data\\n    );\\n}\\n\",\"keccak256\":\"0xb416d85bd67893bf55713735f4481a1eb9ebe6317f9fa089ae1cbede73258670\"},\"contracts/insured-bridge/BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../common/implementation/Testable.sol\\\";\\nimport \\\"../common/implementation/Lockable.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface TokenLike {\\n    function balanceOf(address guy) external returns (uint256 wad);\\n}\\n\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 wad) external;\\n}\\n\\n/**\\n * @title OVM Bridge Deposit Box.\\n * @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\\n */\\n\\nabstract contract BridgeDepositBox is Testable, Lockable {\\n    using SafeERC20 for IERC20;\\n    /*************************************\\n     *  OVM DEPOSIT BOX DATA STRUCTURES  *\\n     *************************************/\\n\\n    // ChainID of the L2 this deposit box is deployed on.\\n    uint256 public chainId;\\n\\n    // Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.\\n    address public l1Weth;\\n\\n    // Track the total number of deposits. Used as a unique identifier for bridged transfers.\\n    uint256 public numberOfDeposits;\\n\\n    struct L2TokenRelationships {\\n        address l1Token;\\n        address l1BridgePool;\\n        uint64 lastBridgeTime;\\n        bool depositsEnabled;\\n    }\\n\\n    // Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token\\n    // type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.\\n    mapping(address => L2TokenRelationships) public whitelistedTokens;\\n\\n    // Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.\\n    uint64 public minimumBridgingDelay;\\n\\n    /****************************************\\n     *                EVENTS                *\\n     ****************************************/\\n\\n    event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);\\n    event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);\\n    event DepositsEnabled(address l2Token, bool depositsEnabled);\\n    event FundsDeposited(\\n        uint256 chainId,\\n        uint256 depositId,\\n        address l1Recipient,\\n        address l2Sender,\\n        address l1Token,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    );\\n    event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);\\n\\n    /****************************************\\n     *               MODIFIERS              *\\n     ****************************************/\\n\\n    modifier onlyIfDepositsEnabled(address l2Token) {\\n        require(whitelistedTokens[l2Token].depositsEnabled, \\\"Contract is disabled\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the Bridge Deposit Box\\n     * @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\\n     * @param _chainId Chain identifier for the Bridge deposit box.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) Testable(timerAddress) {\\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\\n        chainId = _chainId;\\n        l1Weth = _l1Weth;\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {\\n        minimumBridgingDelay = newMinimumBridgingDelay;\\n        emit SetMinimumBridgingDelay(minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function _whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) internal {\\n        whitelistedTokens[l2Token] = L2TokenRelationships({\\n            l1Token: l1Token,\\n            l1BridgePool: l1BridgePool,\\n            lastBridgeTime: uint64(getCurrentTime()),\\n            depositsEnabled: true\\n        });\\n\\n        emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {\\n        whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;\\n        emit DepositsEnabled(l2Token, depositsEnabled);\\n    }\\n\\n    function bridgeTokens(address l2Token, uint32 l2Gas) public virtual;\\n\\n    /**************************************\\n     *         DEPOSITOR FUNCTIONS        *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by L2 user to bridge funds between L2 and L1.\\n     * @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\\n     * @dev The caller must first approve this contract to spend `amount` of `l2Token`.\\n     * @param l1Recipient L1 address that should receive the tokens.\\n     * @param l2Token L2 token to deposit.\\n     * @param amount How many L2 tokens should be deposited.\\n     * @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\\n     * @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\\n     * @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\\n     *    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\\n     */\\n    function deposit(\\n        address l1Recipient,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    ) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {\\n        require(isWhitelistToken(l2Token), \\\"deposit token not whitelisted\\\");\\n        // We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.\\n        // The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.\\n        require(slowRelayFeePct <= 0.25e18, \\\"slowRelayFeePct must be <= 25%\\\");\\n        require(instantRelayFeePct <= 0.25e18, \\\"instantRelayFeePct must be <= 25%\\\");\\n\\n        // Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp\\n        // corresponds to the L1 timestamp of the last confirmed L1 \\u21d2 L2 transaction. The quoteTime must be within 10\\n        // mins of the current time to allow for this variance.\\n        // Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result\\n        // in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.\\n        // Consider requiring `quoteTimestamp >= 10 minutes`.\\n        require(\\n            getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,\\n            \\\"deposit mined after deadline\\\"\\n        );\\n        // If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user\\n        // is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.\\n        if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {\\n            require(msg.value == amount, \\\"msg.value must match amount\\\");\\n            WETH9Like(address(l2Token)).deposit{ value: msg.value }();\\n        }\\n        // Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.\\n        // Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In\\n        // this case the msg.value will be set to 0, indicating a \\\"normal\\\" ERC20 bridging action.\\n        else IERC20(l2Token).safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit FundsDeposited(\\n            chainId,\\n            numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).\\n            l1Recipient,\\n            msg.sender,\\n            whitelistedTokens[l2Token].l1Token,\\n            l2Token,\\n            amount,\\n            slowRelayFeePct,\\n            instantRelayFeePct,\\n            quoteTimestamp\\n        );\\n\\n        numberOfDeposits += 1;\\n    }\\n\\n    /**************************************\\n     *           VIEW FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Checks if a given L2 token is whitelisted.\\n     * @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\\n     * the token has been whitelisted.\\n     * @param l2Token L2 token to check against the whitelist.\\n     * @return true if token is whitelised.\\n     */\\n    function isWhitelistToken(address l2Token) public view returns (bool) {\\n        return whitelistedTokens[l2Token].lastBridgeTime != 0;\\n    }\\n\\n    function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {\\n        return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;\\n    }\\n\\n    /**\\n     * @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\\n     * balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\\n     * and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\\n     * @dev This function is also public for caller convenience.\\n     * @param l2Token L2 token to check bridging status.\\n     * @return true if token is whitelised and enough time has elapsed since the previous bridge.\\n     */\\n    function canBridge(address l2Token) public view returns (bool) {\\n        return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);\\n    }\\n}\\n\",\"keccak256\":\"0x4ee97e2948d55ffd8a44769e452ee5e8de4fcb073388aef12a4c4e53bc99af21\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../BridgeDepositBox.sol\\\";\\nimport \\\"../../external/avm/AVM_CrossDomainEnabled.sol\\\";\\n\\ninterface StandardBridgeLike {\\n    function outboundTransfer(\\n        address _l1Token,\\n        address _to,\\n        uint256 _amount,\\n        bytes calldata _data\\n    ) external payable returns (bytes memory);\\n}\\n\\n/**\\n * @notice AVM specific bridge deposit box.\\n * @dev Uses AVM cross-domain-enabled logic for access control.\\n */\\n\\ncontract AVM_BridgeDepositBox is BridgeDepositBox, AVM_CrossDomainEnabled {\\n    // Address of the L1 contract that acts as the owner of this Bridge deposit box.\\n    address public crossDomainAdmin;\\n\\n    // Address of the Arbitrum L2 token gateway.\\n    address public l2GatewayRouter;\\n\\n    event SetXDomainAdmin(address indexed newAdmin);\\n\\n    /**\\n     * @notice Construct the Arbitrum Bridge Deposit Box\\n     * @param _l2GatewayRouter Address of the Arbitrum L2 token gateway router for sending tokens from L2->L1.\\n     * @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\\n     * @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\\n     * @param _chainId L2 Chain identifier this deposit box is deployed on.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        address _l2GatewayRouter,\\n        address _crossDomainAdmin,\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) BridgeDepositBox(_minimumBridgingDelay, _chainId, _l1Weth, timerAddress) {\\n        l2GatewayRouter = _l2GatewayRouter;\\n        _setCrossDomainAdmin(_crossDomainAdmin);\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\\n     * @dev This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which\\n     * is expected to be the Arbitrum_Messenger.\\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\\n     * @param newCrossDomainAdmin address of the new L1 admin contract.\\n     */\\n    function setCrossDomainAdmin(address newCrossDomainAdmin) public onlyFromCrossDomainAccount(crossDomainAdmin) {\\n        _setCrossDomainAdmin(newCrossDomainAdmin);\\n    }\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function setMinimumBridgingDelay(uint64 newMinimumBridgingDelay)\\n        public\\n        onlyFromCrossDomainAccount(crossDomainAdmin)\\n    {\\n        _setMinimumBridgingDelay(newMinimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on Arbitrum.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) public onlyFromCrossDomainAccount(crossDomainAdmin) {\\n        _whitelistToken(l1Token, l2Token, l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function setEnableDeposits(address l2Token, bool depositsEnabled)\\n        public\\n        onlyFromCrossDomainAccount(crossDomainAdmin)\\n    {\\n        _setEnableDeposits(l2Token, depositsEnabled);\\n    }\\n\\n    /**************************************\\n     *          RELAYER FUNCTIONS         *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\\n     *      token bridge, to the L1 Withdraw box.\\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\\n     * @param l2Token L2 token to relay over the canonical bridge.\\n     * @param l1Gas Unused by Arbitrum, but included for potential forward compatibility considerations.\\n     */\\n    function bridgeTokens(address l2Token, uint32 l1Gas) public override nonReentrant() {\\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\\n        require(bridgeDepositBoxBalance > 0, \\\"can't bridge zero tokens\\\");\\n        require(canBridge(l2Token), \\\"non-whitelisted token or last bridge too recent\\\");\\n\\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\\n\\n        StandardBridgeLike(l2GatewayRouter).outboundTransfer(\\n            whitelistedTokens[l2Token].l1Token, // _l1Token. Address of the L1 token to bridge over.\\n            whitelistedTokens[l2Token].l1BridgePool, // _to. Withdraw, over the bridge, to the l1 withdraw contract.\\n            bridgeDepositBoxBalance, // _amount. Send the full balance of the deposit box to bridge.\\n            \\\"\\\" // _data. We don't need to send any data for the bridging action.\\n        );\\n\\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\\n    }\\n\\n    /**************************************\\n     *         INTERNAL FUNCTIONS         *\\n     **************************************/\\n\\n    function _setCrossDomainAdmin(address newCrossDomainAdmin) internal {\\n        require(newCrossDomainAdmin != address(0), \\\"Empty address\\\");\\n        crossDomainAdmin = newCrossDomainAdmin;\\n        emit SetXDomainAdmin(crossDomainAdmin);\\n    }\\n}\\n\",\"keccak256\":\"0x680e7402964f35df3b702beead56aa1f8da98e2283d78222b5a719ad9c7cfe15\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol": {
                "Arbitrum_CrossDomainEnabled": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "inbox",
                            "outputs": [
                                {
                                    "internalType": "contract iArbitrum_Inbox",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "params": {
                                    "_inbox": "Contract that sends generalized messages to the Arbitrum chain."
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "inbox()": "fb0e722b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"inbox\",\"outputs\":[{\"internalType\":\"contract iArbitrum_Inbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_inbox\":\"Contract that sends generalized messages to the Arbitrum chain.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\":\"Arbitrum_CrossDomainEnabled\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"},\"contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":{\"content\":\"// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\\n// with changes only to the solidity version.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n\\n/*\\n * Copyright 2021, Offchain Labs, Inc.\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *    http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\npragma solidity ^0.8.0;\\n\\ninterface iArbitrum_Outbox {\\n    function l2ToL1Sender() external view returns (address);\\n}\\n\",\"keccak256\":\"0x346d5d3a1bcdb29ef40bebbf0ca78fe3063e14176c20c96ea7854cbb4762cbd8\",\"license\":\"Apache-2.0\"},\"contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol\\n// with a change to the solidity version.\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"../../external/avm/interfaces/iArbitrum_Outbox.sol\\\";\\n\\nabstract contract Arbitrum_CrossDomainEnabled {\\n    iArbitrum_Inbox public immutable inbox;\\n\\n    /**\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     */\\n    constructor(address _inbox) {\\n        inbox = iArbitrum_Inbox(_inbox);\\n    }\\n\\n    // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\\n    // This function will not apply aliassing to the `user` address on L2.\\n    // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the\\n    // inbox.\\n    function sendTxToL2NoAliassing(\\n        address target, // Address where transaction will initiate on L2.\\n        address user, // Address where excess gas is credited on L2.\\n        uint256 l1CallValue, // msg.value deposited to `user` on L2.\\n        uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this\\n        // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should\\n        // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`.\\n        uint256 maxGas, // Gas limit for immediate L2 execution attempt.\\n        uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt.\\n        bytes memory data // ABI encoded data to send to target.\\n    ) internal returns (uint256) {\\n        // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external\\n        // - address destAddr: destination L2 contract address\\n        // - uint256 l2CallValue: call value for retryable L2 message\\n        // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee\\n        // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2\\n        // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled\\n        // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution\\n        // - uint256 gasPriceBid: price bid for L2 execution\\n        // - bytes data: ABI encoded data of L2 message\\n        uint256 seqNum =\\n            inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }(\\n                target,\\n                0, // we always assume that l2CallValue = 0\\n                maxSubmissionCost,\\n                user,\\n                user,\\n                maxGas,\\n                gasPriceBid,\\n                data\\n            );\\n        return seqNum;\\n    }\\n\\n    // Copied mostly from: https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol#L31\\n    modifier onlyFromCrossDomainAccount(address l2Counterpart) {\\n        // a message coming from the counterpart gateway was executed by the bridge\\n        IBridge bridge = IBridge(inbox.bridge());\\n        require(msg.sender == address(bridge), \\\"NOT_FROM_BRIDGE\\\");\\n\\n        // and the outbox reports that the L2 address of the sender is the counterpart gateway\\n        address l2ToL1Sender = iArbitrum_Outbox(bridge.activeOutbox()).l2ToL1Sender();\\n        require(l2ToL1Sender == l2Counterpart, \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x8bfa42e9d6c7a927da893c0968213e2263c958414e727562b7e3a02397a962ce\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/avm/Arbitrum_Messenger.sol": {
                "Arbitrum_Messenger": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_inbox",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "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": true,
                                    "internalType": "uint256",
                                    "name": "seqNum",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "userToRefund",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "l1CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "gasLimit",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "gasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "RelayedMessage",
                            "type": "event"
                        },
                        {
                            "inputs": [],
                            "name": "inbox",
                            "outputs": [
                                {
                                    "internalType": "contract iArbitrum_Inbox",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "owner",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "target",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "userToRefund",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l1CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasLimit",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "message",
                                    "type": "bytes"
                                }
                            ],
                            "name": "relayMessage",
                            "outputs": [],
                            "stateMutability": "payable",
                            "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": "This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.This address will be the sender of any L1 --> L2 retryable tickets, so it should be set as the cross domain owner for L2 contracts that expect to receive cross domain messages.",
                        "kind": "dev",
                        "methods": {
                            "constructor": {
                                "params": {
                                    "_inbox": "Contract that sends generalized messages to the Arbitrum chain."
                                }
                            },
                            "owner()": {
                                "details": "Returns the address of the current owner."
                            },
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": {
                                "params": {
                                    "gasLimit": "The gasLimit for the receipt of the message on L2.",
                                    "gasPrice": "Gas price bid for L2 execution.",
                                    "l1CallValue": "Amount of ETH deposited to `target` contract on L2. Used to pay for L2 submission fee and l2CallValue. This will usually be > 0.",
                                    "maxSubmissionCost": ": Max gas deducted from user's L2 balance to cover base submission fee. This amount is proportional to the size of `data`.",
                                    "message": "The data to send to the target (usually calldata to a function with  `onlyFromCrossDomainAccount()`)",
                                    "target": "The intended recipient on L2.",
                                    "userToRefund": "User on L2 to refund extra fees to."
                                }
                            },
                            "renounceOwnership()": {
                                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
                            },
                            "transferOwnership(address)": {
                                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_655": {
                                    "entryPoint": null,
                                    "id": 655,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_8920": {
                                    "entryPoint": null,
                                    "id": 8920,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_9044": {
                                    "entryPoint": null,
                                    "id": 9044,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 130,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:306:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "95:209:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "141:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "150:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "153:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "143:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "143:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "143:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "116:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "125:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "112:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "112:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "137:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "108:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "108:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "105:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "166:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "185:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "179:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "179:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "170:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "258:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "267:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "270:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "260:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "260:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "260:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "217:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "228:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "243:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "248:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "239:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "239:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "252:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "235:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "235:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "224:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "224:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "214:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "214:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "207:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "207:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "204:70:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "283:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "293:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "283:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "61:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "72:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:290:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60a060405234801561001057600080fd5b5060405161098738038061098783398101604081905261002f91610082565b600080546001600160a01b031916339081178255604051839282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0316608052506100b2565b60006020828403121561009457600080fd5b81516001600160a01b03811681146100ab57600080fd5b9392505050565b6080516108b36100d46000396000818161010b01526104e601526108b36000f3fe60806040526004361061005a5760003560e01c80639e353c70116100435780639e353c70146100c6578063f2fde38b146100d9578063fb0e722b146100f957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b5061007461012d565b005b34801561008257600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100746100d4366004610604565b610222565b3480156100e557600080fd5b506100746100f436600461071b565b610330565b34801561010557600080fd5b5061009d7f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101aa565b60006102b4888888868989886104e1565b9050808873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe0546421195e3e65035cacdb8d655c6d557e249c01c601f2af8b56f7526bc03f8a8a8a8a8a8a60405161031e969594939291906107a8565b60405180910390a45050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101aa565b73ffffffffffffffffffffffffffffffffffffffff8116610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101aa565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631b871c8d888b60008a8d8e8c8c8c6040518a63ffffffff1660e01b815260040161054d9897969594939291906107fb565b6020604051808303818588803b15801561056657600080fd5b505af115801561057a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061059f9190610864565b9998505050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105d057600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080600080600060e0888a03121561061f57600080fd5b610628886105ac565b9650610636602089016105ac565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff8082111561066f57600080fd5b818a0191508a601f83011261068357600080fd5b813581811115610695576106956105d5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156106db576106db6105d5565b816040528281528d60208487010111156106f457600080fd5b82602086016020830137600060208483010152809550505050505092959891949750929550565b60006020828403121561072d57600080fd5b610736826105ac565b9392505050565b6000815180845260005b8181101561076357602081850181015186830182015201610747565b81811115610775576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015284604082015283606082015282608082015260c060a082015260006107ef60c083018461073d565b98975050505050505050565b600061010073ffffffffffffffffffffffffffffffffffffffff808c1684528a602085015289604085015280891660608501528088166080850152508560a08401528460c08401528060e08401526108558184018561073d565b9b9a5050505050505050505050565b60006020828403121561087657600080fd5b505191905056fea264697066735822122067a05ee682beb0e29191d2b642e00df777109f985a5369b0638c1b746842263864736f6c63430008090033",
                            "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x987 CODESIZE SUB DUP1 PUSH2 0x987 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x82 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD DUP4 SWAP3 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 MSTORE POP PUSH2 0xB2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x8B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x10B ADD MSTORE PUSH2 0x4E6 ADD MSTORE PUSH2 0x8B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E353C70 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x9E353C70 EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0xFB0E722B EQ PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x12D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH2 0xD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x222 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0xF4 CALLDATASIZE PUSH1 0x4 PUSH2 0x71B JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B4 DUP9 DUP9 DUP9 DUP7 DUP10 DUP10 DUP9 PUSH2 0x4E1 JUMP JUMPDEST SWAP1 POP DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xE0546421195E3E65035CACDB8D655C6D557E249C01C601F2AF8B56F7526BC03F DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x31E SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x454 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B871C8D DUP9 DUP12 PUSH1 0x0 DUP11 DUP14 DUP15 DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x54D SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x57A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x59F SWAP2 SWAP1 PUSH2 0x864 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x628 DUP9 PUSH2 0x5AC JUMP JUMPDEST SWAP7 POP PUSH2 0x636 PUSH1 0x20 DUP10 ADD PUSH2 0x5AC JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x695 JUMPI PUSH2 0x695 PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x6DB JUMPI PUSH2 0x6DB PUSH2 0x5D5 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP14 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x6F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x736 DUP3 PUSH2 0x5AC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x763 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x747 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x775 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP2 MSTORE DUP6 PUSH1 0x20 DUP3 ADD MSTORE DUP5 PUSH1 0x40 DUP3 ADD MSTORE DUP4 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x7EF PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x73D JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP13 AND DUP5 MSTORE DUP11 PUSH1 0x20 DUP6 ADD MSTORE DUP10 PUSH1 0x40 DUP6 ADD MSTORE DUP1 DUP10 AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 DUP9 AND PUSH1 0x80 DUP6 ADD MSTORE POP DUP6 PUSH1 0xA0 DUP5 ADD MSTORE DUP5 PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x855 DUP2 DUP5 ADD DUP6 PUSH2 0x73D JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH8 0xA05EE682BEB0E291 SWAP2 0xD2 0xB6 TIMESTAMP 0xE0 0xD 0xF7 PUSH24 0x109F985A5369B0638C1B746842263864736F6C6343000809 STOP CALLER ",
                            "sourceMap": "681:2334:48:-:0;;;1165:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;867:17:5;909:18;;-1:-1:-1;;;;;;909:18:5;665:10:12;909:18:5;;;;;942:43;;1221:6:48;;665:10:12;;942:43:5;;867:17;;942:43;-1:-1:-1;;;;;;578:31:47;;;-1:-1:-1;681:2334:48;;14:290:66;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:66;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:66:o;:::-;681:2334:48;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@inbox_8907": {
                                    "entryPoint": null,
                                    "id": 8907,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@owner_664": {
                                    "entryPoint": null,
                                    "id": 664,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@relayMessage_9091": {
                                    "entryPoint": 546,
                                    "id": 9091,
                                    "parameterSlots": 7,
                                    "returnSlots": 0
                                },
                                "@renounceOwnership_700": {
                                    "entryPoint": 301,
                                    "id": 700,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@sendTxToL2NoAliassing_8958": {
                                    "entryPoint": 1249,
                                    "id": 8958,
                                    "parameterSlots": 7,
                                    "returnSlots": 1
                                },
                                "@transferOwnership_728": {
                                    "entryPoint": 816,
                                    "id": 728,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_address": {
                                    "entryPoint": 1452,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 1819,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr": {
                                    "entryPoint": 1540,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 7
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": 2148,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_bytes": {
                                    "entryPoint": 1853,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_rational_0_by_1_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 2043,
                                    "id": null,
                                    "parameterSlots": 9,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 1960,
                                    "id": null,
                                    "parameterSlots": 7,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_iArbitrum_Inbox_$5874__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 1493,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:5450:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "182:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "190:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "178:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "294:147:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "304:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "326:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "313:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "313:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "304:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "419:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "428:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "431:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "421:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "421:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "421:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "355:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "366:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "373:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "362:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "362:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "352:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "352:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "345:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "345:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "342:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "273:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "284:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "245:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "478:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "495:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "498:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "488:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "488:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "488:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "592:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "595:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "585:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "585:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "585:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "616:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "619:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "609:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "609:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "609:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "446:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "816:1223:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "863:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "872:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "875:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "865:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "865:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "865:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "837:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "846:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "833:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "833:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "858:3:66",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "829:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "829:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "826:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "888:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "917:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "898:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "898:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "888:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "936:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "969:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "980:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "965:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "965:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "946:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "946:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "936:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "993:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1020:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1031:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1016:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1016:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1003:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1003:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "993:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1044:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1071:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1082:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1067:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1067:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1054:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1054:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1044:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1095:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1122:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1133:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1118:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1118:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1105:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1105:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1095:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1147:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1174:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1185:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1170:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1170:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1157:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1157:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1147:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1199:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1230:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1241:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1226:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1226:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1213:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1213:33:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1203:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1255:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1265:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1259:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1310:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1319:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1322:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1312:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1312:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1312:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1298:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1306:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1295:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1295:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1292:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1335:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1349:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1360:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1345:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1345:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1339:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1415:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1424:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1427:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1417:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1417:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1417:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1394:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1398:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1390:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1390:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1405:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1386:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1386:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1379:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1379:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1376:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1440:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1463:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1450:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1450:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1444:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1489:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1491:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1491:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1491:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1481:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1485:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1478:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1478:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1475:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1520:76:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1530:66:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1524:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1605:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1625:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1619:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1619:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1609:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1637:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1659:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "1683:2:66"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1687:4:66",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1679:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1679:13:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1694:2:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1675:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1675:22:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1699:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1671:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1671:31:66"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1704:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1667:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1667:40:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1655:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1655:53:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1641:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1767:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1769:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1769:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1769:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1726:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1738:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1723:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1723:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1746:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1758:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1743:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1743:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1720:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1720:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1717:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1805:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1809:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1798:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1798:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1798:22:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1836:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1844:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1829:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1829:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1829:18:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1893:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1902:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1905:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1895:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1895:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1895:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1870:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1874:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1866:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1866:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1879:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1862:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1862:20:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1884:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1859:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1859:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1856:53:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1935:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1943:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1931:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1931:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1952:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1956:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1948:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1948:11:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1961:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1918:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1918:46:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1918:46:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "memPtr",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1988:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1996:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1984:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1984:15:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2001:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1980:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1980:24:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2006:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1973:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1973:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1973:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2017:16:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2027:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2017:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "734:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "745:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "757:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "765:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "773:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "781:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "789:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "797:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "805:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "635:1404:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2114:116:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2160:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2169:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2172:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2162:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2162:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2162:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2135:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2144:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2131:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2131:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2156:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2127:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2127:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2124:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2185:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2214:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2195:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2195:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2185:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2080:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2091:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2103:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2044:186:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2360:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2370:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2382:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2393:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2378:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2378:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2370:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2412:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2427:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2435:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2423:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2423:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2405:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2405:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2405:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_iArbitrum_Inbox_$5874__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2329:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2340:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2351:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2235:250:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2664:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2681:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2692:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2674:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2674:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2674:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2715:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2726:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2711:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2711:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2731:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2704:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2704:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2704:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2754:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2765:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2750:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2750:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2770:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: caller is not the owner"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2743:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2743:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2743:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2814:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2826:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2837:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2822:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2822:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2814:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2641:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2655:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2490:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2900:481:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2910:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2930:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2924:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2924:12:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2914:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2952:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2957:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2945:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2945:19:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2945:19:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2973:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2982:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2977:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3044:110:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulVariableDeclaration",
                                                                        "src": "3058:14:66",
                                                                        "value": {
                                                                            "kind": "number",
                                                                            "nodeType": "YulLiteral",
                                                                            "src": "3068:4:66",
                                                                            "type": "",
                                                                            "value": "0x20"
                                                                        },
                                                                        "variables": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulTypedName",
                                                                                "src": "3062:2:66",
                                                                                "type": ""
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "pos",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3100:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3105:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3096:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "3096:11:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "_1",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3109:2:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3092:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3092:20:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "value",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "3128:5:66"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "3135:1:66"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "3124:3:66"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "3124:13:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3139:2:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3120:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "3120:22:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3114:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3114:29:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3085:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3085:59:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3085:59:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3003:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3006:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3000:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3000:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3014:21:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "3016:17:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3025:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3028:4:66",
                                                                                    "type": "",
                                                                                    "value": "0x20"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3021:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3021:12:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3016:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2996:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "2992:162:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3188:62:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "pos",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3217:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "length",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3222:6:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3213:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "3213:16:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "3231:4:66",
                                                                                            "type": "",
                                                                                            "value": "0x20"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3209:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3209:27:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3238:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3202:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3202:38:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3202:38:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3169:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3172:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3166:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3166:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3163:87:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3259:116:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3274:3:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3287:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3295:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3283:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3283:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3300:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3279:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3279:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3270:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3270:98:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3370:4:66",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3266:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3266:109:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3259:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_bytes",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2877:5:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2884:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2892:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2851:530:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3645:366:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3662:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3677:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3685:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3673:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3673:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3655:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3655:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3655:74:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3749:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3760:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3745:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3745:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3765:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3738:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3738:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3738:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3792:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3803:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3788:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3788:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3808:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3781:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3781:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3781:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3835:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3846:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3831:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3831:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3851:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3824:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3824:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3824:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3878:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3889:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3874:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3874:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3895:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3867:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3867:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3867:35:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3922:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3933:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3918:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3918:19:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3939:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3911:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3911:32:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3911:32:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3952:53:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value5",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3977:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3989:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4000:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3985:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3985:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3960:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3960:45:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3952:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3574:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3585:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3593:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3601:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3609:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3617:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3625:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3636:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3386:625:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4190:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4207:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4218:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4200:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4200:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4200:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4241:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4252:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4237:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4237:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4257:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4230:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4230:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4230:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4280:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4291:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4276:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4276:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4296:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: new owner is the zero a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4269:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4269:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4269:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4351:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4362:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4347:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4347:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4367:8:66",
                                                                        "type": "",
                                                                        "value": "ddress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4340:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4340:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4340:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4385:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4397:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4408:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4393:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4393:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4385:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4167:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4181:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4016:402:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4746:513:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4756:13:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4766:3:66",
                                                                "type": "",
                                                                "value": "256"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4760:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4778:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4788:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4782:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4846:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4861:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4869:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4857:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4857:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4839:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4839:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4839:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4893:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4904:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4889:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4889:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4909:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4882:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4882:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4882:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4936:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4947:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4932:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4932:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4952:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4925:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4925:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4925:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4979:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4990:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4975:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4975:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4999:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5007:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4995:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4995:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4968:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4968:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4968:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5031:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5042:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5027:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5027:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5052:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5060:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5048:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5048:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5020:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5020:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5020:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5084:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5095:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5080:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5080:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value5",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5101:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5073:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5073:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5073:35:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5128:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5139:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5124:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5124:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5145:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5117:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5117:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5117:35:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5172:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5183:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5168:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5168:19:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5189:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5161:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5161:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5161:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5201:52:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value7",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5226:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5238:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5249:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5234:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5234:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5209:16:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5209:44:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5201:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_rational_0_by_1_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4659:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4670:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4678:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4686:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4694:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4702:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4710:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4718:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4726:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4737:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4423:836:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5345:103:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5391:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5400:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5403:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5393:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5393:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5393:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5366:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5375:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5362:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5362:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5387:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5358:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5358:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5355:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5416:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5432:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5426:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5426:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5416:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5311:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5322:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5334:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5264:184:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        let offset := calldataload(add(headStart, 192))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value6 := memPtr\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_contract$_iArbitrum_Inbox_$5874__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), 192)\n        tail := abi_encode_bytes(value5, add(headStart, 192))\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_rational_0_by_1_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_uint256_t_uint256_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 256\n        let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _2))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), _1)\n        tail := abi_encode_bytes(value7, add(headStart, _1))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {
                                "8907": [
                                    {
                                        "length": 32,
                                        "start": 267
                                    },
                                    {
                                        "length": 32,
                                        "start": 1254
                                    }
                                ]
                            },
                            "linkReferences": {},
                            "object": "60806040526004361061005a5760003560e01c80639e353c70116100435780639e353c70146100c6578063f2fde38b146100d9578063fb0e722b146100f957600080fd5b8063715018a61461005f5780638da5cb5b14610076575b600080fd5b34801561006b57600080fd5b5061007461012d565b005b34801561008257600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100746100d4366004610604565b610222565b3480156100e557600080fd5b506100746100f436600461071b565b610330565b34801561010557600080fd5b5061009d7f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101aa565b60006102b4888888868989886104e1565b9050808873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fe0546421195e3e65035cacdb8d655c6d557e249c01c601f2af8b56f7526bc03f8a8a8a8a8a8a60405161031e969594939291906107a8565b60405180910390a45050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101aa565b73ffffffffffffffffffffffffffffffffffffffff8116610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101aa565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631b871c8d888b60008a8d8e8c8c8c6040518a63ffffffff1660e01b815260040161054d9897969594939291906107fb565b6020604051808303818588803b15801561056657600080fd5b505af115801561057a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061059f9190610864565b9998505050505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105d057600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080600080600060e0888a03121561061f57600080fd5b610628886105ac565b9650610636602089016105ac565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff8082111561066f57600080fd5b818a0191508a601f83011261068357600080fd5b813581811115610695576106956105d5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156106db576106db6105d5565b816040528281528d60208487010111156106f457600080fd5b82602086016020830137600060208483010152809550505050505092959891949750929550565b60006020828403121561072d57600080fd5b610736826105ac565b9392505050565b6000815180845260005b8181101561076357602081850181015186830182015201610747565b81811115610775576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015284604082015283606082015282608082015260c060a082015260006107ef60c083018461073d565b98975050505050505050565b600061010073ffffffffffffffffffffffffffffffffffffffff808c1684528a602085015289604085015280891660608501528088166080850152508560a08401528460c08401528060e08401526108558184018561073d565b9b9a5050505050505050505050565b60006020828403121561087657600080fd5b505191905056fea264697066735822122067a05ee682beb0e29191d2b642e00df777109f985a5369b0638c1b746842263864736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E353C70 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x9E353C70 EQ PUSH2 0xC6 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0xFB0E722B EQ PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x76 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x12D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH2 0xD4 CALLDATASIZE PUSH1 0x4 PUSH2 0x604 JUMP JUMPDEST PUSH2 0x222 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0xF4 CALLDATASIZE PUSH1 0x4 PUSH2 0x71B JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B4 DUP9 DUP9 DUP9 DUP7 DUP10 DUP10 DUP9 PUSH2 0x4E1 JUMP JUMPDEST SWAP1 POP DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xE0546421195E3E65035CACDB8D655C6D557E249C01C601F2AF8B56F7526BC03F DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x31E SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x454 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1B871C8D DUP9 DUP12 PUSH1 0x0 DUP11 DUP14 DUP15 DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x54D SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x57A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x59F SWAP2 SWAP1 PUSH2 0x864 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x628 DUP9 PUSH2 0x5AC JUMP JUMPDEST SWAP7 POP PUSH2 0x636 PUSH1 0x20 DUP10 ADD PUSH2 0x5AC JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x66F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x683 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x695 JUMPI PUSH2 0x695 PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x6DB JUMPI PUSH2 0x6DB PUSH2 0x5D5 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP14 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x6F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x72D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x736 DUP3 PUSH2 0x5AC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x763 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x747 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x775 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP2 MSTORE DUP6 PUSH1 0x20 DUP3 ADD MSTORE DUP5 PUSH1 0x40 DUP3 ADD MSTORE DUP4 PUSH1 0x60 DUP3 ADD MSTORE DUP3 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xC0 PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x7EF PUSH1 0xC0 DUP4 ADD DUP5 PUSH2 0x73D JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP13 AND DUP5 MSTORE DUP11 PUSH1 0x20 DUP6 ADD MSTORE DUP10 PUSH1 0x40 DUP6 ADD MSTORE DUP1 DUP10 AND PUSH1 0x60 DUP6 ADD MSTORE DUP1 DUP9 AND PUSH1 0x80 DUP6 ADD MSTORE POP DUP6 PUSH1 0xA0 DUP5 ADD MSTORE DUP5 PUSH1 0xC0 DUP5 ADD MSTORE DUP1 PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x855 DUP2 DUP5 ADD DUP6 PUSH2 0x73D JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH8 0xA05EE682BEB0E291 SWAP2 0xD2 0xB6 TIMESTAMP 0xE0 0xD 0xF7 PUSH24 0x109F985A5369B0638C1B746842263864736F6C6343000809 STOP CALLER ",
                            "sourceMap": "681:2334:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1700:145:5;;;;;;;;;;;;;:::i;:::-;;1068:85;;;;;;;;;;-1:-1:-1;1114:7:5;1140:6;;;1068:85;;;190:42:66;178:55;;;160:74;;148:2;133:18;1068:85:5;;;;;;;2244:769:48;;;;;;:::i;:::-;;:::i;1994:240:5:-;;;;;;;;;;-1:-1:-1;1994:240:5;;;;;:::i;:::-;;:::i;394:38:47:-;;;;;;;;;;;;;;;1700:145:5;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;2692:2:66;1272:68:5;;;2674:21:66;;;2711:18;;;2704:30;2770:34;2750:18;;;2743:62;2822:18;;1272:68:5;;;;;;;;;1806:1:::1;1790:6:::0;;1769:40:::1;::::0;::::1;1790:6:::0;;::::1;::::0;1769:40:::1;::::0;1806:1;;1769:40:::1;1836:1;1819:19:::0;;;::::1;::::0;;1700:145::o;2244:769:48:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;2692:2:66;1272:68:5;;;2674:21:66;;;2711:18;;;2704:30;2770:34;2750:18;;;2743:62;2822:18;;1272:68:5;2490:356:66;1272:68:5;2617:17:48::1;2649:104;2671:6;2679:12;2693:11;2706:17;2725:8;2735;2745:7;2649:21;:104::i;:::-;2617:136;;2840:9;2820:6;2768:238;;2796:10;2768:238;;;2863:12;2889:11;2914:8;2936;2958:17;2989:7;2768:238;;;;;;;;;;;:::i;:::-;;;;;;;;2508:505;2244:769:::0;;;;;;;:::o;1994:240:5:-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;2692:2:66;1272:68:5;;;2674:21:66;;;2711:18;;;2704:30;2770:34;2750:18;;;2743:62;2822:18;;1272:68:5;2490:356:66;1272:68:5;2082:22:::1;::::0;::::1;2074:73;;;::::0;::::1;::::0;;4218:2:66;2074:73:5::1;::::0;::::1;4200:21:66::0;4257:2;4237:18;;;4230:30;4296:34;4276:18;;;4269:62;4367:8;4347:18;;;4340:36;4393:19;;2074:73:5::1;4016:402:66::0;2074:73:5::1;2183:6;::::0;;2162:38:::1;::::0;::::1;::::0;;::::1;::::0;2183:6;::::1;::::0;2162:38:::1;::::0;::::1;2210:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1994:240::o;955:2276:47:-;1799:7;2851:14;2880:5;:47;;;2936:11;2967:6;2991:1;3051:17;3086:4;3108;3130:6;3154:11;3183:4;2880:321;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2851:350;955:2276;-1:-1:-1;;;;;;;;;955:2276:47:o;245:196:66:-;313:20;;373:42;362:54;;352:65;;342:93;;431:1;428;421:12;342:93;245:196;;;:::o;446:184::-;498:77;495:1;488:88;595:4;592:1;585:15;619:4;616:1;609:15;635:1404;757:6;765;773;781;789;797;805;858:3;846:9;837:7;833:23;829:33;826:53;;;875:1;872;865:12;826:53;898:29;917:9;898:29;:::i;:::-;888:39;;946:38;980:2;969:9;965:18;946:38;:::i;:::-;936:48;;1031:2;1020:9;1016:18;1003:32;993:42;;1082:2;1071:9;1067:18;1054:32;1044:42;;1133:3;1122:9;1118:19;1105:33;1095:43;;1185:3;1174:9;1170:19;1157:33;1147:43;;1241:3;1230:9;1226:19;1213:33;1265:18;1306:2;1298:6;1295:14;1292:34;;;1322:1;1319;1312:12;1292:34;1360:6;1349:9;1345:22;1335:32;;1405:7;1398:4;1394:2;1390:13;1386:27;1376:55;;1427:1;1424;1417:12;1376:55;1463:2;1450:16;1485:2;1481;1478:10;1475:36;;;1491:18;;:::i;:::-;1625:2;1619:9;1687:4;1679:13;;1530:66;1675:22;;;1699:2;1671:31;1667:40;1655:53;;;1723:18;;;1743:22;;;1720:46;1717:72;;;1769:18;;:::i;:::-;1809:10;1805:2;1798:22;1844:2;1836:6;1829:18;1884:7;1879:2;1874;1870;1866:11;1862:20;1859:33;1856:53;;;1905:1;1902;1895:12;1856:53;1961:2;1956;1952;1948:11;1943:2;1935:6;1931:15;1918:46;2006:1;2001:2;1996;1988:6;1984:15;1980:24;1973:35;2027:6;2017:16;;;;;;;635:1404;;;;;;;;;;:::o;2044:186::-;2103:6;2156:2;2144:9;2135:7;2131:23;2127:32;2124:52;;;2172:1;2169;2162:12;2124:52;2195:29;2214:9;2195:29;:::i;:::-;2185:39;2044:186;-1:-1:-1;;;2044:186:66:o;2851:530::-;2892:3;2930:5;2924:12;2957:6;2952:3;2945:19;2982:1;2992:162;3006:6;3003:1;3000:13;2992:162;;;3068:4;3124:13;;;3120:22;;3114:29;3096:11;;;3092:20;;3085:59;3021:12;2992:162;;;3172:6;3169:1;3166:13;3163:87;;;3238:1;3231:4;3222:6;3217:3;3213:16;3209:27;3202:38;3163:87;-1:-1:-1;3295:2:66;3283:15;3300:66;3279:88;3270:98;;;;3370:4;3266:109;;2851:530;-1:-1:-1;;2851:530:66:o;3386:625::-;3685:42;3677:6;3673:55;3662:9;3655:74;3765:6;3760:2;3749:9;3745:18;3738:34;3808:6;3803:2;3792:9;3788:18;3781:34;3851:6;3846:2;3835:9;3831:18;3824:34;3895:6;3889:3;3878:9;3874:19;3867:35;3939:3;3933;3922:9;3918:19;3911:32;3636:4;3960:45;4000:3;3989:9;3985:19;3977:6;3960:45;:::i;:::-;3952:53;3386:625;-1:-1:-1;;;;;;;;3386:625:66:o;4423:836::-;4737:4;4766:3;4788:42;4869:2;4861:6;4857:15;4846:9;4839:34;4909:6;4904:2;4893:9;4889:18;4882:34;4952:6;4947:2;4936:9;4932:18;4925:34;5007:2;4999:6;4995:15;4990:2;4979:9;4975:18;4968:43;5060:2;5052:6;5048:15;5042:3;5031:9;5027:19;5020:44;;5101:6;5095:3;5084:9;5080:19;5073:35;5145:6;5139:3;5128:9;5124:19;5117:35;5189:2;5183:3;5172:9;5168:19;5161:31;5209:44;5249:2;5238:9;5234:18;5226:6;5209:44;:::i;:::-;5201:52;4423:836;-1:-1:-1;;;;;;;;;;;4423:836:66:o;5264:184::-;5334:6;5387:2;5375:9;5366:7;5362:23;5358:32;5355:52;;;5403:1;5400;5393:12;5355:52;-1:-1:-1;5426:16:66;;5264:184;-1:-1:-1;5264:184:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "445400",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "inbox()": "infinite",
                                "owner()": "2307",
                                "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": "infinite",
                                "renounceOwnership()": "30127",
                                "transferOwnership(address)": "30347"
                            }
                        },
                        "methodIdentifiers": {
                            "inbox()": "fb0e722b",
                            "owner()": "8da5cb5b",
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": "9e353c70",
                            "renounceOwnership()": "715018a6",
                            "transferOwnership(address)": "f2fde38b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inbox\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":true,\"internalType\":\"uint256\",\"name\":\"seqNum\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"userToRefund\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1CallValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"RelayedMessage\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"inbox\",\"outputs\":[{\"internalType\":\"contract iArbitrum_Inbox\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"userToRefund\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"l1CallValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.This address will be the sender of any L1 --> L2 retryable tickets, so it should be set as the cross domain owner for L2 contracts that expect to receive cross domain messages.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_inbox\":\"Contract that sends generalized messages to the Arbitrum chain.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"gasLimit\":\"The gasLimit for the receipt of the message on L2.\",\"gasPrice\":\"Gas price bid for L2 execution.\",\"l1CallValue\":\"Amount of ETH deposited to `target` contract on L2. Used to pay for L2 submission fee and l2CallValue. This will usually be > 0.\",\"maxSubmissionCost\":\": Max gas deducted from user's L2 balance to cover base submission fee. This amount is proportional to the size of `data`.\",\"message\":\"The data to send to the target (usually calldata to a function with  `onlyFromCrossDomainAccount()`)\",\"target\":\"The intended recipient on L2.\",\"userToRefund\":\"User on L2 to refund extra fees to.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Sends a message to an account on L2. If this message reverts on l2 for any reason it can either be resent on L1, or redeemed on L2 manually. To learn more see how \\\"retryable tickets\\\" work on Arbitrum https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\"}},\"notice\":\"Sends cross chain messages Arbitrum L2 network.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/avm/Arbitrum_Messenger.sol\":\"Arbitrum_Messenger\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"},\"contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":{\"content\":\"// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\\n// with changes only to the solidity version.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n\\n/*\\n * Copyright 2021, Offchain Labs, Inc.\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *    http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\npragma solidity ^0.8.0;\\n\\ninterface iArbitrum_Outbox {\\n    function l2ToL1Sender() external view returns (address);\\n}\\n\",\"keccak256\":\"0x346d5d3a1bcdb29ef40bebbf0ca78fe3063e14176c20c96ea7854cbb4762cbd8\",\"license\":\"Apache-2.0\"},\"contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol\\n// with a change to the solidity version.\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"../../external/avm/interfaces/iArbitrum_Outbox.sol\\\";\\n\\nabstract contract Arbitrum_CrossDomainEnabled {\\n    iArbitrum_Inbox public immutable inbox;\\n\\n    /**\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     */\\n    constructor(address _inbox) {\\n        inbox = iArbitrum_Inbox(_inbox);\\n    }\\n\\n    // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\\n    // This function will not apply aliassing to the `user` address on L2.\\n    // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the\\n    // inbox.\\n    function sendTxToL2NoAliassing(\\n        address target, // Address where transaction will initiate on L2.\\n        address user, // Address where excess gas is credited on L2.\\n        uint256 l1CallValue, // msg.value deposited to `user` on L2.\\n        uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this\\n        // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should\\n        // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`.\\n        uint256 maxGas, // Gas limit for immediate L2 execution attempt.\\n        uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt.\\n        bytes memory data // ABI encoded data to send to target.\\n    ) internal returns (uint256) {\\n        // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external\\n        // - address destAddr: destination L2 contract address\\n        // - uint256 l2CallValue: call value for retryable L2 message\\n        // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee\\n        // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2\\n        // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled\\n        // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution\\n        // - uint256 gasPriceBid: price bid for L2 execution\\n        // - bytes data: ABI encoded data of L2 message\\n        uint256 seqNum =\\n            inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }(\\n                target,\\n                0, // we always assume that l2CallValue = 0\\n                maxSubmissionCost,\\n                user,\\n                user,\\n                maxGas,\\n                gasPriceBid,\\n                data\\n            );\\n        return seqNum;\\n    }\\n\\n    // Copied mostly from: https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol#L31\\n    modifier onlyFromCrossDomainAccount(address l2Counterpart) {\\n        // a message coming from the counterpart gateway was executed by the bridge\\n        IBridge bridge = IBridge(inbox.bridge());\\n        require(msg.sender == address(bridge), \\\"NOT_FROM_BRIDGE\\\");\\n\\n        // and the outbox reports that the L2 address of the sender is the counterpart gateway\\n        address l2ToL1Sender = iArbitrum_Outbox(bridge.activeOutbox()).l2ToL1Sender();\\n        require(l2ToL1Sender == l2Counterpart, \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x8bfa42e9d6c7a927da893c0968213e2263c958414e727562b7e3a02397a962ce\"},\"contracts/insured-bridge/avm/Arbitrum_Messenger.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Arbitrum_CrossDomainEnabled.sol\\\";\\nimport \\\"../interfaces/MessengerInterface.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\n/**\\n * @notice Sends cross chain messages Arbitrum L2 network.\\n * @dev This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the\\n * BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.\\n * @dev This address will be the sender of any L1 --> L2 retryable tickets, so it should be set as the cross domain\\n * owner for L2 contracts that expect to receive cross domain messages.\\n */\\ncontract Arbitrum_Messenger is Ownable, Arbitrum_CrossDomainEnabled, MessengerInterface {\\n    event RelayedMessage(\\n        address indexed from,\\n        address indexed to,\\n        uint256 indexed seqNum,\\n        address userToRefund,\\n        uint256 l1CallValue,\\n        uint256 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        bytes data\\n    );\\n\\n    /**\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     */\\n    constructor(address _inbox) Arbitrum_CrossDomainEnabled(_inbox) {}\\n\\n    /**\\n     * @notice Sends a message to an account on L2. If this message reverts on l2 for any reason it can either be\\n     * resent on L1, or redeemed on L2 manually. To learn more see how \\\"retryable tickets\\\" work on Arbitrum\\n     * https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\\n     * @param target The intended recipient on L2.\\n     * @param userToRefund User on L2 to refund extra fees to.\\n     * @param l1CallValue Amount of ETH deposited to `target` contract on L2. Used to pay for L2 submission fee and\\n     * l2CallValue. This will usually be > 0.\\n     * @param gasLimit The gasLimit for the receipt of the message on L2.\\n     * @param gasPrice Gas price bid for L2 execution.\\n     * @param maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee.\\n     * This amount is proportional to the size of `data`.\\n     * @param message The data to send to the target (usually calldata to a function with\\n     *  `onlyFromCrossDomainAccount()`)\\n     */\\n    function relayMessage(\\n        address target,\\n        address userToRefund,\\n        uint256 l1CallValue,\\n        uint256 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        bytes memory message\\n    ) external payable override onlyOwner {\\n        // Since we know the L2 target's address in advance, we don't need to alias an L1 address.\\n        uint256 seqNumber =\\n            sendTxToL2NoAliassing(target, userToRefund, l1CallValue, maxSubmissionCost, gasLimit, gasPrice, message);\\n        emit RelayedMessage(\\n            msg.sender,\\n            target,\\n            seqNumber,\\n            userToRefund,\\n            l1CallValue,\\n            gasLimit,\\n            gasPrice,\\n            maxSubmissionCost,\\n            message\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0xedac40ce926b0d20b54a9b901202a73fb32583880dff2f1456a3ebf8276ba5bc\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/interfaces/MessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will\\n * differ for each L2.\\n */\\ninterface MessengerInterface {\\n    function relayMessage(\\n        address target,\\n        address userToRefund,\\n        uint256 l1CallValue,\\n        uint256 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        bytes memory message\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0xa20bf4ed8f80d1ddd3cc81b1a49bb2bcd8dd4ed00e1c7ade3fd4edaf5b4f13b2\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 627,
                                "contract": "contracts/insured-bridge/avm/Arbitrum_Messenger.sol:Arbitrum_Messenger",
                                "label": "_owner",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": {
                                "notice": "Sends a message to an account on L2. If this message reverts on l2 for any reason it can either be resent on L1, or redeemed on L2 manually. To learn more see how \"retryable tickets\" work on Arbitrum https://developer.offchainlabs.com/docs/l1_l2_messages#parameters"
                            }
                        },
                        "notice": "Sends cross chain messages Arbitrum L2 network.",
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol": {
                "BridgeAdminInterface": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address[]",
                                    "name": "bridgePools",
                                    "type": "address[]"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "BridgePoolsAdminTransferred",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "DepositsEnabled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "SetCrossDomainAdmin",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2DepositContract",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2MessengerContract",
                                    "type": "address"
                                }
                            ],
                            "name": "SetDepositContracts",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newLpFeeRatePerSecond",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetLpFeeRate",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetMinimumBridgingDelay",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint32",
                                    "name": "liveness",
                                    "type": "uint32"
                                }
                            ],
                            "name": "SetOptimisticOracleLiveness",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint64",
                                    "name": "proposerBondPct",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetProposerBondPct",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "SetRelayIdentifier",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "WhitelistToken",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "name": "depositContracts",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "depositContract",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "messengerContract",
                                            "type": "address"
                                        }
                                    ],
                                    "internalType": "struct BridgeAdminInterface.DepositUtilityContracts",
                                    "name": "",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "finder",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "identifier",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "optimisticOracleLiveness",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "proposerBondPct",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "name": "whitelistedTokens",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "depositContracts(uint256)": "7eb4fa73",
                            "finder()": "b9a3c84c",
                            "identifier()": "7998a1c4",
                            "optimisticOracleLiveness()": "173684c5",
                            "proposerBondPct()": "c73a32c3",
                            "whitelistedTokens(address,uint256)": "bf06c19a"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"bridgePools\",\"type\":\"address[]\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"BridgePoolsAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"DepositsEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetCrossDomainAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2DepositContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2MessengerContract\",\"type\":\"address\"}],\"name\":\"SetDepositContracts\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newLpFeeRatePerSecond\",\"type\":\"uint64\"}],\"name\":\"SetLpFeeRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"SetMinimumBridgingDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"liveness\",\"type\":\"uint32\"}],\"name\":\"SetOptimisticOracleLiveness\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"proposerBondPct\",\"type\":\"uint64\"}],\"name\":\"SetProposerBondPct\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"SetRelayIdentifier\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"name\":\"WhitelistToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositContracts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"depositContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"messengerContract\",\"type\":\"address\"}],\"internalType\":\"struct BridgeAdminInterface.DepositUtilityContracts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optimisticOracleLiveness\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposerBondPct\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper view methods designed to be called by BridgePool contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/interfaces/BridgeAdminInterface.sol\":\"BridgeAdminInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/insured-bridge/interfaces/BridgeAdminInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Helper view methods designed to be called by BridgePool contracts.\\n */\\ninterface BridgeAdminInterface {\\n    event SetDepositContracts(\\n        uint256 indexed chainId,\\n        address indexed l2DepositContract,\\n        address indexed l2MessengerContract\\n    );\\n    event SetCrossDomainAdmin(uint256 indexed chainId, address indexed newAdmin);\\n    event SetRelayIdentifier(bytes32 indexed identifier);\\n    event SetOptimisticOracleLiveness(uint32 indexed liveness);\\n    event SetProposerBondPct(uint64 indexed proposerBondPct);\\n    event WhitelistToken(uint256 chainId, address indexed l1Token, address indexed l2Token, address indexed bridgePool);\\n    event SetMinimumBridgingDelay(uint256 indexed chainId, uint64 newMinimumBridgingDelay);\\n    event DepositsEnabled(uint256 indexed chainId, address indexed l2Token, bool depositsEnabled);\\n    event BridgePoolsAdminTransferred(address[] bridgePools, address indexed newAdmin);\\n    event SetLpFeeRate(address indexed bridgePool, uint64 newLpFeeRatePerSecond);\\n\\n    function finder() external view returns (address);\\n\\n    struct DepositUtilityContracts {\\n        address depositContract; // L2 deposit contract where cross-chain relays originate.\\n        address messengerContract; // L1 helper contract that can send a message to the L2 with the mapped network ID.\\n    }\\n\\n    function depositContracts(uint256) external view returns (DepositUtilityContracts memory);\\n\\n    struct L1TokenRelationships {\\n        mapping(uint256 => address) l2Tokens; // L2 Chain Id to l2Token address.\\n        address bridgePool;\\n    }\\n\\n    function whitelistedTokens(address, uint256) external view returns (address l2Token, address bridgePool);\\n\\n    function optimisticOracleLiveness() external view returns (uint32);\\n\\n    function proposerBondPct() external view returns (uint64);\\n\\n    function identifier() external view returns (bytes32);\\n}\\n\",\"keccak256\":\"0x1fb2737503a627f20fd42538bb0ed3b4c8bd3905ad19906b5d6e2f1ff3d8336f\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "notice": "Helper view methods designed to be called by BridgePool contracts.",
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/interfaces/BridgePoolInterface.sol": {
                "BridgePoolInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "changeAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1Token",
                            "outputs": [
                                {
                                    "internalType": "contract IERC20",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "_newLpFeeRatePerSecond",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setLpFeeRatePerSecond",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bool",
                                    "name": "_relaysEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "setRelaysEnabled",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "changeAdmin(address)": "8f283970",
                            "l1Token()": "c01e1bd6",
                            "setLpFeeRatePerSecond(uint64)": "27f224ca",
                            "setRelaysEnabled(bool)": "08ed5b14"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_newLpFeeRatePerSecond\",\"type\":\"uint64\"}],\"name\":\"setLpFeeRatePerSecond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_relaysEnabled\",\"type\":\"bool\"}],\"name\":\"setRelaysEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/interfaces/BridgePoolInterface.sol\":\"BridgePoolInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"contracts/insured-bridge/interfaces/BridgePoolInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface BridgePoolInterface {\\n    function l1Token() external view returns (IERC20);\\n\\n    function changeAdmin(address newAdmin) external;\\n\\n    function setLpFeeRatePerSecond(uint64 _newLpFeeRatePerSecond) external;\\n\\n    function setRelaysEnabled(bool _relaysEnabled) external;\\n}\\n\",\"keccak256\":\"0xecfb4d11dca8a0a07c73e7104426a86e96c35e905fc436405adcd1eec8be383f\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/interfaces/MessengerInterface.sol": {
                "MessengerInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "target",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "userToRefund",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l1CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasLimit",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "message",
                                    "type": "bytes"
                                }
                            ],
                            "name": "relayMessage",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": "9e353c70"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"userToRefund\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"l1CallValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will differ for each L2.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/interfaces/MessengerInterface.sol\":\"MessengerInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/insured-bridge/interfaces/MessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will\\n * differ for each L2.\\n */\\ninterface MessengerInterface {\\n    function relayMessage(\\n        address target,\\n        address userToRefund,\\n        uint256 l1CallValue,\\n        uint256 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        bytes memory message\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0xa20bf4ed8f80d1ddd3cc81b1a49bb2bcd8dd4ed00e1c7ade3fd4edaf5b4f13b2\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "notice": "Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will differ for each L2.",
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol": {
                "OVM_BridgeDepositBox": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_crossDomainAdmin",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "_minimumBridgingDelay",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "_chainId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_l1Weth",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "timerAddress",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "DepositsEnabled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "depositId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Sender",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "FundsDeposited",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetMinimumBridgingDelay",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "SetXDomainAdmin",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "numberOfTokensBridged",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "l1Gas",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "caller",
                                    "type": "address"
                                }
                            ],
                            "name": "TokensBridged",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "WhitelistToken",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "l1Gas",
                                    "type": "uint32"
                                }
                            ],
                            "name": "bridgeTokens",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "canBridge",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "chainId",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "crossDomainAdmin",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "isWhitelistToken",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1Weth",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "messenger",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "minimumBridgingDelay",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "numberOfDeposits",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newCrossDomainAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "setCrossDomainAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "setEnableDeposits",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setMinimumBridgingDelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "timerAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1BridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "whitelistToken",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "whitelistedTokens",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1BridgePool",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Uses OVM cross-domain-enabled logic for access control.",
                        "kind": "dev",
                        "methods": {
                            "bridgeTokens(address,uint32)": {
                                "details": "The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam      on L1 as the finalization of a L2->L1 tx is quite expensive.",
                                "params": {
                                    "l1Gas": "Unused by optimism, but included for potential forward compatibility considerations.",
                                    "l2Token": "L2 token to relay over the canonical bridge."
                                }
                            },
                            "canBridge(address)": {
                                "details": "This function is also public for caller convenience.",
                                "params": {
                                    "l2Token": "L2 token to check bridging status."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised and enough time has elapsed since the previous bridge."
                                }
                            },
                            "constructor": {
                                "params": {
                                    "_chainId": "L2 Chain identifier this deposit box is deployed on.",
                                    "_crossDomainAdmin": "Address of the L1 contract that can call admin functions on this contract from L1.",
                                    "_l1Weth": "Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.",
                                    "_minimumBridgingDelay": "Minimum second that must elapse between L2->L1 token transfer to prevent dos.",
                                    "timerAddress": "Timer used to synchronize contract time in testing. Set to 0x000... in production."
                                }
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "details": "Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.",
                                "params": {
                                    "amount": "How many L2 tokens should be deposited.",
                                    "instantRelayFeePct": "Fraction of `amount` that the depositor is willing to pay as an instant relay fee.",
                                    "l1Recipient": "L1 address that should receive the tokens.",
                                    "l2Token": "L2 token to deposit.",
                                    "quoteTimestamp": "Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.",
                                    "slowRelayFeePct": "Max fraction of `amount` that the depositor is willing to pay as a slow relay fee."
                                }
                            },
                            "getCurrentTime()": {
                                "returns": {
                                    "_0": "uint for the current Testable timestamp."
                                }
                            },
                            "isWhitelistToken(address)": {
                                "details": "Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.",
                                "params": {
                                    "l2Token": "L2 token to check against the whitelist."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised."
                                }
                            },
                            "setCrossDomainAdmin(address)": {
                                "details": "This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which is expected to be the Optimism_Messenger.Only callable by the existing admin via the Optimism cross domain messenger.",
                                "params": {
                                    "newCrossDomainAdmin": "address of the new L1 admin contract."
                                }
                            },
                            "setCurrentTime(uint256)": {
                                "details": "Will revert if not running in test mode.",
                                "params": {
                                    "time": "timestamp to set current Testable time to."
                                }
                            },
                            "setEnableDeposits(address,bool)": {
                                "details": "Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "depositsEnabled": "bool to set if the deposit box should accept/reject deposits.",
                                    "l2Token": "address of L2 token to enable/disable deposits for."
                                }
                            },
                            "setMinimumBridgingDelay(uint64)": {
                                "details": "Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "newMinimumBridgingDelay": "the new minimum delay."
                                }
                            },
                            "whitelistToken(address,address,address)": {
                                "details": "Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "l1BridgePool": "Address of the L1 withdrawal pool linked to this L2+L1 token.",
                                    "l1Token": "Address of the canonical L1 token. This is the token users will receive on Ethereum.",
                                    "l2Token": "Address of the L2 token representation. This is the token users would deposit on optimism."
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_111": {
                                    "entryPoint": null,
                                    "id": 111,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_5389": {
                                    "entryPoint": null,
                                    "id": 5389,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_5541": {
                                    "entryPoint": null,
                                    "id": 5541,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_8374": {
                                    "entryPoint": null,
                                    "id": 8374,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@_9302": {
                                    "entryPoint": null,
                                    "id": 9302,
                                    "parameterSlots": 5,
                                    "returnSlots": 0
                                },
                                "@_setCrossDomainAdmin_9463": {
                                    "entryPoint": 302,
                                    "id": 9463,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setMinimumBridgingDelay_8389": {
                                    "entryPoint": 218,
                                    "id": 8389,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_address_fromMemory": {
                                    "entryPoint": 467,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_uint64t_uint256t_addresst_address_fromMemory": {
                                    "entryPoint": 496,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 5
                                },
                                "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:1363:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "74:117:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "84:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "99:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "93:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "93:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "84:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "169:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "178:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "181:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "171:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "171:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "171:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "128:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "139:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "154:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "159:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "150:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "150:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "163:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "146:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "146:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "135:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "135:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "125:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "125:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "118:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "118:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "115:70:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "53:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "64:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "344:458:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "391:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "400:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "403:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "393:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "393:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "393:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "365:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "374:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "361:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "361:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "386:3:66",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "357:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "357:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "354:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "416:50:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "456:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "426:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "426:40:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "416:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "475:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "498:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "509:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "494:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "494:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "488:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "488:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "479:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "575:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "584:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "587:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "577:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "577:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "577:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "535:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "546:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "561:2:66",
                                                                                                        "type": "",
                                                                                                        "value": "64"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "565:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "557:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "557:10:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "569:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "553:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "553:18:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "542:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "542:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "532:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "532:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "525:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "525:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "522:69:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "600:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "610:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "600:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "624:35:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "644:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "655:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "640:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "640:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "634:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "634:25:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "624:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "668:59:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "712:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "723:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "708:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "708:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "678:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "678:49:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "668:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "736:60:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "780:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "791:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "776:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "776:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "746:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "746:50:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "736:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint64t_uint256t_addresst_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "278:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "289:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "301:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "309:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "317:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "325:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "333:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "196:606:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "906:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "916:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "928:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "939:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "924:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "924:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "916:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "958:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "973:6:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "989:2:66",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "993:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "985:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "985:10:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "997:1:66",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "981:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "981:18:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "969:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "969:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "951:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "951:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "951:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "875:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "886:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "897:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "807:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1186:175:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1203:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1214:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1196:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1196:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1196:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1237:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1248:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1233:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1233:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1253:2:66",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1226:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1226:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1226:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1276:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1287:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1272:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1272:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4261642062726964676520726f757465722061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1292:27:66",
                                                                        "type": "",
                                                                        "value": "Bad bridge router address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1265:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1265:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1265:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1329:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1341:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1352:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1337:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1337:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1329:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1163:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1177:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1012:349:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint64t_uint256t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        let value := mload(add(headStart, 32))\n        if iszero(eq(value, and(value, sub(shl(64, 1), 1)))) { revert(0, 0) }\n        value1 := value\n        value2 := mload(add(headStart, 64))\n        value3 := abi_decode_address_fromMemory(add(headStart, 96))\n        value4 := abi_decode_address_fromMemory(add(headStart, 128))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Bad bridge router address\")\n        tail := add(headStart, 96)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60806040523480156200001157600080fd5b50604051620027d9380380620027d98339810160408190526200003491620001f0565b600080546001600160a81b0319166001600160a01b03831617600160a01b179055734200000000000000000000000000000000000007848484846200007984620000da565b50600191909155600280546001600160a01b0319166001600160a01b0392831617905560058054600160401b600160e01b0319166801000000000000000094909216939093021790915550620000cf856200012e565b505050505062000266565b600580546001600160401b0319166001600160401b0383169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b6001600160a01b038116620001895760405162461bcd60e51b815260206004820152601960248201527f4261642062726964676520726f75746572206164647265737300000000000000604482015260640160405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b80516001600160a01b0381168114620001eb57600080fd5b919050565b600080600080600060a086880312156200020957600080fd5b6200021486620001d3565b60208701519095506001600160401b03811681146200023257600080fd5b604087015190945092506200024a60608701620001d3565b91506200025a60808701620001d3565b90509295509295909350565b61256380620002766000396000f3fe6080604052600436106101295760003560e01c806363635fd9116100a5578063b2d6f4d411610074578063daf9c21011610059578063daf9c21014610386578063de7eba7814610465578063fbb9fcf71461048557600080fd5b8063b2d6f4d414610339578063c2d9dca91461037357600080fd5b806363635fd9146102bd5780639a8a0592146102ed5780639bfd2cdc14610303578063a1244c671461032357600080fd5b80632ec35b31116100fc5780634dedca28116100e15780634dedca28146102505780635285e05814610270578063563c7f601461029d57600080fd5b80632ec35b31146101f75780633cb747bf1461021757600080fd5b8063146bf4b11461012e5780631c39c38d1461018557806322f8e566146101b257806329cb924d146101d4575b600080fd5b34801561013a57600080fd5b5060025461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561019157600080fd5b5060005461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101be57600080fd5b506101d26101cd3660046121d8565b6104ef565b005b3480156101e057600080fd5b506101e9610598565b60405190815260200161017c565b34801561020357600080fd5b506101d261021236600461220e565b61065f565b34801561022357600080fd5b5060055461015b9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561025c57600080fd5b506101d261026b36600461224e565b6108b9565b34801561027c57600080fd5b5060065461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102a957600080fd5b506101d26102b83660046122a7565b610b12565b3480156102c957600080fd5b506102dd6102d83660046122e0565b610d69565b604051901515815260200161017c565b3480156102f957600080fd5b506101e960015481565b34801561030f57600080fd5b506101d261031e3660046122fd565b610dcc565b34801561032f57600080fd5b506101e960035481565b34801561034557600080fd5b5060055461035a9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161017c565b6101d2610381366004612334565b61116f565b34801561039257600080fd5b5061041c6103a13660046122e0565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff909116918301919091521515606082015260800161017c565b34801561047157600080fd5b506101d26104803660046122e0565b611719565b34801561049157600080fd5b506102dd6104a03660046122e0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff1661051157600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b15801561057d57600080fd5b505af1158015610591573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff161561065a5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561061d57600080fd5b505afa158015610631573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065591906123a5565b905090565b504290565b60065473ffffffffffffffffffffffffffffffffffffffff166106a460055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d157600080fd5b505afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906123be565b73ffffffffffffffffffffffffffffffffffffffff16146108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d65737361676500000000000000000000000000000000606482015260840161075a565b6108b58261196a565b5050565b60065473ffffffffffffffffffffffffffffffffffffffff166108fe60055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e74696361746564000000000000000000000000000000000000606482015260840161075a565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2657600080fd5b505afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e91906123be565b73ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d65737361676500000000000000000000000000000000606482015260840161075a565b610b0c8484846119d7565b50505050565b60065473ffffffffffffffffffffffffffffffffffffffff16610b5760055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e74696361746564000000000000000000000000000000000000606482015260840161075a565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7f57600080fd5b505afa158015610c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb791906123be565b73ffffffffffffffffffffffffffffffffffffffff1614610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d65737361676500000000000000000000000000000000606482015260840161075a565b610d648383611baf565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1615158015610dc65750610dc682611c62565b92915050565b610dd4611cd9565b610e01600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b158015610e6b57600080fd5b505af1158015610e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea391906123a5565b905060008111610f0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e730000000000000000604482015260640161075a565b610f1883610d69565b610fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e740000000000000000000000000000000000606482015260840161075a565b610fac610598565b73ffffffffffffffffffffffffffffffffffffffff8481166000818152600460208190526040808320600101805467ffffffffffffffff9790971674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff8816811790915590517fa3a7954800000000000000000000000000000000000000000000000000000000815291820193909352918316939092169290921760248301526044820183905263ffffffff8416606483015260a0608483015260a48201527342000000000000000000000000000000000000109063a3a795489060c401600060405180830381600087803b1580156110ba57600080fd5b505af11580156110ce573d6000803e3d6000fd5b50506040805184815263ffffffff8616602082015233935073ffffffffffffffffffffffffffffffffffffffff871692507f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a3506108b5600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff16611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c6564000000000000000000000000604482015260640161075a565b61122b611cd9565b611258600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c6973746564000000604482015260640161075a565b6703782dace9d900008467ffffffffffffffff161115611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d203235250000604482015260640161075a565b6703782dace9d900008367ffffffffffffffff161115611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f2500000000000000000000000000000000000000000000000000000000000000606482015260840161075a565b6114336102588361240a565b67ffffffffffffffff16611445610598565b1015801561146f575061145a82610258612433565b67ffffffffffffffff1661146c610598565b11155b6114d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e6500000000604482015260640161075a565b60025473ffffffffffffffffffffffffffffffffffffffff878116600090815260046020526040902054811691161480156115105750600034115b156115e45784341461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e740000000000604482015260640161075a565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156115c657600080fd5b505af11580156115da573d6000803e3d6000fd5b5050505050611606565b61160673ffffffffffffffffffffffffffffffffffffffff8716333088611d5f565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a16001600360008282546116c6919061245f565b909155506117109050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60065473ffffffffffffffffffffffffffffffffffffffff1661175e60055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e74696361746564000000000000000000000000000000000000606482015260840161075a565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561188657600080fd5b505afa15801561189a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118be91906123be565b73ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d65737361676500000000000000000000000000000000606482015260840161075a565b6108b582611df4565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001611a22610598565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd8383611b61610598565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120600101549091611cc09167ffffffffffffffff918216917401000000000000000000000000000000000000000090910416612433565b67ffffffffffffffff16611cd2610598565b1192915050565b60005474010000000000000000000000000000000000000000900460ff16611d5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161075a565b565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610b0c908590611ee0565b73ffffffffffffffffffffffffffffffffffffffff8116611e71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4261642062726964676520726f75746572206164647265737300000000000000604482015260640161075a565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b6000611f42826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611fec9092919063ffffffff16565b805190915015610d645780806020019051810190611f609190612477565b610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161075a565b6060611ffb8484600085612005565b90505b9392505050565b606082471015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161075a565b843b6120ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161075a565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161212891906124c0565b60006040518083038185875af1925050503d8060008114612165576040519150601f19603f3d011682016040523d82523d6000602084013e61216a565b606091505b509150915061217a828286612185565b979650505050505050565b60608315612194575081611ffe565b8251156121a45782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a91906124dc565b6000602082840312156121ea57600080fd5b5035919050565b803567ffffffffffffffff8116811461220957600080fd5b919050565b60006020828403121561222057600080fd5b611ffe826121f1565b73ffffffffffffffffffffffffffffffffffffffff8116811461224b57600080fd5b50565b60008060006060848603121561226357600080fd5b833561226e81612229565b9250602084013561227e81612229565b9150604084013561228e81612229565b809150509250925092565b801515811461224b57600080fd5b600080604083850312156122ba57600080fd5b82356122c581612229565b915060208301356122d581612299565b809150509250929050565b6000602082840312156122f257600080fd5b8135611ffe81612229565b6000806040838503121561231057600080fd5b823561231b81612229565b9150602083013563ffffffff811681146122d557600080fd5b60008060008060008060c0878903121561234d57600080fd5b863561235881612229565b9550602087013561236881612229565b94506040870135935061237d606088016121f1565b925061238b608088016121f1565b915061239960a088016121f1565b90509295509295509295565b6000602082840312156123b757600080fd5b5051919050565b6000602082840312156123d057600080fd5b8151611ffe81612229565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8381169083168181101561242b5761242b6123db565b039392505050565b600067ffffffffffffffff808316818516808303821115612456576124566123db565b01949350505050565b60008219821115612472576124726123db565b500190565b60006020828403121561248957600080fd5b8151611ffe81612299565b60005b838110156124af578181015183820152602001612497565b83811115610b0c5750506000910152565b600082516124d2818460208701612494565b9190910192915050565b60208152600082518060208401526124fb816040850160208701612494565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220c8eda294bb6c3a5c5fe38fd8eefe908c0b3fd778822bacd5a080de645b9d1f2264736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x27D9 CODESIZE SUB DUP1 PUSH3 0x27D9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1F0 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE PUSH20 0x4200000000000000000000000000000000000007 DUP5 DUP5 DUP5 DUP5 PUSH3 0x79 DUP5 PUSH3 0xDA JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH9 0x10000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR SWAP1 SWAP2 SSTORE POP PUSH3 0xCF DUP6 PUSH3 0x12E JUMP JUMPDEST POP POP POP POP POP PUSH3 0x266 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x189 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4261642062726964676520726F75746572206164647265737300000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9E8C42C9E7FCA7F62755189A16B2F5314D43D8FB24E91BA54E6D65F9314E849 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x214 DUP7 PUSH3 0x1D3 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD SWAP1 SWAP5 POP SWAP3 POP PUSH3 0x24A PUSH1 0x60 DUP8 ADD PUSH3 0x1D3 JUMP JUMPDEST SWAP2 POP PUSH3 0x25A PUSH1 0x80 DUP8 ADD PUSH3 0x1D3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH2 0x2563 DUP1 PUSH3 0x276 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x129 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x63635FD9 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xB2D6F4D4 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDAF9C210 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDAF9C210 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xDE7EBA78 EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0xFBB9FCF7 EQ PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB2D6F4D4 EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0xC2D9DCA9 EQ PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x63635FD9 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x9BFD2CDC EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0xA1244C67 EQ PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x4DEDCA28 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x4DEDCA28 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x5285E058 EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x563C7F60 EQ PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x3CB747BF EQ PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x146BF4B1 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x1D4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x21D8 JUMP JUMPDEST PUSH2 0x4EF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH2 0x598 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x220E JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x15B SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x26B CALLDATASIZE PUSH1 0x4 PUSH2 0x224E JUMP JUMPDEST PUSH2 0x8B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0xB12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DD PUSH2 0x2D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E0 JUMP JUMPDEST PUSH2 0xD69 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x22FD JUMP JUMPDEST PUSH2 0xDCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x35A SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH2 0x1D2 PUSH2 0x381 CALLDATASIZE PUSH1 0x4 PUSH2 0x2334 JUMP JUMPDEST PUSH2 0x116F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41C PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 DUP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x480 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E0 JUMP JUMPDEST PUSH2 0x1719 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DD PUSH2 0x4A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x22F8E56600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x591 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x631 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x655 SWAP2 SWAP1 PUSH2 0x23A5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6A4 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x763 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x8B5 DUP3 PUSH2 0x196A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FE PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA5E SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0xB0C DUP5 DUP5 DUP5 PUSH2 0x19D7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB57 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCB7 SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0xD64 DUP4 DUP4 PUSH2 0x1BAF JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 ISZERO PUSH2 0xDC6 JUMPI POP PUSH2 0xDC6 DUP3 PUSH2 0x1C62 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDD4 PUSH2 0x1CD9 JUMP JUMPDEST PUSH2 0xE01 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEA3 SWAP2 SWAP1 PUSH2 0x23A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0xF0F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x63616E277420627269646765207A65726F20746F6B656E730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0xF18 DUP4 PUSH2 0xD69 JUMP JUMPDEST PUSH2 0xFA4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F6E2D77686974656C697374656420746F6B656E206F72206C617374206272 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964676520746F6F20726563656E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0xFAC PUSH2 0x598 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP8 SWAP1 SWAP8 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0xA3A7954800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 AND SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0xA4 DUP3 ADD MSTORE PUSH20 0x4200000000000000000000000000000000000010 SWAP1 PUSH4 0xA3A79548 SWAP1 PUSH1 0xC4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 POP PUSH32 0x95B5EC953BD38FBAA6F859725352BF73202C155A6809E5622C95CEEF331EAC6C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x8B5 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP6 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1223 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742069732064697361626C6564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x122B PUSH2 0x1CD9 JUMP JUMPDEST PUSH2 0x1258 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1309 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F73697420746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1385 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6F7752656C6179466565506374206D757374206265203C3D203235250000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1427 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E7374616E7452656C6179466565506374206D757374206265203C3D203235 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x1433 PUSH2 0x258 DUP4 PUSH2 0x240A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1445 PUSH2 0x598 JUMP JUMPDEST LT ISZERO DUP1 ISZERO PUSH2 0x146F JUMPI POP PUSH2 0x145A DUP3 PUSH2 0x258 PUSH2 0x2433 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x146C PUSH2 0x598 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0x14D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F736974206D696E656420616674657220646561646C696E6500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP2 AND EQ DUP1 ISZERO PUSH2 0x1510 JUMPI POP PUSH1 0x0 CALLVALUE GT JUMPDEST ISZERO PUSH2 0x15E4 JUMPI DUP5 CALLVALUE EQ PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206D757374206D6174636820616D6F756E740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1606 JUMP JUMPDEST PUSH2 0x1606 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP9 PUSH2 0x1D5F JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP7 DUP8 MSTORE SWAP1 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP12 DUP4 AND SWAP1 DUP6 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP1 DUP6 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH32 0xAB77617F2B9BDBB101FC328E585470FB3C845C92B25C4B080CB7B66F7163CF72 SWAP1 PUSH2 0x140 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16C6 SWAP2 SWAP1 PUSH2 0x245F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1710 SWAP1 POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x175E PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1818 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x189A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18BE SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1961 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x8B5 DUP3 PUSH2 0x1DF4 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A22 PUSH2 0x598 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP6 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 DUP5 AND OR DUP2 SSTORE SWAP5 DUP7 ADD MLOAD SWAP5 SWAP1 SWAP3 ADD DUP1 SLOAD SWAP3 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP1 SWAP2 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH21 0x10000000000000000000000000000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH32 0x93F23ADD56B90352EA2EF3BC2123262792AF300DC6060C99F6EE06A7026863BD DUP4 DUP4 PUSH2 0x1B61 PUSH2 0x598 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP7 ISZERO ISZERO SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF84482204FF927822D3068D71E16E14B51CB1B2ADAFA7D6E11EDC1B8DFD8C0DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 PUSH2 0x1CC0 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x2433 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1CD2 PUSH2 0x598 JUMP JUMPDEST GT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1D5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xB0C SWAP1 DUP6 SWAP1 PUSH2 0x1EE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1E71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4261642062726964676520726F75746572206164647265737300000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9E8C42C9E7FCA7F62755189A16B2F5314D43D8FB24E91BA54E6D65F9314E849 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F42 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1FEC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xD64 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1F60 SWAP2 SWAP1 PUSH2 0x2477 JUMP JUMPDEST PUSH2 0xD64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FFB DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x2005 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x2097 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x20FF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2128 SWAP2 SWAP1 PUSH2 0x24C0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2165 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x216A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x217A DUP3 DUP3 DUP7 PUSH2 0x2185 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2194 JUMPI POP DUP2 PUSH2 0x1FFE JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x21A4 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75A SWAP2 SWAP1 PUSH2 0x24DC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FFE DUP3 PUSH2 0x21F1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x224B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x226E DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x227E DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x228E DUP2 PUSH2 0x2229 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x224B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x22C5 DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x22D5 DUP2 PUSH2 0x2299 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1FFE DUP2 PUSH2 0x2229 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x231B DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x22D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x234D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2358 DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2368 DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x237D PUSH1 0x60 DUP9 ADD PUSH2 0x21F1 JUMP JUMPDEST SWAP3 POP PUSH2 0x238B PUSH1 0x80 DUP9 ADD PUSH2 0x21F1 JUMP JUMPDEST SWAP2 POP PUSH2 0x2399 PUSH1 0xA0 DUP9 ADD PUSH2 0x21F1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1FFE DUP2 PUSH2 0x2229 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x242B JUMPI PUSH2 0x242B PUSH2 0x23DB JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x2456 JUMPI PUSH2 0x2456 PUSH2 0x23DB JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2472 JUMPI PUSH2 0x2472 PUSH2 0x23DB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1FFE DUP2 PUSH2 0x2299 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24AF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2497 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xB0C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x24D2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2494 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24FB DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2494 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC8 0xED LOG2 SWAP5 0xBB PUSH13 0x3A5C5FE38FD8EEFE908C0B3FD7 PUSH25 0x822BACD5A080DE645B9D1F2264736F6C634300080900330000 ",
                            "sourceMap": "440:5961:52:-:0;;;1300:390;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;728:12:30;:28;;-1:-1:-1;;;;;;874:18:28;-1:-1:-1;;;;;728:28:30;;874:18:28;-1:-1:-1;;;874:18:28;;;587:42:3;1574:21:52;1597:8;1607:7;1616:12;3589:47:44::1;1574:21:52::0;3589:24:44::1;:47::i;:::-;-1:-1:-1::0;3646:7:44::1;:18:::0;;;;3674:6:::1;:16:::0;;-1:-1:-1;;;;;;3674:16:44::1;-1:-1:-1::0;;;;;3674:16:44;;::::1;;::::0;;737:9:1;:22;;-1:-1:-1;;;;;;;;737:22:1;;;;;;;;;;;;;;-1:-1:-1;1644:39:52::2;1665:17:::0;1644:20:::2;:39::i;:::-;1300:390:::0;;;;;440:5961;;4015:198:44;4100:20;:46;;-1:-1:-1;;;;;;4100:46:44;-1:-1:-1;;;;;4100:46:44;;;;;;;;4161:45;;951:50:66;;;4161:45:44;;939:2:66;924:18;4161:45:44;;;;;;;4015:198;:::o;6147:252:52:-;-1:-1:-1;;;;;6233:33:52;;6225:71;;;;-1:-1:-1;;;6225:71:52;;1214:2:66;6225:71:52;;;1196:21:66;1253:2;1233:18;;;1226:30;1292:27;1272:18;;;1265:55;1337:18;;6225:71:52;;;;;;;;6306:16;:38;;-1:-1:-1;;;;;;6306:38:52;-1:-1:-1;;;;;6306:38:52;;;;;;;;6359:33;;;;-1:-1:-1;;6359:33:52;6147:252;:::o;14:177:66:-;93:13;;-1:-1:-1;;;;;135:31:66;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:606::-;301:6;309;317;325;333;386:3;374:9;365:7;361:23;357:33;354:53;;;403:1;400;393:12;354:53;426:40;456:9;426:40;:::i;:::-;509:2;494:18;;488:25;416:50;;-1:-1:-1;;;;;;542:30:66;;532:41;;522:69;;587:1;584;577:12;522:69;655:2;640:18;;634:25;610:5;;-1:-1:-1;634:25:66;-1:-1:-1;678:49:66;723:2;708:18;;678:49;:::i;:::-;668:59;;746:50;791:3;780:9;776:19;746:50;:::i;:::-;736:60;;196:606;;;;;;;;:::o;1012:349::-;440:5961:52;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_callOptionalReturn_1654": {
                                    "entryPoint": 7904,
                                    "id": 1654,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_hasEnoughTimeElapsedToBridge_8615": {
                                    "entryPoint": 7266,
                                    "id": 8615,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_postEntranceReset_5436": {
                                    "entryPoint": null,
                                    "id": 5436,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_5420": {
                                    "entryPoint": 7385,
                                    "id": 5420,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_5428": {
                                    "entryPoint": null,
                                    "id": 5428,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_setCrossDomainAdmin_9463": {
                                    "entryPoint": 7668,
                                    "id": 9463,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setEnableDeposits_8447": {
                                    "entryPoint": 7087,
                                    "id": 8447,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_setMinimumBridgingDelay_8389": {
                                    "entryPoint": 6506,
                                    "id": 8389,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_verifyCallResult_1950": {
                                    "entryPoint": 8581,
                                    "id": 1950,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@_whitelistToken_8426": {
                                    "entryPoint": 6615,
                                    "id": 8426,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@bridgeTokens_9439": {
                                    "entryPoint": 3532,
                                    "id": 9439,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@canBridge_8632": {
                                    "entryPoint": 3433,
                                    "id": 8632,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@chainId_8260": {
                                    "entryPoint": null,
                                    "id": 8260,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@crossDomainAdmin_9269": {
                                    "entryPoint": null,
                                    "id": 9269,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@deposit_8581": {
                                    "entryPoint": 4463,
                                    "id": 8581,
                                    "parameterSlots": 6,
                                    "returnSlots": 0
                                },
                                "@functionCallWithValue_1816": {
                                    "entryPoint": 8197,
                                    "id": 1816,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "@functionCall_1746": {
                                    "entryPoint": 8172,
                                    "id": 1746,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@getCrossDomainMessenger_152": {
                                    "entryPoint": null,
                                    "id": 152,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@getCurrentTime_5596": {
                                    "entryPoint": 1432,
                                    "id": 5596,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@isContract_1675": {
                                    "entryPoint": null,
                                    "id": 1675,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@isWhitelistToken_8597": {
                                    "entryPoint": null,
                                    "id": 8597,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@l1Weth_8262": {
                                    "entryPoint": null,
                                    "id": 8262,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@messenger_100": {
                                    "entryPoint": null,
                                    "id": 100,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@minimumBridgingDelay_8280": {
                                    "entryPoint": null,
                                    "id": 8280,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@numberOfDeposits_8264": {
                                    "entryPoint": null,
                                    "id": 8264,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@safeTransferFrom_1488": {
                                    "entryPoint": 7519,
                                    "id": 1488,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@setCrossDomainAdmin_9316": {
                                    "entryPoint": 5913,
                                    "id": 9316,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setCurrentTime_5571": {
                                    "entryPoint": 1263,
                                    "id": 5571,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setEnableDeposits_9367": {
                                    "entryPoint": 2834,
                                    "id": 9367,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@setMinimumBridgingDelay_9330": {
                                    "entryPoint": 1631,
                                    "id": 9330,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@timerAddress_5530": {
                                    "entryPoint": null,
                                    "id": 5530,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@whitelistToken_9350": {
                                    "entryPoint": 2233,
                                    "id": 9350,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@whitelistedTokens_8278": {
                                    "entryPoint": null,
                                    "id": 8278,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 8928,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 9150,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_addresst_address": {
                                    "entryPoint": 8782,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64": {
                                    "entryPoint": 9012,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 6
                                },
                                "abi_decode_tuple_t_addresst_bool": {
                                    "entryPoint": 8871,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_uint32": {
                                    "entryPoint": 8957,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_bool_fromMemory": {
                                    "entryPoint": 9335,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 8664,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": 9125,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64": {
                                    "entryPoint": 8718,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint64": {
                                    "entryPoint": 8689,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 9408,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint32_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint32_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 9436,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 11,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 9311,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint64": {
                                    "entryPoint": 9267,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_uint64": {
                                    "entryPoint": 9226,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 9364,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 9179,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_address": {
                                    "entryPoint": 8745,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "validator_revert_bool": {
                                    "entryPoint": 8857,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:15735:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "182:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "190:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "178:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "315:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "361:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "370:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "373:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "363:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "363:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "363:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "336:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "345:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "332:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "332:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "357:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "328:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "328:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "325:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "386:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "409:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "396:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "396:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "386:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "281:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "292:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "304:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "245:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "531:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "541:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "553:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "564:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "549:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "549:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "541:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "583:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "594:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "576:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "576:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "576:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "500:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "511:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "522:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "430:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "660:123:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "670:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "692:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "679:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "679:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "670:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "761:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "770:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "773:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "763:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "763:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "763:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "721:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "732:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "739:18:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "728:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "728:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "718:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "718:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "711:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "711:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "708:69:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "639:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "650:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "612:171:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "857:115:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "903:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "912:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "915:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "905:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "905:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "905:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "878:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "887:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "874:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "874:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "899:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "870:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "870:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "867:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "928:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "956:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "938:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "938:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "928:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "823:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "834:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "846:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "788:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1022:109:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1109:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1118:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1121:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1111:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1111:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1111:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1045:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1056:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1063:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1052:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1052:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1042:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1042:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1035:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1035:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1032:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1011:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "977:154:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1240:425:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1286:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1295:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1298:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1288:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1288:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1288:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1261:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1270:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1257:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1257:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1282:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1253:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1253:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1250:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1311:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1337:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1324:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1324:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1315:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1381:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1356:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1356:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1356:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1396:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1406:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1396:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1420:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1452:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1463:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1448:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1448:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1435:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1435:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1424:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1501:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1476:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1476:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1476:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1518:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1528:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1518:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1544:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1576:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1587:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1572:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1572:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1559:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1559:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1548:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1625:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1600:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1600:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1600:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1642:17:66",
                                                            "value": {
                                                                "name": "value_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1652:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1642:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1190:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1201:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1213:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1221:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1229:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1136:529:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1712:76:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1766:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1775:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1778:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1768:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1768:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1768:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1735:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1756:5:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1749:6:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1749:13:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1742:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1742:21:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1732:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1732:32:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1725:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1725:40:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1722:60:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1701:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1670:118:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1877:298:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1923:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1932:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1935:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1925:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1925:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1925:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1898:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1907:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1894:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1894:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1919:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1890:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1890:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1887:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1948:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1974:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1961:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1961:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1952:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2018:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1993:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1993:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1993:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2033:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2043:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2033:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2057:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2089:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2100:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2085:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2085:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2072:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2072:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2061:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2135:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2113:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2113:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2113:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2152:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2162:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2152:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1835:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1846:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1858:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1866:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1793:382:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2250:177:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2296:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2305:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2308:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2298:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2298:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2298:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2271:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2280:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2267:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2267:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2292:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2263:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2263:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2260:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2321:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2347:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2334:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2334:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2325:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2391:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2366:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2366:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2366:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2406:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2416:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2406:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2216:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2227:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2239:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2180:247:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2527:92:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2537:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2549:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2560:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2545:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2545:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2537:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2579:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2604:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2597:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2597:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2590:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2590:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2572:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2572:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2572:41:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2496:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2507:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2518:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2432:187:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2710:333:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2756:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2765:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2768:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2758:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2758:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2758:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2731:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2740:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2727:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2727:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2752:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2723:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2723:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2720:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2781:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2807:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2794:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2794:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2785:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2851:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2826:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2826:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2826:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2866:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2876:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2866:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2890:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2922:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2933:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2918:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2918:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2905:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2905:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2894:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2995:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3004:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3007:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2997:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2997:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2997:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2959:7:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2972:7:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2981:10:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2968:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2968:24:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2956:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2956:37:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2949:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2949:45:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2946:65:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3020:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3030:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3020:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2668:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2679:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2691:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2699:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2624:419:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3147:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3157:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3169:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3180:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3165:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3165:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3157:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3199:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3214:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3222:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3210:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3210:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3192:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3192:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3192:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3116:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3127:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3138:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3048:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3405:523:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3452:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3461:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3464:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3454:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3454:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3454:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3426:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3435:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3422:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3422:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3447:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3418:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3418:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3415:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3477:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3503:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3490:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3490:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3481:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3547:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3522:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3522:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3522:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3562:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3572:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3562:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3586:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3618:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3629:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3614:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3614:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3601:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3601:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3590:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3667:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3642:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3642:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3642:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3684:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3694:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3684:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3710:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3737:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3748:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3733:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3733:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3720:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3720:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3710:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3761:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3793:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3804:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3789:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3789:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3771:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3771:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3761:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3817:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3849:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3860:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3845:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3845:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3827:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3827:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3817:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3874:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3906:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3917:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3902:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3902:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3884:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3884:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3874:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3331:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3342:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3354:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3362:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3370:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3378:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3386:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3394:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3253:675:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4110:326:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4120:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4132:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4143:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4128:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4128:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4120:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4156:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4166:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4160:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4224:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4239:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4247:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4235:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4235:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4217:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4217:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4217:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4271:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4282:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4267:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4267:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4291:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4299:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4287:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4287:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4260:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4260:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4260:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4323:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4334:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4319:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4319:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4343:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4351:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4339:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4339:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4312:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4312:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4312:59:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4391:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4402:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4387:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4387:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4421:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4414:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4414:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4407:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4407:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4380:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4380:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4380:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4055:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4066:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4074:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4082:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4090:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4101:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3933:503:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4522:103:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4568:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4577:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4580:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4570:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4570:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4570:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4543:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4552:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4539:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4539:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4564:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4535:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4535:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4532:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4593:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4609:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4603:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4603:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4593:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4488:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4499:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4511:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4441:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4804:236:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4821:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4832:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4814:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4814:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4814:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4855:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4866:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4851:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4851:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4871:2:66",
                                                                        "type": "",
                                                                        "value": "46"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4844:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4844:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4844:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4894:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4905:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4890:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4890:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f564d5f58434841494e3a206d657373656e67657220636f6e74726163742075",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4910:34:66",
                                                                        "type": "",
                                                                        "value": "OVM_XCHAIN: messenger contract u"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4883:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4883:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4883:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4965:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4976:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4961:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4961:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6e61757468656e74696361746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4981:16:66",
                                                                        "type": "",
                                                                        "value": "nauthenticated"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4954:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4954:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4954:44:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5007:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5019:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5030:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5015:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5015:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5007:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4781:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4795:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4630:410:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5126:170:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5172:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5181:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5184:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5174:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5174:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5174:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5147:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5156:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5143:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5143:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5168:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5139:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5139:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5136:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5197:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5216:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5210:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5210:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5201:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5260:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5235:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5235:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5235:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5275:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5285:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5275:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5092:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5103:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5115:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5045:251:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5475:238:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5492:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5503:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5485:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5485:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5485:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5526:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5537:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5522:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5522:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5542:2:66",
                                                                        "type": "",
                                                                        "value": "48"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5515:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5515:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5515:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5565:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5576:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5561:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5561:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f73",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5581:34:66",
                                                                        "type": "",
                                                                        "value": "OVM_XCHAIN: wrong sender of cros"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5554:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5554:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5554:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5636:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5647:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5632:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5632:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "732d646f6d61696e206d657373616765",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5652:18:66",
                                                                        "type": "",
                                                                        "value": "s-domain message"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5625:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5625:46:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5625:46:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5680:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5692:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5703:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5688:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5688:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5680:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5452:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5466:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5301:412:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5892:174:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5909:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5920:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5902:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5902:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5902:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5943:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5954:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5939:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5939:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5959:2:66",
                                                                        "type": "",
                                                                        "value": "24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5932:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5932:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5932:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5982:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5993:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5978:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5978:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "63616e277420627269646765207a65726f20746f6b656e73",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5998:26:66",
                                                                        "type": "",
                                                                        "value": "can't bridge zero tokens"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5971:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5971:54:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5971:54:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6034:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6046:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6057:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6042:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6042:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6034:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5869:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5883:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5718:348:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6245:237:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6262:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6273:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6255:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6255:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6255:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6296:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6307:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6292:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6292:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6312:2:66",
                                                                        "type": "",
                                                                        "value": "47"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6285:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6285:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6285:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6335:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6346:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6331:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6331:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6e6f6e2d77686974656c697374656420746f6b656e206f72206c617374206272",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6351:34:66",
                                                                        "type": "",
                                                                        "value": "non-whitelisted token or last br"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6324:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6324:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6324:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6406:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6417:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6402:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6402:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6964676520746f6f20726563656e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6422:17:66",
                                                                        "type": "",
                                                                        "value": "idge too recent"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6395:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6395:45:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6395:45:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6449:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6461:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6472:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6457:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6457:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6449:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6222:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6236:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6071:411:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6770:382:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6780:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "6790:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6784:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6848:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6863:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6871:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6859:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6859:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6841:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6841:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6841:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6895:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6906:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6891:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6891:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6915:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6923:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6911:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6911:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6884:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6884:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6884:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6947:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6958:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6943:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6943:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6963:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6936:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6936:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6936:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6990:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7001:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6986:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6986:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7010:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7018:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7006:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7006:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6979:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6979:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6979:51:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7050:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7061:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7046:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7046:19:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7067:3:66",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7039:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7039:32:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7039:32:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7091:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7102:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7087:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7087:19:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7108:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7080:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7080:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7080:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7119:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7131:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7142:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7127:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7127:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7119:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint32_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint32_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6715:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6726:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6734:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6742:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6750:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6761:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6487:665:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7285:136:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7295:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7307:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7318:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7303:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7303:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7295:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7337:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7348:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7330:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7330:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7330:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7375:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7386:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7371:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7371:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7395:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7403:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7391:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7391:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7364:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7364:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7364:51:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7246:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7257:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7265:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7276:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7157:264:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7600:170:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7617:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7628:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7610:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7610:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7610:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7651:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7662:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7647:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7647:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7667:2:66",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7640:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7640:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7640:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7690:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7701:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7686:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7686:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "436f6e74726163742069732064697361626c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7706:22:66",
                                                                        "type": "",
                                                                        "value": "Contract is disabled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7679:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7679:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7679:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7738:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7750:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7761:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7746:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7746:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7738:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7577:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7591:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7426:344:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7949:179:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7966:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7977:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7959:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7959:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7959:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8000:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8011:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7996:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7996:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8016:2:66",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7989:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7989:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7989:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8039:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8050:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8035:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8035:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6465706f73697420746f6b656e206e6f742077686974656c6973746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8055:31:66",
                                                                        "type": "",
                                                                        "value": "deposit token not whitelisted"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8028:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8028:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8028:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8096:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8108:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8119:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8104:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8104:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8096:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7926:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7940:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7775:353:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8307:180:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8324:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8335:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8317:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8317:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8317:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8358:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8369:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8354:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8354:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8374:2:66",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8347:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8347:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8347:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8397:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8408:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8393:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8393:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "736c6f7752656c6179466565506374206d757374206265203c3d20323525",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8413:32:66",
                                                                        "type": "",
                                                                        "value": "slowRelayFeePct must be <= 25%"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8386:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8386:60:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8386:60:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8455:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8467:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8478:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8463:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8463:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8455:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8284:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8298:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8133:354:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8666:223:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8683:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8694:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8676:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8676:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8676:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8717:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8728:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8713:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8713:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8733:2:66",
                                                                        "type": "",
                                                                        "value": "33"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8706:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8706:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8706:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8756:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8767:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8752:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8752:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "696e7374616e7452656c6179466565506374206d757374206265203c3d203235",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8772:34:66",
                                                                        "type": "",
                                                                        "value": "instantRelayFeePct must be <= 25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8745:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8745:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8745:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8827:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8838:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8823:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8823:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "25",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8843:3:66",
                                                                        "type": "",
                                                                        "value": "%"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8816:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8816:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8816:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8856:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8868:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8879:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8864:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8864:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8856:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8643:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8657:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8492:397:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8926:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8943:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8946:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8936:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8936:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8936:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9040:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9043:4:66",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9033:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9033:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9033:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9064:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9067:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9057:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9057:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9057:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "8894:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9131:181:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9141:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9151:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9145:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9178:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9193:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9196:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9189:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9189:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9182:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9208:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9223:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9226:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9219:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9219:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9212:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9254:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9256:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9256:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9256:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9244:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9249:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9241:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9241:12:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9238:38:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9285:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9297:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9302:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9293:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9293:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9285:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9113:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9116:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9122:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9083:229:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9364:189:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9374:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9384:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9378:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9411:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9426:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9429:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9422:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9422:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9415:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9441:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9456:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9459:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9452:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9452:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9445:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9496:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9498:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9498:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9498:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9477:3:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9486:2:66"
                                                                            },
                                                                            {
                                                                                "name": "y_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9490:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9482:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9482:12:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9474:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9474:21:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9471:47:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9527:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9538:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9543:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9534:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9534:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9527:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9347:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9350:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9356:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9317:236:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9732:178:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9749:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9760:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9742:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9742:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9742:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9783:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9794:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9779:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9779:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9799:2:66",
                                                                        "type": "",
                                                                        "value": "28"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9772:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9772:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9772:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9822:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9833:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9818:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9818:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6465706f736974206d696e656420616674657220646561646c696e65",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9838:30:66",
                                                                        "type": "",
                                                                        "value": "deposit mined after deadline"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9811:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9811:58:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9811:58:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9878:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9890:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9901:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9886:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9886:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9878:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9709:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9723:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9558:352:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10089:177:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10106:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10117:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10099:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10099:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10099:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10140:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10151:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10136:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10136:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10156:2:66",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10129:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10129:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10129:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10179:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10190:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10175:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10175:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6d73672e76616c7565206d757374206d6174636820616d6f756e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10195:29:66",
                                                                        "type": "",
                                                                        "value": "msg.value must match amount"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10168:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10168:57:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10168:57:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10234:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10246:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10257:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10242:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10242:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10234:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10066:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10080:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9915:351:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10618:631:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10628:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10640:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10651:3:66",
                                                                        "type": "",
                                                                        "value": "320"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10636:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10636:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10628:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10671:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10682:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10664:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10664:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10664:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10709:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10720:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10705:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10705:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10725:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10698:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10698:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10698:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10741:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10751:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10745:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10813:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10824:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10809:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10809:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10833:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10841:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10829:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10829:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10802:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10802:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10802:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10865:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10876:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10861:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10861:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10885:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10893:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10881:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10881:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10854:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10854:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10854:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10917:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10928:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10913:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10913:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10938:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10946:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10934:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10934:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10906:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10906:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10906:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10970:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10981:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10966:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10966:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value5",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10991:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10999:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10987:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10987:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10959:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10959:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10959:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11023:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11034:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11019:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11019:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11040:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11012:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11012:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11012:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11056:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "11066:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11060:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11104:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11115:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11100:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11100:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value7",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11125:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11133:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11121:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11121:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11093:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11093:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11093:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11157:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11168:3:66",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11153:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11153:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value8",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11178:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11186:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11174:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11174:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11146:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11146:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11146:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11210:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11221:3:66",
                                                                                "type": "",
                                                                                "value": "288"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11206:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11206:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value9",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11231:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11239:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11227:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11227:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11199:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11199:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11199:44:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10515:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value9",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10526:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value8",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10534:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10542:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10550:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10558:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10566:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10574:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10582:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10590:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10598:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10609:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10271:978:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11302:80:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "11329:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11331:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "11331:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "11331:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11318:1:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11325:1:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11321:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11321:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11315:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11315:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11312:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11360:16:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11371:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11374:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11367:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11367:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11360:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11285:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11288:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11294:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11254:128:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11570:319:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11580:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11592:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11603:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11588:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11588:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11580:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11616:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "11626:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11620:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11684:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11699:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11707:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11695:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11695:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11677:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11677:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11677:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11731:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11742:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11727:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11727:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11751:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11759:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11747:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11747:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11720:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11720:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11720:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11783:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11794:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11779:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11779:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11803:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11811:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11799:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11799:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11772:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11772:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11772:59:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11851:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11862:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11847:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11847:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11871:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11879:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11867:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11867:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11840:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11840:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11840:43:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11515:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11526:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11534:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11542:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11550:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11561:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11387:502:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12017:184:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12027:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12039:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12050:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12035:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12035:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12027:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12069:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12084:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12092:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12080:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12080:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12062:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12062:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12062:74:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12156:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12167:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12152:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12152:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "12186:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "12179:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "12179:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12172:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12172:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12145:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12145:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12145:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11978:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11989:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11997:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12008:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11894:307:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12380:181:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12397:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12408:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12390:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12390:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12390:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12431:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12442:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12427:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12427:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12447:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12420:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12420:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12420:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12470:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12481:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12466:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12466:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12486:33:66",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12459:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12459:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12459:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12529:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12541:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12552:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12537:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12537:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12529:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12357:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12371:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12206:355:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12723:241:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12733:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12745:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12756:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12741:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12741:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12733:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "12768:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "12778:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "12772:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12836:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12851:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12859:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12847:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12847:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12829:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12829:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12829:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12883:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12894:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12879:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12879:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12903:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12911:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12899:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12899:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12872:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12872:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12872:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12935:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12946:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12931:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12931:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12951:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12924:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12924:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12924:34:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12676:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12687:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12695:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12703:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12714:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12566:398:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13143:175:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13160:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13171:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13153:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13153:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13153:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13194:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13205:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13190:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13190:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13210:2:66",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13183:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13183:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13183:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13233:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13244:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13229:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13229:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4261642062726964676520726f757465722061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13249:27:66",
                                                                        "type": "",
                                                                        "value": "Bad bridge router address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13222:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13222:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13222:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13286:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13298:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13309:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13294:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13294:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13286:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13120:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13134:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12969:349:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13401:167:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "13447:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "13456:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "13459:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13449:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "13449:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "13449:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13422:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13431:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13418:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13418:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13443:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13414:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13414:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "13411:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13472:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13491:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13485:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13485:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13476:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13532:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13510:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13510:28:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13510:28:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13547:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13557:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13547:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13367:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13378:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13390:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13323:245:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13747:232:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13764:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13775:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13757:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13757:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13757:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13798:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13809:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13794:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13794:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13814:2:66",
                                                                        "type": "",
                                                                        "value": "42"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13787:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13787:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13787:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13837:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13848:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13833:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13833:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13853:34:66",
                                                                        "type": "",
                                                                        "value": "SafeERC20: ERC20 operation did n"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13826:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13826:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13826:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13908:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13919:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13904:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13904:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6f742073756363656564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13924:12:66",
                                                                        "type": "",
                                                                        "value": "ot succeed"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13897:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13897:40:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13897:40:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13946:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13958:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13969:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13954:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13954:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13946:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13724:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13738:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13573:406:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14158:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14175:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14186:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14168:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14168:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14168:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14209:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14220:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14205:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14205:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14225:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14198:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14198:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14198:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14248:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14259:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14244:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14244:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14264:34:66",
                                                                        "type": "",
                                                                        "value": "Address: insufficient balance fo"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14237:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14237:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14237:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14319:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14330:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14315:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14315:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "722063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14335:8:66",
                                                                        "type": "",
                                                                        "value": "r call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14308:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14308:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14308:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14353:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14365:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14376:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14361:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14361:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14353:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14135:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14149:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13984:402:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14565:179:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14582:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14593:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14575:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14575:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14575:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14616:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14627:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14612:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14612:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14632:2:66",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14605:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14605:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14605:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14655:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14666:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14651:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14651:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14671:31:66",
                                                                        "type": "",
                                                                        "value": "Address: call to non-contract"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14644:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14644:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14644:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14712:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14724:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14735:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14720:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14720:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14712:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14542:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14556:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14391:353:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14802:205:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14812:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "14821:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14816:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14881:63:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14906:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14911:1:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "14902:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "14902:11:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "14925:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "14930:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "14921:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "14921:11:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "14915:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "14915:18:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14895:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14895:39:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14895:39:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14842:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14845:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14839:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14839:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14853:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "14855:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "14864:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "14867:2:66",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14860:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14860:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14855:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14835:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "14831:113:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14970:31:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14983:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14988:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "14979:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "14979:16:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "14997:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14972:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14972:27:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14972:27:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14959:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14962:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14956:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14956:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "14953:48:66"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14780:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14785:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14790:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14749:258:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15149:137:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15159:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15179:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15173:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15173:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15163:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15221:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15229:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15217:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15217:17:66"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15236:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15241:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15195:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15195:53:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15195:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15257:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15268:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15273:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15264:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15264:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15257:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15125:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15130:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15141:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15012:274:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15412:321:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15429:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15440:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15422:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15422:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15422:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15452:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15472:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15466:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15466:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15456:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15499:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15510:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15495:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15495:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15515:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15488:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15488:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15488:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15557:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15565:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15553:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15553:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15574:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15585:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15570:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15570:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15590:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15531:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15531:66:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15531:66:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15606:121:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15622:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15641:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15649:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15637:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15637:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "15654:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15633:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15633:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15618:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15618:104:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15724:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15614:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15614:113:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15606:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15381:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15392:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15403:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15291:442:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_addresst_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffffffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint64(add(headStart, 96))\n        value4 := abi_decode_uint64(add(headStart, 128))\n        value5 := abi_decode_uint64(add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"OVM_XCHAIN: messenger contract u\")\n        mstore(add(headStart, 96), \"nauthenticated\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"OVM_XCHAIN: wrong sender of cros\")\n        mstore(add(headStart, 96), \"s-domain message\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"can't bridge zero tokens\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"non-whitelisted token or last br\")\n        mstore(add(headStart, 96), \"idge too recent\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint32_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint32_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, 0xffffffff))\n        mstore(add(headStart, 128), 160)\n        mstore(add(headStart, 160), 0)\n        tail := add(headStart, 192)\n    }\n    function abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Contract is disabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"deposit token not whitelisted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"slowRelayFeePct must be <= 25%\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"instantRelayFeePct must be <= 25\")\n        mstore(add(headStart, 96), \"%\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint64(x, y) -> diff\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function checked_add_t_uint64(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"deposit mined after deadline\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"msg.value must match amount\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed(headStart, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 320)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), and(value5, _1))\n        mstore(add(headStart, 192), value6)\n        let _2 := 0xffffffffffffffff\n        mstore(add(headStart, 224), and(value7, _2))\n        mstore(add(headStart, 256), and(value8, _2))\n        mstore(add(headStart, 288), and(value9, _2))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 96), and(value3, _1))\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Bad bridge router address\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n        mstore(add(headStart, 96), \"ot succeed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r call\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600436106101295760003560e01c806363635fd9116100a5578063b2d6f4d411610074578063daf9c21011610059578063daf9c21014610386578063de7eba7814610465578063fbb9fcf71461048557600080fd5b8063b2d6f4d414610339578063c2d9dca91461037357600080fd5b806363635fd9146102bd5780639a8a0592146102ed5780639bfd2cdc14610303578063a1244c671461032357600080fd5b80632ec35b31116100fc5780634dedca28116100e15780634dedca28146102505780635285e05814610270578063563c7f601461029d57600080fd5b80632ec35b31146101f75780633cb747bf1461021757600080fd5b8063146bf4b11461012e5780631c39c38d1461018557806322f8e566146101b257806329cb924d146101d4575b600080fd5b34801561013a57600080fd5b5060025461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561019157600080fd5b5060005461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101be57600080fd5b506101d26101cd3660046121d8565b6104ef565b005b3480156101e057600080fd5b506101e9610598565b60405190815260200161017c565b34801561020357600080fd5b506101d261021236600461220e565b61065f565b34801561022357600080fd5b5060055461015b9068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561025c57600080fd5b506101d261026b36600461224e565b6108b9565b34801561027c57600080fd5b5060065461015b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102a957600080fd5b506101d26102b83660046122a7565b610b12565b3480156102c957600080fd5b506102dd6102d83660046122e0565b610d69565b604051901515815260200161017c565b3480156102f957600080fd5b506101e960015481565b34801561030f57600080fd5b506101d261031e3660046122fd565b610dcc565b34801561032f57600080fd5b506101e960035481565b34801561034557600080fd5b5060055461035a9067ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161017c565b6101d2610381366004612334565b61116f565b34801561039257600080fd5b5061041c6103a13660046122e0565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff909116918301919091521515606082015260800161017c565b34801561047157600080fd5b506101d26104803660046122e0565b611719565b34801561049157600080fd5b506102dd6104a03660046122e0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff1661051157600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b15801561057d57600080fd5b505af1158015610591573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff161561065a5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561061d57600080fd5b505afa158015610631573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065591906123a5565b905090565b504290565b60065473ffffffffffffffffffffffffffffffffffffffff166106a460055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156107d157600080fd5b505afa1580156107e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080991906123be565b73ffffffffffffffffffffffffffffffffffffffff16146108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d65737361676500000000000000000000000000000000606482015260840161075a565b6108b58261196a565b5050565b60065473ffffffffffffffffffffffffffffffffffffffff166108fe60055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e74696361746564000000000000000000000000000000000000606482015260840161075a565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2657600080fd5b505afa158015610a3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5e91906123be565b73ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d65737361676500000000000000000000000000000000606482015260840161075a565b610b0c8484846119d7565b50505050565b60065473ffffffffffffffffffffffffffffffffffffffff16610b5760055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e74696361746564000000000000000000000000000000000000606482015260840161075a565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7f57600080fd5b505afa158015610c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb791906123be565b73ffffffffffffffffffffffffffffffffffffffff1614610d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d65737361676500000000000000000000000000000000606482015260840161075a565b610d648383611baf565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1615158015610dc65750610dc682611c62565b92915050565b610dd4611cd9565b610e01600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b158015610e6b57600080fd5b505af1158015610e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea391906123a5565b905060008111610f0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e730000000000000000604482015260640161075a565b610f1883610d69565b610fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e740000000000000000000000000000000000606482015260840161075a565b610fac610598565b73ffffffffffffffffffffffffffffffffffffffff8481166000818152600460208190526040808320600101805467ffffffffffffffff9790971674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff8816811790915590517fa3a7954800000000000000000000000000000000000000000000000000000000815291820193909352918316939092169290921760248301526044820183905263ffffffff8416606483015260a0608483015260a48201527342000000000000000000000000000000000000109063a3a795489060c401600060405180830381600087803b1580156110ba57600080fd5b505af11580156110ce573d6000803e3d6000fd5b50506040805184815263ffffffff8616602082015233935073ffffffffffffffffffffffffffffffffffffffff871692507f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a3506108b5600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff16611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c6564000000000000000000000000604482015260640161075a565b61122b611cd9565b611258600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c6973746564000000604482015260640161075a565b6703782dace9d900008467ffffffffffffffff161115611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d203235250000604482015260640161075a565b6703782dace9d900008367ffffffffffffffff161115611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f2500000000000000000000000000000000000000000000000000000000000000606482015260840161075a565b6114336102588361240a565b67ffffffffffffffff16611445610598565b1015801561146f575061145a82610258612433565b67ffffffffffffffff1661146c610598565b11155b6114d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e6500000000604482015260640161075a565b60025473ffffffffffffffffffffffffffffffffffffffff878116600090815260046020526040902054811691161480156115105750600034115b156115e45784341461157e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e740000000000604482015260640161075a565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156115c657600080fd5b505af11580156115da573d6000803e3d6000fd5b5050505050611606565b61160673ffffffffffffffffffffffffffffffffffffffff8716333088611d5f565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a16001600360008282546116c6919061245f565b909155506117109050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60065473ffffffffffffffffffffffffffffffffffffffff1661175e60055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e74696361746564000000000000000000000000000000000000606482015260840161075a565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561188657600080fd5b505afa15801561189a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118be91906123be565b73ffffffffffffffffffffffffffffffffffffffff1614611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d65737361676500000000000000000000000000000000606482015260840161075a565b6108b582611df4565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001611a22610598565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd8383611b61610598565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120600101549091611cc09167ffffffffffffffff918216917401000000000000000000000000000000000000000090910416612433565b67ffffffffffffffff16611cd2610598565b1192915050565b60005474010000000000000000000000000000000000000000900460ff16611d5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161075a565b565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610b0c908590611ee0565b73ffffffffffffffffffffffffffffffffffffffff8116611e71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4261642062726964676520726f75746572206164647265737300000000000000604482015260640161075a565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b6000611f42826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611fec9092919063ffffffff16565b805190915015610d645780806020019051810190611f609190612477565b610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161075a565b6060611ffb8484600085612005565b90505b9392505050565b606082471015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161075a565b843b6120ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161075a565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161212891906124c0565b60006040518083038185875af1925050503d8060008114612165576040519150601f19603f3d011682016040523d82523d6000602084013e61216a565b606091505b509150915061217a828286612185565b979650505050505050565b60608315612194575081611ffe565b8251156121a45782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a91906124dc565b6000602082840312156121ea57600080fd5b5035919050565b803567ffffffffffffffff8116811461220957600080fd5b919050565b60006020828403121561222057600080fd5b611ffe826121f1565b73ffffffffffffffffffffffffffffffffffffffff8116811461224b57600080fd5b50565b60008060006060848603121561226357600080fd5b833561226e81612229565b9250602084013561227e81612229565b9150604084013561228e81612229565b809150509250925092565b801515811461224b57600080fd5b600080604083850312156122ba57600080fd5b82356122c581612229565b915060208301356122d581612299565b809150509250929050565b6000602082840312156122f257600080fd5b8135611ffe81612229565b6000806040838503121561231057600080fd5b823561231b81612229565b9150602083013563ffffffff811681146122d557600080fd5b60008060008060008060c0878903121561234d57600080fd5b863561235881612229565b9550602087013561236881612229565b94506040870135935061237d606088016121f1565b925061238b608088016121f1565b915061239960a088016121f1565b90509295509295509295565b6000602082840312156123b757600080fd5b5051919050565b6000602082840312156123d057600080fd5b8151611ffe81612229565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8381169083168181101561242b5761242b6123db565b039392505050565b600067ffffffffffffffff808316818516808303821115612456576124566123db565b01949350505050565b60008219821115612472576124726123db565b500190565b60006020828403121561248957600080fd5b8151611ffe81612299565b60005b838110156124af578181015183820152602001612497565b83811115610b0c5750506000910152565b600082516124d2818460208701612494565b9190910192915050565b60208152600082518060208401526124fb816040850160208701612494565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220c8eda294bb6c3a5c5fe38fd8eefe908c0b3fd778822bacd5a080de645b9d1f2264736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x129 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x63635FD9 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xB2D6F4D4 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDAF9C210 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDAF9C210 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xDE7EBA78 EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0xFBB9FCF7 EQ PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB2D6F4D4 EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0xC2D9DCA9 EQ PUSH2 0x373 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x63635FD9 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x2ED JUMPI DUP1 PUSH4 0x9BFD2CDC EQ PUSH2 0x303 JUMPI DUP1 PUSH4 0xA1244C67 EQ PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x4DEDCA28 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x4DEDCA28 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x5285E058 EQ PUSH2 0x270 JUMPI DUP1 PUSH4 0x563C7F60 EQ PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 EQ PUSH2 0x1F7 JUMPI DUP1 PUSH4 0x3CB747BF EQ PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x146BF4B1 EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x1D4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x21D8 JUMP JUMPDEST PUSH2 0x4EF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH2 0x598 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x203 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0x220E JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x15B SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x26B CALLDATASIZE PUSH1 0x4 PUSH2 0x224E JUMP JUMPDEST PUSH2 0x8B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x15B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22A7 JUMP JUMPDEST PUSH2 0xB12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DD PUSH2 0x2D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E0 JUMP JUMPDEST PUSH2 0xD69 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x31E CALLDATASIZE PUSH1 0x4 PUSH2 0x22FD JUMP JUMPDEST PUSH2 0xDCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x35A SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x17C JUMP JUMPDEST PUSH2 0x1D2 PUSH2 0x381 CALLDATASIZE PUSH1 0x4 PUSH2 0x2334 JUMP JUMPDEST PUSH2 0x116F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x392 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41C PUSH2 0x3A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E0 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 DUP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x17C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D2 PUSH2 0x480 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E0 JUMP JUMPDEST PUSH2 0x1719 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x491 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DD PUSH2 0x4A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x22E0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x22F8E56600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x591 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x631 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x655 SWAP2 SWAP1 PUSH2 0x23A5 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6A4 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x763 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x809 SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x8B5 DUP3 PUSH2 0x196A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FE PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA5E SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0xB0C DUP5 DUP5 DUP5 PUSH2 0x19D7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB57 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC11 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCB7 SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xD5A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0xD64 DUP4 DUP4 PUSH2 0x1BAF JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 ISZERO PUSH2 0xDC6 JUMPI POP PUSH2 0xDC6 DUP3 PUSH2 0x1C62 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xDD4 PUSH2 0x1CD9 JUMP JUMPDEST PUSH2 0xE01 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE7F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEA3 SWAP2 SWAP1 PUSH2 0x23A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0xF0F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x63616E277420627269646765207A65726F20746F6B656E730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0xF18 DUP4 PUSH2 0xD69 JUMP JUMPDEST PUSH2 0xFA4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F6E2D77686974656C697374656420746F6B656E206F72206C617374206272 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964676520746F6F20726563656E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0xFAC PUSH2 0x598 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP8 SWAP1 SWAP8 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD PUSH32 0xA3A7954800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 AND SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0xA4 DUP3 ADD MSTORE PUSH20 0x4200000000000000000000000000000000000010 SWAP1 PUSH4 0xA3A79548 SWAP1 PUSH1 0xC4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 POP PUSH32 0x95B5EC953BD38FBAA6F859725352BF73202C155A6809E5622C95CEEF331EAC6C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x8B5 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP6 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1223 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742069732064697361626C6564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x122B PUSH2 0x1CD9 JUMP JUMPDEST PUSH2 0x1258 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1309 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F73697420746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1385 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6F7752656C6179466565506374206D757374206265203C3D203235250000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1427 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E7374616E7452656C6179466565506374206D757374206265203C3D203235 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x1433 PUSH2 0x258 DUP4 PUSH2 0x240A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1445 PUSH2 0x598 JUMP JUMPDEST LT ISZERO DUP1 ISZERO PUSH2 0x146F JUMPI POP PUSH2 0x145A DUP3 PUSH2 0x258 PUSH2 0x2433 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x146C PUSH2 0x598 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0x14D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F736974206D696E656420616674657220646561646C696E6500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP2 AND EQ DUP1 ISZERO PUSH2 0x1510 JUMPI POP PUSH1 0x0 CALLVALUE GT JUMPDEST ISZERO PUSH2 0x15E4 JUMPI DUP5 CALLVALUE EQ PUSH2 0x157E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206D757374206D6174636820616D6F756E740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1606 JUMP JUMPDEST PUSH2 0x1606 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP9 PUSH2 0x1D5F JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP7 DUP8 MSTORE SWAP1 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP12 DUP4 AND SWAP1 DUP6 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP1 DUP6 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH32 0xAB77617F2B9BDBB101FC328E585470FB3C845C92B25C4B080CB7B66F7163CF72 SWAP1 PUSH2 0x140 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16C6 SWAP2 SWAP1 PUSH2 0x245F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1710 SWAP1 POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x175E PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1818 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x189A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18BE SWAP2 SWAP1 PUSH2 0x23BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1961 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH2 0x8B5 DUP3 PUSH2 0x1DF4 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A22 PUSH2 0x598 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP6 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 DUP5 AND OR DUP2 SSTORE SWAP5 DUP7 ADD MLOAD SWAP5 SWAP1 SWAP3 ADD DUP1 SLOAD SWAP3 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP1 SWAP2 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH21 0x10000000000000000000000000000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH32 0x93F23ADD56B90352EA2EF3BC2123262792AF300DC6060C99F6EE06A7026863BD DUP4 DUP4 PUSH2 0x1B61 PUSH2 0x598 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP7 ISZERO ISZERO SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF84482204FF927822D3068D71E16E14B51CB1B2ADAFA7D6E11EDC1B8DFD8C0DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 PUSH2 0x1CC0 SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x2433 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1CD2 PUSH2 0x598 JUMP JUMPDEST GT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1D5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xB0C SWAP1 DUP6 SWAP1 PUSH2 0x1EE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1E71 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4261642062726964676520726F75746572206164647265737300000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9E8C42C9E7FCA7F62755189A16B2F5314D43D8FB24E91BA54E6D65F9314E849 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F42 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1FEC SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xD64 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1F60 SWAP2 SWAP1 PUSH2 0x2477 JUMP JUMPDEST PUSH2 0xD64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1FFB DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x2005 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x2097 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x75A JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x20FF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x75A JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2128 SWAP2 SWAP1 PUSH2 0x24C0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2165 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x216A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x217A DUP3 DUP3 DUP7 PUSH2 0x2185 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x2194 JUMPI POP DUP2 PUSH2 0x1FFE JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x21A4 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x75A SWAP2 SWAP1 PUSH2 0x24DC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2209 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1FFE DUP3 PUSH2 0x21F1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x224B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2263 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x226E DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x227E DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x228E DUP2 PUSH2 0x2229 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x224B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x22C5 DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x22D5 DUP2 PUSH2 0x2299 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1FFE DUP2 PUSH2 0x2229 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x231B DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x22D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x234D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2358 DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2368 DUP2 PUSH2 0x2229 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x237D PUSH1 0x60 DUP9 ADD PUSH2 0x21F1 JUMP JUMPDEST SWAP3 POP PUSH2 0x238B PUSH1 0x80 DUP9 ADD PUSH2 0x21F1 JUMP JUMPDEST SWAP2 POP PUSH2 0x2399 PUSH1 0xA0 DUP9 ADD PUSH2 0x21F1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x23D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1FFE DUP2 PUSH2 0x2229 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x242B JUMPI PUSH2 0x242B PUSH2 0x23DB JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x2456 JUMPI PUSH2 0x2456 PUSH2 0x23DB JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2472 JUMPI PUSH2 0x2472 PUSH2 0x23DB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1FFE DUP2 PUSH2 0x2299 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24AF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2497 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xB0C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x24D2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x2494 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x24FB DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x2494 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC8 0xED LOG2 SWAP5 0xBB PUSH13 0x3A5C5FE38FD8EEFE908C0B3FD7 PUSH25 0x822BACD5A080DE645B9D1F2264736F6C634300080900330000 ",
                            "sourceMap": "440:5961:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1076:21:44;;;;;;;;;;-1:-1:-1;1076:21:44;;;;;;;;;;;190:42:66;178:55;;;160:74;;148:2;133:18;1076:21:44;;;;;;;;391:27:30;;;;;;;;;;-1:-1:-1;391:27:30;;;;;;;;1097:115;;;;;;;;;;-1:-1:-1;1097:115:30;;;;;:::i;:::-;;:::i;:::-;;1457:276;;;;;;;;;;;;;:::i;:::-;;;576:25:66;;;564:2;549:18;1457:276:30;430:177:66;2728:203:52;;;;;;;;;;-1:-1:-1;2728:203:52;;;;;:::i;:::-;;:::i;500:24:1:-;;;;;;;;;;-1:-1:-1;500:24:1;;;;;;;;;;;3450:226:52;;;;;;;;;;-1:-1:-1;3450:226:52;;;;;:::i;:::-;;:::i;601:31::-;;;;;;;;;;-1:-1:-1;601:31:52;;;;;;;;4041:199;;;;;;;;;;-1:-1:-1;4041:199:52;;;;;:::i;:::-;;:::i;10863:154:44:-;;;;;;;;;;-1:-1:-1;10863:154:44;;;;;:::i;:::-;;:::i;:::-;;;2597:14:66;;2590:22;2572:41;;2560:2;2545:18;10863:154:44;2432:187:66;929:22:44;;;;;;;;;;;;;;;;4933:1074:52;;;;;;;;;;-1:-1:-1;4933:1074:52;;;;;:::i;:::-;;:::i;1198:31:44:-;;;;;;;;;;;;;;;;1795:34;;;;;;;;;;-1:-1:-1;1795:34:44;;;;;;;;;;;3222:18:66;3210:31;;;3192:50;;3180:2;3165:18;1795:34:44;3048:200:66;6672:2809:44;;;;;;:::i;:::-;;:::i;1602:65::-;;;;;;;;;;-1:-1:-1;1602:65:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4166:42:66;4235:15;;;4217:34;;4287:15;;;;4282:2;4267:18;;4260:43;4351:18;4339:31;;;4319:18;;;4312:59;;;;4414:14;4407:22;4402:2;4387:18;;4380:50;4143:3;4128:19;1602:65:44;3933:503:66;2278:168:52;;;;;;;;;;-1:-1:-1;2278:168:52;;;;;:::i;:::-;;:::i;9947:140:44:-;;;;;;;;;;-1:-1:-1;9947:140:44;;;;;:::i;:::-;10034:26;;10011:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;:46;;;9947:140;1097:115:30;899:3;875:12;:28;:12;867:37;;;;;;1171:12:::1;::::0;1165:40:::1;::::0;;;;::::1;::::0;::::1;576:25:66::0;;;1171:12:30::1;::::0;;::::1;::::0;1165:34:::1;::::0;549:18:66;;1165:40:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1097:115:::0;:::o;1457:276::-;1512:7;1535:12;;:28;:12;:28;1531:196;;1592:12;;;;;;;;;;1586:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1579:43;;1457:276;:::o;1531:196::-;-1:-1:-1;1660:15:30;;1457:276::o;2728:203:52:-;2843:16;;;;1221:25:1;1960:9;;;;;;;;;1837:140;1221:25;1199:48;;:10;:48;;;1178:141;;;;;;;4832:2:66;1178:141:1;;;4814:21:66;4871:2;4851:18;;;4844:30;4910:34;4890:18;;;4883:62;4981:16;4961:18;;;4954:44;5015:19;;1178:141:1;;;;;;;;;1960:9;;1351:72;;;;;1960:9;;;;1351:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;1330:167;;;;;;;5503:2:66;1330:167:1;;;5485:21:66;5542:2;5522:18;;;5515:30;5581:34;5561:18;;;5554:62;5652:18;5632;;;5625:46;5688:19;;1330:167:1;5301:412:66;1330:167:1;2875:49:52::1;2900:23;2875:24;:49::i;:::-;2728:203:::0;;:::o;3450:226::-;3594:16;;;;1221:25:1;1960:9;;;;;;;;;1837:140;1221:25;1199:48;;:10;:48;;;1178:141;;;;;;;4832:2:66;1178:141:1;;;4814:21:66;4871:2;4851:18;;;4844:30;4910:34;4890:18;;;4883:62;4981:16;4961:18;;;4954:44;5015:19;;1178:141:1;4630:410:66;1178:141:1;1960:9;;1351:72;;;;;1960:9;;;;1351:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;1330:167;;;;;;;5503:2:66;1330:167:1;;;5485:21:66;5542:2;5522:18;;;5515:30;5581:34;5561:18;;;5554:62;5652:18;5632;;;5625:46;5688:19;;1330:167:1;5301:412:66;1330:167:1;3622:47:52::1;3638:7;3647;3656:12;3622:15;:47::i;:::-;3450:226:::0;;;;:::o;4041:199::-;4157:16;;;;1221:25:1;1960:9;;;;;;;;;1837:140;1221:25;1199:48;;:10;:48;;;1178:141;;;;;;;4832:2:66;1178:141:1;;;4814:21:66;4871:2;4851:18;;;4844:30;4910:34;4890:18;;;4883:62;4981:16;4961:18;;;4954:44;5015:19;;1178:141:1;4630:410:66;1178:141:1;1960:9;;1351:72;;;;;1960:9;;;;1351:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;1330:167;;;;;;;5503:2:66;1330:167:1;;;5485:21:66;5542:2;5522:18;;;5515:30;5581:34;5561:18;;;5554:62;5652:18;5632;;;5625:46;5688:19;;1330:167:1;5301:412:66;1330:167:1;4189:44:52::1;4208:7;4217:15;4189:18;:44::i;:::-;4041:199:::0;;;:::o;10863:154:44:-;10034:26;;;10920:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;:46;;10943:67;;;;;10972:38;11002:7;10972:29;:38::i;:::-;10936:74;10863:154;-1:-1:-1;;10863:154:44:o;4933:1074:52:-;1317:19:28;:17;:19::i;:::-;1346:17;2459:5;2445:19;;;;;;2335:136;1346:17;5069:43:52::1;::::0;;;;5106:4:::1;5069:43;::::0;::::1;160:74:66::0;5035:31:52::1;::::0;5069:28:::1;::::0;::::1;::::0;::::1;::::0;133:18:66;;5069:43:52::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5035:77;;5156:1;5130:23;:27;5122:64;;;::::0;::::1;::::0;;5920:2:66;5122:64:52::1;::::0;::::1;5902:21:66::0;5959:2;5939:18;;;5932:30;5998:26;5978:18;;;5971:54;6042:18;;5122:64:52::1;5718:348:66::0;5122:64:52::1;5204:18;5214:7;5204:9;:18::i;:::-;5196:78;;;::::0;::::1;::::0;;6273:2:66;5196:78:52::1;::::0;::::1;6255:21:66::0;6312:2;6292:18;;;6285:30;6351:34;6331:18;;;6324:62;6422:17;6402:18;;;6395:45;6457:19;;5196:78:52::1;6071:411:66::0;5196:78:52::1;5336:16;:14;:16::i;:::-;5285:26;::::0;;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:41:::1;;:68:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;5364:554;;;;;;;::::1;6841:34:66::0;;;;5520:39:52;;;;;;;;;;;6891:18:66;;;6884:43;6943:18;;;6936:34;;;7018:10;7006:23;;6986:18;;;6979:51;7067:3;7046:19;;;7039:32;7087:19;;;7080:30;864:42:3::1;::::0;5364:68:52::1;::::0;7127:19:66;;5364:554:52::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5934:66:52::1;::::0;;7330:25:66;;;7403:10;7391:23;;7386:2;7371:18;;7364:51;5989:10:52::1;::::0;-1:-1:-1;5934:66:52::1;::::0;::::1;::::0;-1:-1:-1;5934:66:52::1;::::0;7303:18:66;5934:66:52::1;;;;;;;5025:982;1384:20:28::0;2658:11;:18;;;;;;;;2477:206;6672:2809:44;2850:26;;;;;;;:17;:26;;;;;:42;;;:26;;:42;;;;;2842:75;;;;;;;7628:2:66;2842:75:44;;;7610:21:66;7667:2;7647:18;;;7640:30;7706:22;7686:18;;;7679:50;7746:18;;2842:75:44;7426:344:66;2842:75:44;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;10034:26:44::0;;;10011:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;6942:67:::2;;;::::0;::::2;::::0;;7977:2:66;6942:67:44::2;::::0;::::2;7959:21:66::0;8016:2;7996:18;;;7989:30;8055:31;8035:18;;;8028:59;8104:18;;6942:67:44::2;7775:353:66::0;6942:67:44::2;7276:7;7257:15;:26;;;;7249:69;;;::::0;::::2;::::0;;8335:2:66;7249:69:44::2;::::0;::::2;8317:21:66::0;8374:2;8354:18;;;8347:30;8413:32;8393:18;;;8386:60;8463:18;;7249:69:44::2;8133:354:66::0;7249:69:44::2;7358:7;7336:18;:29;;;;7328:75;;;::::0;::::2;::::0;;8694:2:66;7328:75:44::2;::::0;::::2;8676:21:66::0;8733:2;8713:18;;;8706:30;8772:34;8752:18;;;8745:62;8843:3;8823:18;;;8816:31;8864:19;;7328:75:44::2;8492:397:66::0;7328:75:44::2;8061:27;8078:10;8061:14:::0;:27:::2;:::i;:::-;8041:47;;:16;:14;:16::i;:::-;:47;;:98;;;;-1:-1:-1::0;8112:27:44::2;:14:::0;8129:10:::2;8112:27;:::i;:::-;8092:47;;:16;:14;:16::i;:::-;:47;;8041:98;8020:173;;;::::0;::::2;::::0;;9760:2:66;8020:173:44::2;::::0;::::2;9742:21:66::0;9799:2;9779:18;;;9772:30;9838;9818:18;;;9811:58;9886:18;;8020:173:44::2;9558:352:66::0;8020:173:44::2;8468:6;::::0;::::2;8430:26:::0;;::::2;8468:6;8430:26:::0;;;:17:::2;:26;::::0;;;;:34;;::::2;8468:6:::0;::::2;8430:44;:61:::0;::::2;;;;8490:1;8478:9;:13;8430:61;8426:623;;;8528:6;8515:9;:19;8507:59;;;::::0;::::2;::::0;;10117:2:66;8507:59:44::2;::::0;::::2;10099:21:66::0;10156:2;10136:18;;;10129:30;10195:29;10175:18;;;10168:57;10242:18;;8507:59:44::2;9915:351:66::0;8507:59:44::2;8598:7;8580:35;;;8624:9;8580:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;8426:623;;;8982:67;:32;::::0;::::2;9015:10;9035:4;9042:6:::0;8982:32:::2;:67::i;:::-;9093:7;::::0;9114:16:::2;::::0;9268:26:::2;::::0;;::::2;;::::0;;;:17:::2;:26;::::0;;;;;;;;:34;9065:377;;10664:25:66;;;10705:18;;;10698:34;;;;10829:15;;;10809:18;;;10802:43;9244:10:44::2;10876:2:66::0;10861:18;;10854:43;9268:34:44;::::2;10928:3:66::0;10913:19;;10906:44;10981:3;10966:19;;10959:44;11034:3;11019:19;;11012:35;;;11066:18;11121:15;;;11115:3;11100:19;;11093:44;11174:15;;;11168:3;11153:19;;11146:44;11227:15;;11221:3;11206:19;;11199:44;9065:377:44::2;::::0;10651:3:66;10636:19;9065:377:44::2;;;;;;;9473:1;9453:16;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;1384:20:28::1;::::0;-1:-1:-1;2658:11:28;:18;;;;;;;;2477:206;1384:20:::1;6672:2809:44::0;;;;;;;:::o;2278:168:52:-;2370:16;;;;1221:25:1;1960:9;;;;;;;;;1837:140;1221:25;1199:48;;:10;:48;;;1178:141;;;;;;;4832:2:66;1178:141:1;;;4814:21:66;4871:2;4851:18;;;4844:30;4910:34;4890:18;;;4883:62;4981:16;4961:18;;;4954:44;5015:19;;1178:141:1;4630:410:66;1178:141:1;1960:9;;1351:72;;;;;1960:9;;;;1351:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;1330:167;;;;;;;5503:2:66;1330:167:1;;;5485:21:66;5542:2;5522:18;;;5515:30;5581:34;5561:18;;;5554:62;5652:18;5632;;;5625:46;5688:19;;1330:167:1;5301:412:66;1330:167:1;2398:41:52::1;2419:19;2398:20;:41::i;4015:198:44:-:0;4100:20;:46;;;;;;;;;;;;;4161:45;;3192:50:66;;;4161:45:44;;3180:2:66;3165:18;4161:45:44;;;;;;;4015:198;:::o;4632:445::-;4791:191;;;;;;;;4835:7;4791:191;;;;;;4870:12;4791:191;;;;;;4919:16;:14;:16::i;:::-;4791:191;;;;;;4967:4;4791:191;;;;;;;4762:26;;;;-1:-1:-1;4762:26:44;;;:17;:26;;;;;;;:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4998:72;5013:7;4762:26;5038:16;:14;:16::i;:::-;4998:72;;;11626:42:66;11695:15;;;11677:34;;11747:15;;;11742:2;11727:18;;11720:43;11811:18;11799:31;;;11779:18;;;11772:59;11867:15;;;11862:2;11847:18;;11840:43;11603:3;11588:19;4998:72:44;;;;;;;4632:445;;;:::o;5342:209::-;5428:26;;;;;;;:17;:26;;;;;;;;;:42;;:60;;;;;;;;;;;;;;;;;;5503:41;;12062:74:66;;;12152:18;;;12145:50;5503:41:44;;12035:18:66;5503:41:44;;;;;;;5342:209;;:::o;10093:192::-;10258:20;;10214:26;;;10172:4;10214:26;;;:17;:26;;;;;10258:20;10214:41;;10172:4;;10214:64;;10258:20;;;;;10214:41;;;;;:64;:::i;:::-;10195:83;;:16;:14;:16::i;:::-;:83;;10093:192;-1:-1:-1;;10093:192:44:o;2143:186:28:-;2275:11;;;;;;;2267:55;;;;;;;12408:2:66;2267:55:28;;;12390:21:66;12447:2;12427:18;;;12420:30;12486:33;12466:18;;;12459:61;12537:18;;2267:55:28;12206:355:66;2267:55:28;2143:186::o;815:203:10:-;942:68;;;12778:42:66;12847:15;;;942:68:10;;;12829:34:66;12899:15;;12879:18;;;12872:43;12931:18;;;;12924:34;;;942:68:10;;;;;;;;;;12741:18:66;;;;942:68:10;;;;;;;;;;965:27;942:68;;;915:96;;935:5;;915:19;:96::i;6147:252:52:-;6233:33;;;6225:71;;;;;;;13171:2:66;6225:71:52;;;13153:21:66;13210:2;13190:18;;;13183:30;13249:27;13229:18;;;13222:55;13294:18;;6225:71:52;12969:349:66;6225:71:52;6306:16;:38;;;;;;;;;;;;;6359:33;;;;-1:-1:-1;;6359:33:52;6147:252;:::o;3022:751:10:-;3441:23;3467:69;3495:4;3467:69;;;;;;;;;;;;;;;;;3475:5;3467:27;;;;:69;;;;;:::i;:::-;3550:17;;3441:95;;-1:-1:-1;3550:21:10;3546:221;;3690:10;3679:30;;;;;;;;;;;;:::i;:::-;3671:85;;;;;;;13775:2:66;3671:85:10;;;13757:21:66;13814:2;13794:18;;;13787:30;13853:34;13833:18;;;13826:62;13924:12;13904:18;;;13897:40;13954:19;;3671:85:10;13573:406:66;3573:193:11;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;:::-;3700:59;;3573:193;;;;;;:::o;4600:523::-;4727:12;4784:5;4759:21;:30;;4751:81;;;;;;;14186:2:66;4751:81:11;;;14168:21:66;14225:2;14205:18;;;14198:30;14264:34;14244:18;;;14237:62;14335:8;14315:18;;;14308:36;14361:19;;4751:81:11;13984:402:66;4751:81:11;1078:20;;4842:60;;;;;;;14593:2:66;4842:60:11;;;14575:21:66;14632:2;14612:18;;;14605:30;14671:31;14651:18;;;14644:59;14720:18;;4842:60:11;14391:353:66;4842:60:11;4973:12;4987:23;5014:6;:11;;5034:5;5042:4;5014:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:11:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:11;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7363:429;7764:12;7757:20;;;;;;;;;;;:::i;245:180:66:-;304:6;357:2;345:9;336:7;332:23;328:32;325:52;;;373:1;370;363:12;325:52;-1:-1:-1;396:23:66;;245:180;-1:-1:-1;245:180:66:o;612:171::-;679:20;;739:18;728:30;;718:41;;708:69;;773:1;770;763:12;708:69;612:171;;;:::o;788:184::-;846:6;899:2;887:9;878:7;874:23;870:32;867:52;;;915:1;912;905:12;867:52;938:28;956:9;938:28;:::i;977:154::-;1063:42;1056:5;1052:54;1045:5;1042:65;1032:93;;1121:1;1118;1111:12;1032:93;977:154;:::o;1136:529::-;1213:6;1221;1229;1282:2;1270:9;1261:7;1257:23;1253:32;1250:52;;;1298:1;1295;1288:12;1250:52;1337:9;1324:23;1356:31;1381:5;1356:31;:::i;:::-;1406:5;-1:-1:-1;1463:2:66;1448:18;;1435:32;1476:33;1435:32;1476:33;:::i;:::-;1528:7;-1:-1:-1;1587:2:66;1572:18;;1559:32;1600:33;1559:32;1600:33;:::i;:::-;1652:7;1642:17;;;1136:529;;;;;:::o;1670:118::-;1756:5;1749:13;1742:21;1735:5;1732:32;1722:60;;1778:1;1775;1768:12;1793:382;1858:6;1866;1919:2;1907:9;1898:7;1894:23;1890:32;1887:52;;;1935:1;1932;1925:12;1887:52;1974:9;1961:23;1993:31;2018:5;1993:31;:::i;:::-;2043:5;-1:-1:-1;2100:2:66;2085:18;;2072:32;2113:30;2072:32;2113:30;:::i;:::-;2162:7;2152:17;;;1793:382;;;;;:::o;2180:247::-;2239:6;2292:2;2280:9;2271:7;2267:23;2263:32;2260:52;;;2308:1;2305;2298:12;2260:52;2347:9;2334:23;2366:31;2391:5;2366:31;:::i;2624:419::-;2691:6;2699;2752:2;2740:9;2731:7;2727:23;2723:32;2720:52;;;2768:1;2765;2758:12;2720:52;2807:9;2794:23;2826:31;2851:5;2826:31;:::i;:::-;2876:5;-1:-1:-1;2933:2:66;2918:18;;2905:32;2981:10;2968:24;;2956:37;;2946:65;;3007:1;3004;2997:12;3253:675;3354:6;3362;3370;3378;3386;3394;3447:3;3435:9;3426:7;3422:23;3418:33;3415:53;;;3464:1;3461;3454:12;3415:53;3503:9;3490:23;3522:31;3547:5;3522:31;:::i;:::-;3572:5;-1:-1:-1;3629:2:66;3614:18;;3601:32;3642:33;3601:32;3642:33;:::i;:::-;3694:7;-1:-1:-1;3748:2:66;3733:18;;3720:32;;-1:-1:-1;3771:37:66;3804:2;3789:18;;3771:37;:::i;:::-;3761:47;;3827:38;3860:3;3849:9;3845:19;3827:38;:::i;:::-;3817:48;;3884:38;3917:3;3906:9;3902:19;3884:38;:::i;:::-;3874:48;;3253:675;;;;;;;;:::o;4441:184::-;4511:6;4564:2;4552:9;4543:7;4539:23;4535:32;4532:52;;;4580:1;4577;4570:12;4532:52;-1:-1:-1;4603:16:66;;4441:184;-1:-1:-1;4441:184:66:o;5045:251::-;5115:6;5168:2;5156:9;5147:7;5143:23;5139:32;5136:52;;;5184:1;5181;5174:12;5136:52;5216:9;5210:16;5235:31;5260:5;5235:31;:::i;8894:184::-;8946:77;8943:1;8936:88;9043:4;9040:1;9033:15;9067:4;9064:1;9057:15;9083:229;9122:4;9151:18;9219:10;;;;9189;;9241:12;;;9238:38;;;9256:18;;:::i;:::-;9293:13;;9083:229;-1:-1:-1;;;9083:229:66:o;9317:236::-;9356:3;9384:18;9429:2;9426:1;9422:10;9459:2;9456:1;9452:10;9490:3;9486:2;9482:12;9477:3;9474:21;9471:47;;;9498:18;;:::i;:::-;9534:13;;9317:236;-1:-1:-1;;;;9317:236:66:o;11254:128::-;11294:3;11325:1;11321:6;11318:1;11315:13;11312:39;;;11331:18;;:::i;:::-;-1:-1:-1;11367:9:66;;11254:128::o;13323:245::-;13390:6;13443:2;13431:9;13422:7;13418:23;13414:32;13411:52;;;13459:1;13456;13449:12;13411:52;13491:9;13485:16;13510:28;13532:5;13510:28;:::i;14749:258::-;14821:1;14831:113;14845:6;14842:1;14839:13;14831:113;;;14921:11;;;14915:18;14902:11;;;14895:39;14867:2;14860:10;14831:113;;;14962:6;14959:1;14956:13;14953:48;;;-1:-1:-1;;14997:1:66;14979:16;;14972:27;14749:258::o;15012:274::-;15141:3;15179:6;15173:13;15195:53;15241:6;15236:3;15229:4;15221:6;15217:17;15195:53;:::i;:::-;15264:16;;;;;15012:274;-1:-1:-1;;15012:274:66:o;15291:442::-;15440:2;15429:9;15422:21;15403:4;15472:6;15466:13;15515:6;15510:2;15499:9;15495:18;15488:34;15531:66;15590:6;15585:2;15574:9;15570:18;15565:2;15557:6;15553:15;15531:66;:::i;:::-;15649:2;15637:15;15654:66;15633:88;15618:104;;;;15724:2;15614:113;;15291:442;-1:-1:-1;;15291:442:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "1914200",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "bridgeTokens(address,uint32)": "infinite",
                                "canBridge(address)": "infinite",
                                "chainId()": "2340",
                                "crossDomainAdmin()": "2369",
                                "deposit(address,address,uint256,uint64,uint64,uint64)": "infinite",
                                "getCurrentTime()": "infinite",
                                "isWhitelistToken(address)": "2630",
                                "l1Weth()": "2326",
                                "messenger()": "2381",
                                "minimumBridgingDelay()": "2358",
                                "numberOfDeposits()": "2384",
                                "setCrossDomainAdmin(address)": "infinite",
                                "setCurrentTime(uint256)": "infinite",
                                "setEnableDeposits(address,bool)": "infinite",
                                "setMinimumBridgingDelay(uint64)": "infinite",
                                "timerAddress()": "2348",
                                "whitelistToken(address,address,address)": "infinite",
                                "whitelistedTokens(address)": "4817"
                            },
                            "internal": {
                                "_setCrossDomainAdmin(address)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "bridgeTokens(address,uint32)": "9bfd2cdc",
                            "canBridge(address)": "63635fd9",
                            "chainId()": "9a8a0592",
                            "crossDomainAdmin()": "5285e058",
                            "deposit(address,address,uint256,uint64,uint64,uint64)": "c2d9dca9",
                            "getCurrentTime()": "29cb924d",
                            "isWhitelistToken(address)": "fbb9fcf7",
                            "l1Weth()": "146bf4b1",
                            "messenger()": "3cb747bf",
                            "minimumBridgingDelay()": "b2d6f4d4",
                            "numberOfDeposits()": "a1244c67",
                            "setCrossDomainAdmin(address)": "de7eba78",
                            "setCurrentTime(uint256)": "22f8e566",
                            "setEnableDeposits(address,bool)": "563c7f60",
                            "setMinimumBridgingDelay(uint64)": "2ec35b31",
                            "timerAddress()": "1c39c38d",
                            "whitelistToken(address,address,address)": "4dedca28",
                            "whitelistedTokens(address)": "daf9c210"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_crossDomainAdmin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_minimumBridgingDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_l1Weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"timerAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"DepositsEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"FundsDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"SetMinimumBridgingDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetXDomainAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numberOfTokensBridged\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1Gas\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"TokensBridged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"name\":\"WhitelistToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"l1Gas\",\"type\":\"uint32\"}],\"name\":\"bridgeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"canBridge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"crossDomainAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"isWhitelistToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Weth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumBridgingDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCrossDomainAdmin\",\"type\":\"address\"}],\"name\":\"setCrossDomainAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"setEnableDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"setMinimumBridgingDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l1BridgePool\",\"type\":\"address\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l1BridgePool\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Uses OVM cross-domain-enabled logic for access control.\",\"kind\":\"dev\",\"methods\":{\"bridgeTokens(address,uint32)\":{\"details\":\"The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam      on L1 as the finalization of a L2->L1 tx is quite expensive.\",\"params\":{\"l1Gas\":\"Unused by optimism, but included for potential forward compatibility considerations.\",\"l2Token\":\"L2 token to relay over the canonical bridge.\"}},\"canBridge(address)\":{\"details\":\"This function is also public for caller convenience.\",\"params\":{\"l2Token\":\"L2 token to check bridging status.\"},\"returns\":{\"_0\":\"true if token is whitelised and enough time has elapsed since the previous bridge.\"}},\"constructor\":{\"params\":{\"_chainId\":\"L2 Chain identifier this deposit box is deployed on.\",\"_crossDomainAdmin\":\"Address of the L1 contract that can call admin functions on this contract from L1.\",\"_l1Weth\":\"Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\",\"_minimumBridgingDelay\":\"Minimum second that must elapse between L2->L1 token transfer to prevent dos.\",\"timerAddress\":\"Timer used to synchronize contract time in testing. Set to 0x000... in production.\"}},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"details\":\"Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.\",\"params\":{\"amount\":\"How many L2 tokens should be deposited.\",\"instantRelayFeePct\":\"Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\",\"l1Recipient\":\"L1 address that should receive the tokens.\",\"l2Token\":\"L2 token to deposit.\",\"quoteTimestamp\":\"Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\",\"slowRelayFeePct\":\"Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current Testable timestamp.\"}},\"isWhitelistToken(address)\":{\"details\":\"Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.\",\"params\":{\"l2Token\":\"L2 token to check against the whitelist.\"},\"returns\":{\"_0\":\"true if token is whitelised.\"}},\"setCrossDomainAdmin(address)\":{\"details\":\"This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which is expected to be the Optimism_Messenger.Only callable by the existing admin via the Optimism cross domain messenger.\",\"params\":{\"newCrossDomainAdmin\":\"address of the new L1 admin contract.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set current Testable time to.\"}},\"setEnableDeposits(address,bool)\":{\"details\":\"Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\",\"params\":{\"depositsEnabled\":\"bool to set if the deposit box should accept/reject deposits.\",\"l2Token\":\"address of L2 token to enable/disable deposits for.\"}},\"setMinimumBridgingDelay(uint64)\":{\"details\":\"Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\",\"params\":{\"newMinimumBridgingDelay\":\"the new minimum delay.\"}},\"whitelistToken(address,address,address)\":{\"details\":\"Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\",\"params\":{\"l1BridgePool\":\"Address of the L1 withdrawal pool linked to this L2+L1 token.\",\"l1Token\":\"Address of the canonical L1 token. This is the token users will receive on Ethereum.\",\"l2Token\":\"Address of the L2 token representation. This is the token users would deposit on optimism.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"bridgeTokens(address,uint32)\":{\"notice\":\"Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical      token bridge, to the L1 Withdraw box.\"},\"canBridge(address)\":{\"notice\":\"Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\"},\"constructor\":{\"notice\":\"Construct the Optimism Bridge Deposit Box\"},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"notice\":\"Called by L2 user to bridge funds between L2 and L1.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp.\"},\"isWhitelistToken(address)\":{\"notice\":\"Checks if a given L2 token is whitelisted.\"},\"setCrossDomainAdmin(address)\":{\"notice\":\"Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"},\"setEnableDeposits(address,bool)\":{\"notice\":\"L1 owner can enable/disable deposits for a whitelisted token.\"},\"setMinimumBridgingDelay(uint64)\":{\"notice\":\"Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\"},\"whitelistToken(address,address,address)\":{\"notice\":\"Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\"}},\"notice\":\"OVM specific bridge deposit box.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol\":\"OVM_BridgeDepositBox\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\n/**\\n * @title IL2ERC20Bridge\\n */\\ninterface IL2ERC20Bridge {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event WithdrawalInitiated(\\n        address indexed _l1Token,\\n        address indexed _l2Token,\\n        address indexed _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes _data\\n    );\\n\\n    event DepositFinalized(\\n        address indexed _l1Token,\\n        address indexed _l2Token,\\n        address indexed _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes _data\\n    );\\n\\n    event DepositFailed(\\n        address indexed _l1Token,\\n        address indexed _l2Token,\\n        address indexed _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes _data\\n    );\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * @dev get the address of the corresponding L1 bridge contract.\\n     * @return Address of the corresponding L1 bridge contract.\\n     */\\n    function l1TokenBridge() external returns (address);\\n\\n    /**\\n     * @dev initiate a withdraw of some tokens to the caller's account on L1\\n     * @param _l2Token Address of L2 token where withdrawal was initiated.\\n     * @param _amount Amount of the token to withdraw.\\n     * param _l1Gas Unused, but included for potential forward compatibility considerations.\\n     * @param _data Optional data to forward to L1. This data is provided\\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\\n     *        length, these contracts provide no guarantees about its content.\\n     */\\n    function withdraw(\\n        address _l2Token,\\n        uint256 _amount,\\n        uint32 _l1Gas,\\n        bytes calldata _data\\n    ) external;\\n\\n    /**\\n     * @dev initiate a withdraw of some token to a recipient's account on L1.\\n     * @param _l2Token Address of L2 token where withdrawal is initiated.\\n     * @param _to L1 adress to credit the withdrawal to.\\n     * @param _amount Amount of the token to withdraw.\\n     * param _l1Gas Unused, but included for potential forward compatibility considerations.\\n     * @param _data Optional data to forward to L1. This data is provided\\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\\n     *        length, these contracts provide no guarantees about its content.\\n     */\\n    function withdrawTo(\\n        address _l2Token,\\n        address _to,\\n        uint256 _amount,\\n        uint32 _l1Gas,\\n        bytes calldata _data\\n    ) external;\\n\\n    /*************************\\n     * Cross-chain Functions *\\n     *************************/\\n\\n    /**\\n     * @dev Complete a deposit from L1 to L2, and credits funds to the recipient's balance of this\\n     * L2 token. This call will fail if it did not originate from a corresponding deposit in\\n     * L1StandardTokenBridge.\\n     * @param _l1Token Address for the l1 token this is called with\\n     * @param _l2Token Address for the l2 token this is called with\\n     * @param _from Account to pull the deposit from on L2.\\n     * @param _to Address to receive the withdrawal at\\n     * @param _amount Amount of the token to withdraw\\n     * @param _data Data provider by the sender on L1. This data is provided\\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\\n     *        length, these contracts provide no guarantees about its content.\\n     */\\n    function finalizeDeposit(\\n        address _l1Token,\\n        address _l2Token,\\n        address _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes calldata _data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x4674c3c8733ca0db16c2b81d58227560df36a07ded3b637a0793564d90ac0475\",\"license\":\"MIT\"},\"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/* Interface Imports */\\nimport { ICrossDomainMessenger } from \\\"./ICrossDomainMessenger.sol\\\";\\n\\n/**\\n * @title CrossDomainEnabled\\n * @dev Helper contract for contracts performing cross-domain communications\\n *\\n * Compiler used: defined by inheriting contract\\n */\\ncontract CrossDomainEnabled {\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    // Messenger contract used to send and recieve messages from the other domain.\\n    address public messenger;\\n\\n    /***************\\n     * Constructor *\\n     ***************/\\n\\n    /**\\n     * @param _messenger Address of the CrossDomainMessenger on the current layer.\\n     */\\n    constructor(address _messenger) {\\n        messenger = _messenger;\\n    }\\n\\n    /**********************\\n     * Function Modifiers *\\n     **********************/\\n\\n    /**\\n     * Enforces that the modified function is only callable by a specific cross-domain account.\\n     * @param _sourceDomainAccount The only account on the originating domain which is\\n     *  authenticated to call this function.\\n     */\\n    modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {\\n        require(\\n            msg.sender == address(getCrossDomainMessenger()),\\n            \\\"OVM_XCHAIN: messenger contract unauthenticated\\\"\\n        );\\n\\n        require(\\n            getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,\\n            \\\"OVM_XCHAIN: wrong sender of cross-domain message\\\"\\n        );\\n\\n        _;\\n    }\\n\\n    /**********************\\n     * Internal Functions *\\n     **********************/\\n\\n    /**\\n     * Gets the messenger, usually from storage. This function is exposed in case a child contract\\n     * needs to override.\\n     * @return The address of the cross-domain messenger contract which should be used.\\n     */\\n    function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) {\\n        return ICrossDomainMessenger(messenger);\\n    }\\n\\n    /**q\\n     * Sends a message to an account on another domain\\n     * @param _crossDomainTarget The intended recipient on the destination domain\\n     * @param _message The data to send to the target (usually calldata to a function with\\n     *  `onlyFromCrossDomainAccount()`)\\n     * @param _gasLimit The gasLimit for the receipt of the message on the target domain.\\n     */\\n    function sendCrossDomainMessage(\\n        address _crossDomainTarget,\\n        uint32 _gasLimit,\\n        bytes memory _message\\n    ) internal {\\n        getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);\\n    }\\n}\\n\",\"keccak256\":\"0x147bd09bf9b4c02347ea21790a3dce2f733b914e4e6d73539d8abafb38827c9d\",\"license\":\"MIT\"},\"@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/**\\n * @title ICrossDomainMessenger\\n */\\ninterface ICrossDomainMessenger {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event SentMessage(\\n        address indexed target,\\n        address sender,\\n        bytes message,\\n        uint256 messageNonce,\\n        uint256 gasLimit\\n    );\\n    event RelayedMessage(bytes32 indexed msgHash);\\n    event FailedRelayedMessage(bytes32 indexed msgHash);\\n\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    function xDomainMessageSender() external view returns (address);\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * Sends a cross domain message to the target messenger.\\n     * @param _target Target contract address.\\n     * @param _message Message to send to the target.\\n     * @param _gasLimit Gas limit for the provided message.\\n     */\\n    function sendMessage(\\n        address _target,\\n        bytes calldata _message,\\n        uint32 _gasLimit\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8f29ae23021345a20ccac7b5edb3fc38268aef943b65adc8a32e74b80bf1833a\",\"license\":\"MIT\"},\"@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\n/**\\n * @title Lib_PredeployAddresses\\n */\\nlibrary Lib_PredeployAddresses {\\n    address internal constant L2_TO_L1_MESSAGE_PASSER = 0x4200000000000000000000000000000000000000;\\n    address internal constant L1_MESSAGE_SENDER = 0x4200000000000000000000000000000000000001;\\n    address internal constant DEPLOYER_WHITELIST = 0x4200000000000000000000000000000000000002;\\n    address payable internal constant OVM_ETH = payable(0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000);\\n    address internal constant L2_CROSS_DOMAIN_MESSENGER =\\n        0x4200000000000000000000000000000000000007;\\n    address internal constant LIB_ADDRESS_MANAGER = 0x4200000000000000000000000000000000000008;\\n    address internal constant PROXY_EOA = 0x4200000000000000000000000000000000000009;\\n    address internal constant L2_STANDARD_BRIDGE = 0x4200000000000000000000000000000000000010;\\n    address internal constant SEQUENCER_FEE_WALLET = 0x4200000000000000000000000000000000000011;\\n    address internal constant L2_STANDARD_TOKEN_FACTORY =\\n        0x4200000000000000000000000000000000000012;\\n    address internal constant L1_BLOCK_NUMBER = 0x4200000000000000000000000000000000000013;\\n}\\n\",\"keccak256\":\"0x2bc28307af93e9716151a41a81694b56cbe513ef5eb335fb1d81f35e5db8edfa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        // solhint-disable-next-line max-line-length\\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n    }\\n\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            uint256 newAllowance = oldAllowance - value;\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        if (returndata.length > 0) { // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"},\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Testable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Timer.sol\\\";\\n\\n/**\\n * @title Base class that provides time overrides, but only if being run in test mode.\\n */\\nabstract contract Testable {\\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\\n    // Note: this variable should be set on construction and never modified.\\n    address public timerAddress;\\n\\n    /**\\n     * @notice Constructs the Testable contract. Called by child contracts.\\n     * @param _timerAddress Contract that stores the current time in a testing environment.\\n     * Must be set to 0x0 for production environments that use live time.\\n     */\\n    constructor(address _timerAddress) {\\n        timerAddress = _timerAddress;\\n    }\\n\\n    /**\\n     * @notice Reverts if not running in test mode.\\n     */\\n    modifier onlyIfTest {\\n        require(timerAddress != address(0x0));\\n        _;\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set current Testable time to.\\n     */\\n    function setCurrentTime(uint256 time) external onlyIfTest {\\n        Timer(timerAddress).setCurrentTime(time);\\n    }\\n\\n    /**\\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\\n     * Otherwise, it will return the block timestamp.\\n     * @return uint for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view virtual returns (uint256) {\\n        if (timerAddress != address(0x0)) {\\n            return Timer(timerAddress).getCurrentTime();\\n        } else {\\n            return block.timestamp; // solhint-disable-line not-rely-on-time\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../common/implementation/Testable.sol\\\";\\nimport \\\"../common/implementation/Lockable.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface TokenLike {\\n    function balanceOf(address guy) external returns (uint256 wad);\\n}\\n\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 wad) external;\\n}\\n\\n/**\\n * @title OVM Bridge Deposit Box.\\n * @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\\n */\\n\\nabstract contract BridgeDepositBox is Testable, Lockable {\\n    using SafeERC20 for IERC20;\\n    /*************************************\\n     *  OVM DEPOSIT BOX DATA STRUCTURES  *\\n     *************************************/\\n\\n    // ChainID of the L2 this deposit box is deployed on.\\n    uint256 public chainId;\\n\\n    // Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.\\n    address public l1Weth;\\n\\n    // Track the total number of deposits. Used as a unique identifier for bridged transfers.\\n    uint256 public numberOfDeposits;\\n\\n    struct L2TokenRelationships {\\n        address l1Token;\\n        address l1BridgePool;\\n        uint64 lastBridgeTime;\\n        bool depositsEnabled;\\n    }\\n\\n    // Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token\\n    // type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.\\n    mapping(address => L2TokenRelationships) public whitelistedTokens;\\n\\n    // Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.\\n    uint64 public minimumBridgingDelay;\\n\\n    /****************************************\\n     *                EVENTS                *\\n     ****************************************/\\n\\n    event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);\\n    event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);\\n    event DepositsEnabled(address l2Token, bool depositsEnabled);\\n    event FundsDeposited(\\n        uint256 chainId,\\n        uint256 depositId,\\n        address l1Recipient,\\n        address l2Sender,\\n        address l1Token,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    );\\n    event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);\\n\\n    /****************************************\\n     *               MODIFIERS              *\\n     ****************************************/\\n\\n    modifier onlyIfDepositsEnabled(address l2Token) {\\n        require(whitelistedTokens[l2Token].depositsEnabled, \\\"Contract is disabled\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the Bridge Deposit Box\\n     * @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\\n     * @param _chainId Chain identifier for the Bridge deposit box.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) Testable(timerAddress) {\\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\\n        chainId = _chainId;\\n        l1Weth = _l1Weth;\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {\\n        minimumBridgingDelay = newMinimumBridgingDelay;\\n        emit SetMinimumBridgingDelay(minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function _whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) internal {\\n        whitelistedTokens[l2Token] = L2TokenRelationships({\\n            l1Token: l1Token,\\n            l1BridgePool: l1BridgePool,\\n            lastBridgeTime: uint64(getCurrentTime()),\\n            depositsEnabled: true\\n        });\\n\\n        emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {\\n        whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;\\n        emit DepositsEnabled(l2Token, depositsEnabled);\\n    }\\n\\n    function bridgeTokens(address l2Token, uint32 l2Gas) public virtual;\\n\\n    /**************************************\\n     *         DEPOSITOR FUNCTIONS        *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by L2 user to bridge funds between L2 and L1.\\n     * @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\\n     * @dev The caller must first approve this contract to spend `amount` of `l2Token`.\\n     * @param l1Recipient L1 address that should receive the tokens.\\n     * @param l2Token L2 token to deposit.\\n     * @param amount How many L2 tokens should be deposited.\\n     * @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\\n     * @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\\n     * @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\\n     *    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\\n     */\\n    function deposit(\\n        address l1Recipient,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    ) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {\\n        require(isWhitelistToken(l2Token), \\\"deposit token not whitelisted\\\");\\n        // We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.\\n        // The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.\\n        require(slowRelayFeePct <= 0.25e18, \\\"slowRelayFeePct must be <= 25%\\\");\\n        require(instantRelayFeePct <= 0.25e18, \\\"instantRelayFeePct must be <= 25%\\\");\\n\\n        // Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp\\n        // corresponds to the L1 timestamp of the last confirmed L1 \\u21d2 L2 transaction. The quoteTime must be within 10\\n        // mins of the current time to allow for this variance.\\n        // Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result\\n        // in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.\\n        // Consider requiring `quoteTimestamp >= 10 minutes`.\\n        require(\\n            getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,\\n            \\\"deposit mined after deadline\\\"\\n        );\\n        // If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user\\n        // is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.\\n        if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {\\n            require(msg.value == amount, \\\"msg.value must match amount\\\");\\n            WETH9Like(address(l2Token)).deposit{ value: msg.value }();\\n        }\\n        // Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.\\n        // Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In\\n        // this case the msg.value will be set to 0, indicating a \\\"normal\\\" ERC20 bridging action.\\n        else IERC20(l2Token).safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit FundsDeposited(\\n            chainId,\\n            numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).\\n            l1Recipient,\\n            msg.sender,\\n            whitelistedTokens[l2Token].l1Token,\\n            l2Token,\\n            amount,\\n            slowRelayFeePct,\\n            instantRelayFeePct,\\n            quoteTimestamp\\n        );\\n\\n        numberOfDeposits += 1;\\n    }\\n\\n    /**************************************\\n     *           VIEW FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Checks if a given L2 token is whitelisted.\\n     * @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\\n     * the token has been whitelisted.\\n     * @param l2Token L2 token to check against the whitelist.\\n     * @return true if token is whitelised.\\n     */\\n    function isWhitelistToken(address l2Token) public view returns (bool) {\\n        return whitelistedTokens[l2Token].lastBridgeTime != 0;\\n    }\\n\\n    function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {\\n        return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;\\n    }\\n\\n    /**\\n     * @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\\n     * balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\\n     * and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\\n     * @dev This function is also public for caller convenience.\\n     * @param l2Token L2 token to check bridging status.\\n     * @return true if token is whitelised and enough time has elapsed since the previous bridge.\\n     */\\n    function canBridge(address l2Token) public view returns (bool) {\\n        return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);\\n    }\\n}\\n\",\"keccak256\":\"0x4ee97e2948d55ffd8a44769e452ee5e8de4fcb073388aef12a4c4e53bc99af21\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../BridgeDepositBox.sol\\\";\\nimport \\\"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\\\";\\nimport \\\"@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol\\\";\\nimport \\\"@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol\\\";\\n\\n/**\\n * @notice OVM specific bridge deposit box.\\n * @dev Uses OVM cross-domain-enabled logic for access control.\\n */\\n\\ncontract OVM_BridgeDepositBox is BridgeDepositBox, CrossDomainEnabled {\\n    // Address of the L1 contract that acts as the owner of this Bridge deposit box.\\n    address public crossDomainAdmin;\\n\\n    event SetXDomainAdmin(address indexed newAdmin);\\n\\n    /**\\n     * @notice Construct the Optimism Bridge Deposit Box\\n     * @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\\n     * @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\\n     * @param _chainId L2 Chain identifier this deposit box is deployed on.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        address _crossDomainAdmin,\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    )\\n        CrossDomainEnabled(Lib_PredeployAddresses.L2_CROSS_DOMAIN_MESSENGER)\\n        BridgeDepositBox(_minimumBridgingDelay, _chainId, _l1Weth, timerAddress)\\n    {\\n        _setCrossDomainAdmin(_crossDomainAdmin);\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\\n     * @dev This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which\\n     * is expected to be the Optimism_Messenger.\\n     * @dev Only callable by the existing admin via the Optimism cross domain messenger.\\n     * @param newCrossDomainAdmin address of the new L1 admin contract.\\n     */\\n    function setCrossDomainAdmin(address newCrossDomainAdmin) public onlyFromCrossDomainAccount(crossDomainAdmin) {\\n        _setCrossDomainAdmin(newCrossDomainAdmin);\\n    }\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\\n     * @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function setMinimumBridgingDelay(uint64 newMinimumBridgingDelay)\\n        public\\n        onlyFromCrossDomainAccount(crossDomainAdmin)\\n    {\\n        _setMinimumBridgingDelay(newMinimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) public onlyFromCrossDomainAccount(crossDomainAdmin) {\\n        _whitelistToken(l1Token, l2Token, l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function setEnableDeposits(address l2Token, bool depositsEnabled)\\n        public\\n        onlyFromCrossDomainAccount(crossDomainAdmin)\\n    {\\n        _setEnableDeposits(l2Token, depositsEnabled);\\n    }\\n\\n    /**************************************\\n     *          RELAYER FUNCTIONS         *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\\n     *      token bridge, to the L1 Withdraw box.\\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\\n     * @param l2Token L2 token to relay over the canonical bridge.\\n     * @param l1Gas Unused by optimism, but included for potential forward compatibility considerations.\\n     */\\n    function bridgeTokens(address l2Token, uint32 l1Gas) public virtual override nonReentrant() {\\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\\n        require(bridgeDepositBoxBalance > 0, \\\"can't bridge zero tokens\\\");\\n        require(canBridge(l2Token), \\\"non-whitelisted token or last bridge too recent\\\");\\n\\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\\n\\n        IL2ERC20Bridge(Lib_PredeployAddresses.L2_STANDARD_BRIDGE).withdrawTo(\\n            l2Token, // _l2Token. Address of the L2 token to bridge over.\\n            whitelistedTokens[l2Token].l1BridgePool, // _to. Withdraw, over the bridge, to the l1 withdraw contract.\\n            bridgeDepositBoxBalance, // _amount. Send the full balance of the deposit box to bridge.\\n            l1Gas, // _l1Gas. Unused, but included for potential forward compatibility considerations\\n            \\\"\\\" // _data. We don't need to send any data for the bridging action.\\n        );\\n\\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\\n    }\\n\\n    /**************************************\\n     *         INTERNAL FUNCTIONS         *\\n     **************************************/\\n\\n    function _setCrossDomainAdmin(address newCrossDomainAdmin) internal {\\n        require(newCrossDomainAdmin != address(0), \\\"Bad bridge router address\\\");\\n        crossDomainAdmin = newCrossDomainAdmin;\\n        emit SetXDomainAdmin(crossDomainAdmin);\\n    }\\n}\\n\",\"keccak256\":\"0x20f71deea5d58fb96705ea0b4cb31771931012c456b4bf5be30d4fce52173db3\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 5530,
                                "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                "label": "timerAddress",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 5381,
                                "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                "label": "_notEntered",
                                "offset": 20,
                                "slot": "0",
                                "type": "t_bool"
                            },
                            {
                                "astId": 8260,
                                "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                "label": "chainId",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8262,
                                "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                "label": "l1Weth",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_address"
                            },
                            {
                                "astId": 8264,
                                "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                "label": "numberOfDeposits",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8278,
                                "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                "label": "whitelistedTokens",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)"
                            },
                            {
                                "astId": 8280,
                                "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                "label": "minimumBridgingDelay",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_uint64"
                            },
                            {
                                "astId": 100,
                                "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                "label": "messenger",
                                "offset": 8,
                                "slot": "5",
                                "type": "t_address"
                            },
                            {
                                "astId": 9269,
                                "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                "label": "crossDomainAdmin",
                                "offset": 0,
                                "slot": "6",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => struct BridgeDepositBox.L2TokenRelationships)",
                                "numberOfBytes": "32",
                                "value": "t_struct(L2TokenRelationships)8273_storage"
                            },
                            "t_struct(L2TokenRelationships)8273_storage": {
                                "encoding": "inplace",
                                "label": "struct BridgeDepositBox.L2TokenRelationships",
                                "members": [
                                    {
                                        "astId": 8266,
                                        "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                        "label": "l1Token",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8268,
                                        "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                        "label": "l1BridgePool",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8270,
                                        "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                        "label": "lastBridgeTime",
                                        "offset": 20,
                                        "slot": "1",
                                        "type": "t_uint64"
                                    },
                                    {
                                        "astId": 8272,
                                        "contract": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol:OVM_BridgeDepositBox",
                                        "label": "depositsEnabled",
                                        "offset": 28,
                                        "slot": "1",
                                        "type": "t_bool"
                                    }
                                ],
                                "numberOfBytes": "64"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            },
                            "t_uint64": {
                                "encoding": "inplace",
                                "label": "uint64",
                                "numberOfBytes": "8"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "bridgeTokens(address,uint32)": {
                                "notice": "Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical      token bridge, to the L1 Withdraw box."
                            },
                            "canBridge(address)": {
                                "notice": "Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted)."
                            },
                            "constructor": {
                                "notice": "Construct the Optimism Bridge Deposit Box"
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "notice": "Called by L2 user to bridge funds between L2 and L1."
                            },
                            "getCurrentTime()": {
                                "notice": "Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp."
                            },
                            "isWhitelistToken(address)": {
                                "notice": "Checks if a given L2 token is whitelisted."
                            },
                            "setCrossDomainAdmin(address)": {
                                "notice": "Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box."
                            },
                            "setCurrentTime(uint256)": {
                                "notice": "Sets the current time."
                            },
                            "setEnableDeposits(address,bool)": {
                                "notice": "L1 owner can enable/disable deposits for a whitelisted token."
                            },
                            "setMinimumBridgingDelay(uint64)": {
                                "notice": "Changes the minimum time in seconds that must elapse between withdraws from L2->L1."
                            },
                            "whitelistToken(address,address,address)": {
                                "notice": "Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging."
                            }
                        },
                        "notice": "OVM specific bridge deposit box.",
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol": {
                "OVM_OETH_BridgeDepositBox": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_crossDomainAdmin",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "_minimumBridgingDelay",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "_chainId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_l1Weth",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_l2Eth",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_l1EthWrapper",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "timerAddress",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "DepositsEnabled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "depositId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Sender",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "FundsDeposited",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetMinimumBridgingDelay",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "SetXDomainAdmin",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "numberOfTokensBridged",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "l1Gas",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "caller",
                                    "type": "address"
                                }
                            ],
                            "name": "TokensBridged",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "WhitelistToken",
                            "type": "event"
                        },
                        {
                            "stateMutability": "payable",
                            "type": "fallback"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "l1Gas",
                                    "type": "uint32"
                                }
                            ],
                            "name": "bridgeTokens",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "canBridge",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "chainId",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "crossDomainAdmin",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "isWhitelistToken",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1EthWrapper",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1Weth",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l2Eth",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "messenger",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "minimumBridgingDelay",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "numberOfDeposits",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newCrossDomainAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "setCrossDomainAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "setEnableDeposits",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setMinimumBridgingDelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "timerAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1BridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "whitelistToken",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "whitelistedTokens",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1BridgePool",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "stateMutability": "payable",
                            "type": "receive"
                        }
                    ],
                    "devdoc": {
                        "details": "Modified version of OVM_BridgeDepositBox that supports Optimism ETH being sent over the canonical bridge as ETH. This is re-wrapped to WETH on L2. All other functionality remains the same.",
                        "kind": "dev",
                        "methods": {
                            "bridgeTokens(address,uint32)": {
                                "details": "The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam      on L1 as the finalization of a L2->L1 tx is quite expensive.",
                                "params": {
                                    "l1Gas": "Unused by optimism, but included for potential forward compatibility considerations.",
                                    "l2Token": "L2 token to relay over the canonical bridge."
                                }
                            },
                            "canBridge(address)": {
                                "details": "This function is also public for caller convenience.",
                                "params": {
                                    "l2Token": "L2 token to check bridging status."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised and enough time has elapsed since the previous bridge."
                                }
                            },
                            "constructor": {
                                "params": {
                                    "_chainId": "L2 Chain identifier this deposit box is deployed on.",
                                    "_crossDomainAdmin": "Address of the L1 contract that can call admin functions on this contract from L1.",
                                    "_l1EthWrapper": "Address of custom ETH wrapper on L1. Any ETH sent to this contract will be wrapped to WETH     and sent to the WETH Bridge Pool.",
                                    "_l1Weth": "Address of Weth on L1. Used to inform if a bridging action should wrap ETH to WETH, if the desired      asset-to-bridge is for a whitelisted token mapped to this L1 Weth token.",
                                    "_l2Eth": "Address of ETH on L2. If someone wants to bridge L2 Weth from this contract to L1, then L2 ETH     should be sent over the Optimism bridge.",
                                    "_minimumBridgingDelay": "Minimum second that must elapse between L2->L1 token transfer to prevent dos.",
                                    "timerAddress": "Timer used to synchronize contract time in testing. Set to 0x000... in production."
                                }
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "details": "Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.",
                                "params": {
                                    "amount": "How many L2 tokens should be deposited.",
                                    "instantRelayFeePct": "Fraction of `amount` that the depositor is willing to pay as an instant relay fee.",
                                    "l1Recipient": "L1 address that should receive the tokens.",
                                    "l2Token": "L2 token to deposit.",
                                    "quoteTimestamp": "Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.",
                                    "slowRelayFeePct": "Max fraction of `amount` that the depositor is willing to pay as a slow relay fee."
                                }
                            },
                            "getCurrentTime()": {
                                "returns": {
                                    "_0": "uint for the current Testable timestamp."
                                }
                            },
                            "isWhitelistToken(address)": {
                                "details": "Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.",
                                "params": {
                                    "l2Token": "L2 token to check against the whitelist."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised."
                                }
                            },
                            "setCrossDomainAdmin(address)": {
                                "details": "This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which is expected to be the Optimism_Messenger.Only callable by the existing admin via the Optimism cross domain messenger.",
                                "params": {
                                    "newCrossDomainAdmin": "address of the new L1 admin contract."
                                }
                            },
                            "setCurrentTime(uint256)": {
                                "details": "Will revert if not running in test mode.",
                                "params": {
                                    "time": "timestamp to set current Testable time to."
                                }
                            },
                            "setEnableDeposits(address,bool)": {
                                "details": "Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "depositsEnabled": "bool to set if the deposit box should accept/reject deposits.",
                                    "l2Token": "address of L2 token to enable/disable deposits for."
                                }
                            },
                            "setMinimumBridgingDelay(uint64)": {
                                "details": "Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "newMinimumBridgingDelay": "the new minimum delay."
                                }
                            },
                            "whitelistToken(address,address,address)": {
                                "details": "Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "l1BridgePool": "Address of the L1 withdrawal pool linked to this L2+L1 token.",
                                    "l1Token": "Address of the canonical L1 token. This is the token users will receive on Ethereum.",
                                    "l2Token": "Address of the L2 token representation. This is the token users would deposit on optimism."
                                }
                            }
                        },
                        "title": "OVM_OETH_BridgeDepositBox",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_111": {
                                    "entryPoint": null,
                                    "id": 111,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_5389": {
                                    "entryPoint": null,
                                    "id": 5389,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_5541": {
                                    "entryPoint": null,
                                    "id": 5541,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_8374": {
                                    "entryPoint": null,
                                    "id": 8374,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@_9302": {
                                    "entryPoint": null,
                                    "id": 9302,
                                    "parameterSlots": 5,
                                    "returnSlots": 0
                                },
                                "@_9508": {
                                    "entryPoint": null,
                                    "id": 9508,
                                    "parameterSlots": 7,
                                    "returnSlots": 0
                                },
                                "@_setCrossDomainAdmin_9463": {
                                    "entryPoint": 361,
                                    "id": 9463,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setMinimumBridgingDelay_8389": {
                                    "entryPoint": 277,
                                    "id": 8389,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_address_fromMemory": {
                                    "entryPoint": 526,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_uint64t_uint256t_addresst_addresst_addresst_address_fromMemory": {
                                    "entryPoint": 555,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 7
                                },
                                "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:1535:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "74:117:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "84:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "99:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "93:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "93:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "84:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "169:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "178:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "181:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "171:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "171:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "171:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "128:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "139:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "154:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "159:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "150:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "150:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "163:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "146:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "146:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "135:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "135:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "125:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "125:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "118:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "118:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "115:70:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "53:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "64:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "378:596:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "425:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "434:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "437:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "427:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "427:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "427:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "399:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "408:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "395:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "395:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "420:3:66",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "391:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "391:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "388:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "450:50:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "490:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "460:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "460:40:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "450:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "509:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "532:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "543:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "528:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "528:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "522:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "522:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "513:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "609:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "618:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "621:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "611:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "611:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "611:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "569:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "580:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "595:2:66",
                                                                                                        "type": "",
                                                                                                        "value": "64"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "599:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "591:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "591:10:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "603:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "587:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "587:18:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "576:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "576:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "566:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "566:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "559:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "559:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "556:69:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "634:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "644:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "634:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "658:35:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "678:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "689:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "674:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "674:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "668:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "668:25:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "658:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "702:59:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "746:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "757:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "742:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "742:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "712:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "712:49:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "702:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "770:60:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "814:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "825:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "810:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "810:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "780:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "780:50:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "770:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "839:60:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "883:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "894:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "879:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "879:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "849:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "849:50:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "839:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "908:60:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "952:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "963:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "948:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "948:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "918:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "918:50:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "908:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint64t_uint256t_addresst_addresst_addresst_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "296:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "307:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "319:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "327:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "335:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "343:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "351:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "359:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "367:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "196:778:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1078:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1088:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1100:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1111:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1096:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1096:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1088:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1130:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1145:6:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1161:2:66",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1165:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1157:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1157:10:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1169:1:66",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1153:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1153:18:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1141:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1141:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1123:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1123:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1123:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1047:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1058:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1069:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "979:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1358:175:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1375:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1386:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1368:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1368:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1368:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1409:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1420:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1405:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1405:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1425:2:66",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1398:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1398:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1398:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1448:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1459:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1444:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1444:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4261642062726964676520726f757465722061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1464:27:66",
                                                                        "type": "",
                                                                        "value": "Bad bridge router address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1437:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1437:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1437:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1501:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1513:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1524:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1509:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1509:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1501:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1335:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1349:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1184:349:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint64t_uint256t_addresst_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        let value := mload(add(headStart, 32))\n        if iszero(eq(value, and(value, sub(shl(64, 1), 1)))) { revert(0, 0) }\n        value1 := value\n        value2 := mload(add(headStart, 64))\n        value3 := abi_decode_address_fromMemory(add(headStart, 96))\n        value4 := abi_decode_address_fromMemory(add(headStart, 128))\n        value5 := abi_decode_address_fromMemory(add(headStart, 160))\n        value6 := abi_decode_address_fromMemory(add(headStart, 192))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Bad bridge router address\")\n        tail := add(headStart, 96)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60806040523480156200001157600080fd5b50604051620029843803806200298483398101604081905262000034916200022b565b600080546001600160a81b0319166001600160a01b03831617600160a01b1790558686868684734200000000000000000000000000000000000007848484846200007e8462000115565b50600191909155600280546001600160a01b0319166001600160a01b0392831617905560058054600160401b600160e01b0319166801000000000000000094909216939093021790915550620000d48562000169565b5050600780546001600160a01b039788166001600160a01b031991821617909155600880549690971695169490941790945550620002c69650505050505050565b600580546001600160401b0319166001600160401b0383169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b6001600160a01b038116620001c45760405162461bcd60e51b815260206004820152601960248201527f4261642062726964676520726f75746572206164647265737300000000000000604482015260640160405180910390fd5b600680546001600160a01b0319166001600160a01b0383169081179091556040517fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b80516001600160a01b03811681146200022657600080fd5b919050565b600080600080600080600060e0888a0312156200024757600080fd5b62000252886200020e565b60208901519097506001600160401b03811681146200027057600080fd5b6040890151909650945062000288606089016200020e565b935062000298608089016200020e565b9250620002a860a089016200020e565b9150620002b860c089016200020e565b905092959891949750929550565b6126ae80620002d66000396000f3fe60806040526004361061014b5760003560e01c806363635fd9116100b4578063c2d9dca91161006e578063de7eba7811610056578063de7eba78146104b6578063e3229211146104d6578063fbb9fcf71461050357005b8063c2d9dca9146103c4578063daf9c210146103d757005b80639bfd2cdc1161009c5780639bfd2cdc14610354578063a1244c6714610374578063b2d6f4d41461038a57005b806363635fd91461030e5780639a8a05921461033e57005b80633cb747bf116101055780635285e058116100ed5780635285e05814610294578063563c7f60146102c15780635facafbd146102e157005b80633cb747bf1461023b5780634dedca281461027457005b806322f8e5661161013357806322f8e566146101d857806329cb924d146101f85780632ec35b311461021b57005b8063146bf4b1146101545780631c39c38d146101ab57005b3661015257005b005b34801561016057600080fd5b506002546101819073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101b757600080fd5b506000546101819073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101e457600080fd5b506101526101f3366004612323565b61056d565b34801561020457600080fd5b5061020d610616565b6040519081526020016101a2565b34801561022757600080fd5b50610152610236366004612359565b6106dd565b34801561024757600080fd5b506005546101819068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561028057600080fd5b5061015261028f366004612399565b610937565b3480156102a057600080fd5b506006546101819073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102cd57600080fd5b506101526102dc3660046123f2565b610b90565b3480156102ed57600080fd5b506008546101819073ffffffffffffffffffffffffffffffffffffffff1681565b34801561031a57600080fd5b5061032e61032936600461242b565b610de7565b60405190151581526020016101a2565b34801561034a57600080fd5b5061020d60015481565b34801561036057600080fd5b5061015261036f366004612448565b610e4a565b34801561038057600080fd5b5061020d60035481565b34801561039657600080fd5b506005546103ab9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101a2565b6101526103d236600461247f565b6112ba565b3480156103e357600080fd5b5061046d6103f236600461242b565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff90911691830191909152151560608201526080016101a2565b3480156104c257600080fd5b506101526104d136600461242b565b611864565b3480156104e257600080fd5b506007546101819073ffffffffffffffffffffffffffffffffffffffff1681565b34801561050f57600080fd5b5061032e61051e36600461242b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff1661058f57600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16156106d85760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d391906124f0565b905090565b504290565b60065473ffffffffffffffffffffffffffffffffffffffff1661072260055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561084f57600080fd5b505afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190612509565b73ffffffffffffffffffffffffffffffffffffffff161461092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016107d8565b61093382611ab5565b5050565b60065473ffffffffffffffffffffffffffffffffffffffff1661097c60055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016107d8565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa457600080fd5b505afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190612509565b73ffffffffffffffffffffffffffffffffffffffff1614610b7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016107d8565b610b8a848484611b22565b50505050565b60065473ffffffffffffffffffffffffffffffffffffffff16610bd560055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016107d8565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610cfd57600080fd5b505afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190612509565b73ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016107d8565b610de28383611cfa565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1615158015610e445750610e4482611dad565b92915050565b610e52611e24565b610e7f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b158015610ee957600080fd5b505af1158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2191906124f0565b905060008111610f8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e73000000000000000060448201526064016107d8565b610f9683610de7565b611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e74000000000000000000000000000000000060648201526084016107d8565b61102a610616565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260046020526040902060018101805467ffffffffffffffff9490941674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff8516811790915560025491549083169383169390931792821691161415611160576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff851690632e1a7d4d90602401600060405180830381600087803b15801561112457600080fd5b505af1158015611138573d6000803e3d6000fd5b505060075460085473ffffffffffffffffffffffffffffffffffffffff918216975016925050505b6040517fa3a7954800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8086166004830152821660248201526044810183905263ffffffff8416606482015260a06084820152600060a48201527342000000000000000000000000000000000000109063a3a795489060c401600060405180830381600087803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b50506040805185815263ffffffff8716602082015233935073ffffffffffffffffffffffffffffffffffffffff881692507f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a35050610933600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff1661136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c656400000000000000000000000060448201526064016107d8565b611376611e24565b6113a3600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c697374656400000060448201526064016107d8565b6703782dace9d900008467ffffffffffffffff1611156114d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d20323525000060448201526064016107d8565b6703782dace9d900008367ffffffffffffffff161115611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f250000000000000000000000000000000000000000000000000000000000000060648201526084016107d8565b61157e61025883612555565b67ffffffffffffffff16611590610616565b101580156115ba57506115a58261025861257e565b67ffffffffffffffff166115b7610616565b11155b611620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e650000000060448201526064016107d8565b60025473ffffffffffffffffffffffffffffffffffffffff8781166000908152600460205260409020548116911614801561165b5750600034115b1561172f578434146116c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e74000000000060448201526064016107d8565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b5050505050611751565b61175173ffffffffffffffffffffffffffffffffffffffff8716333088611eaa565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a160016003600082825461181191906125aa565b9091555061185b9050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60065473ffffffffffffffffffffffffffffffffffffffff166118a960055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016107d8565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d157600080fd5b505afa1580156119e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a099190612509565b73ffffffffffffffffffffffffffffffffffffffff1614611aac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016107d8565b61093382611f3f565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001611b6d610616565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd8383611cac610616565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120600101549091611e0b9167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661257e565b67ffffffffffffffff16611e1d610616565b1192915050565b60005474010000000000000000000000000000000000000000900460ff16611ea8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107d8565b565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610b8a90859061202b565b73ffffffffffffffffffffffffffffffffffffffff8116611fbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4261642062726964676520726f7574657220616464726573730000000000000060448201526064016107d8565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b600061208d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121379092919063ffffffff16565b805190915015610de257808060200190518101906120ab91906125c2565b610de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d8565b60606121468484600085612150565b90505b9392505050565b6060824710156121e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107d8565b843b61224a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d8565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612273919061260b565b60006040518083038185875af1925050503d80600081146122b0576040519150601f19603f3d011682016040523d82523d6000602084013e6122b5565b606091505b50915091506122c58282866122d0565b979650505050505050565b606083156122df575081612149565b8251156122ef5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d89190612627565b60006020828403121561233557600080fd5b5035919050565b803567ffffffffffffffff8116811461235457600080fd5b919050565b60006020828403121561236b57600080fd5b6121498261233c565b73ffffffffffffffffffffffffffffffffffffffff8116811461239657600080fd5b50565b6000806000606084860312156123ae57600080fd5b83356123b981612374565b925060208401356123c981612374565b915060408401356123d981612374565b809150509250925092565b801515811461239657600080fd5b6000806040838503121561240557600080fd5b823561241081612374565b91506020830135612420816123e4565b809150509250929050565b60006020828403121561243d57600080fd5b813561214981612374565b6000806040838503121561245b57600080fd5b823561246681612374565b9150602083013563ffffffff8116811461242057600080fd5b60008060008060008060c0878903121561249857600080fd5b86356124a381612374565b955060208701356124b381612374565b9450604087013593506124c86060880161233c565b92506124d66080880161233c565b91506124e460a0880161233c565b90509295509295509295565b60006020828403121561250257600080fd5b5051919050565b60006020828403121561251b57600080fd5b815161214981612374565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8381169083168181101561257657612576612526565b039392505050565b600067ffffffffffffffff8083168185168083038211156125a1576125a1612526565b01949350505050565b600082198211156125bd576125bd612526565b500190565b6000602082840312156125d457600080fd5b8151612149816123e4565b60005b838110156125fa5781810151838201526020016125e2565b83811115610b8a5750506000910152565b6000825161261d8184602087016125df565b9190910192915050565b60208152600082518060208401526126468160408501602087016125df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220bff8579e0703fae79661b0b44218007636bde40f2bd24c1c342936353367f5e064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2984 CODESIZE SUB DUP1 PUSH3 0x2984 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x22B JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE DUP7 DUP7 DUP7 DUP7 DUP5 PUSH20 0x4200000000000000000000000000000000000007 DUP5 DUP5 DUP5 DUP5 PUSH3 0x7E DUP5 PUSH3 0x115 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH9 0x10000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR SWAP1 SWAP2 SSTORE POP PUSH3 0xD4 DUP6 PUSH3 0x169 JUMP JUMPDEST POP POP PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x8 DUP1 SLOAD SWAP7 SWAP1 SWAP8 AND SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP5 SSTORE POP PUSH3 0x2C6 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x1C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4261642062726964676520726F75746572206164647265737300000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9E8C42C9E7FCA7F62755189A16B2F5314D43D8FB24E91BA54E6D65F9314E849 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x252 DUP9 PUSH3 0x20E JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP SWAP5 POP PUSH3 0x288 PUSH1 0x60 DUP10 ADD PUSH3 0x20E JUMP JUMPDEST SWAP4 POP PUSH3 0x298 PUSH1 0x80 DUP10 ADD PUSH3 0x20E JUMP JUMPDEST SWAP3 POP PUSH3 0x2A8 PUSH1 0xA0 DUP10 ADD PUSH3 0x20E JUMP JUMPDEST SWAP2 POP PUSH3 0x2B8 PUSH1 0xC0 DUP10 ADD PUSH3 0x20E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH2 0x26AE DUP1 PUSH3 0x2D6 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x63635FD9 GT PUSH2 0xB4 JUMPI DUP1 PUSH4 0xC2D9DCA9 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xDE7EBA78 GT PUSH2 0x56 JUMPI DUP1 PUSH4 0xDE7EBA78 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xE3229211 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0xFBB9FCF7 EQ PUSH2 0x503 JUMPI STOP JUMPDEST DUP1 PUSH4 0xC2D9DCA9 EQ PUSH2 0x3C4 JUMPI DUP1 PUSH4 0xDAF9C210 EQ PUSH2 0x3D7 JUMPI STOP JUMPDEST DUP1 PUSH4 0x9BFD2CDC GT PUSH2 0x9C JUMPI DUP1 PUSH4 0x9BFD2CDC EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0xA1244C67 EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0xB2D6F4D4 EQ PUSH2 0x38A JUMPI STOP JUMPDEST DUP1 PUSH4 0x63635FD9 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x33E JUMPI STOP JUMPDEST DUP1 PUSH4 0x3CB747BF GT PUSH2 0x105 JUMPI DUP1 PUSH4 0x5285E058 GT PUSH2 0xED JUMPI DUP1 PUSH4 0x5285E058 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x563C7F60 EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x5FACAFBD EQ PUSH2 0x2E1 JUMPI STOP JUMPDEST DUP1 PUSH4 0x3CB747BF EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x4DEDCA28 EQ PUSH2 0x274 JUMPI STOP JUMPDEST DUP1 PUSH4 0x22F8E566 GT PUSH2 0x133 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0x2EC35B31 EQ PUSH2 0x21B JUMPI STOP JUMPDEST DUP1 PUSH4 0x146BF4B1 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x1AB JUMPI STOP JUMPDEST CALLDATASIZE PUSH2 0x152 JUMPI STOP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2323 JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x236 CALLDATASIZE PUSH1 0x4 PUSH2 0x2359 JUMP JUMPDEST PUSH2 0x6DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x181 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x28F CALLDATASIZE PUSH1 0x4 PUSH2 0x2399 JUMP JUMPDEST PUSH2 0x937 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x2DC CALLDATASIZE PUSH1 0x4 PUSH2 0x23F2 JUMP JUMPDEST PUSH2 0xB90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x8 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32E PUSH2 0x329 CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH2 0xDE7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x2448 JUMP JUMPDEST PUSH2 0xE4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x3AB SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A2 JUMP JUMPDEST PUSH2 0x152 PUSH2 0x3D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x247F JUMP JUMPDEST PUSH2 0x12BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46D PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 DUP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x1A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x4D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32E PUSH2 0x51E CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x22F8E56600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x60F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6D3 SWAP2 SWAP1 PUSH2 0x24F0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x722 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x863 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x887 SWAP2 SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x92A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x933 DUP3 PUSH2 0x1AB5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x97C PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA36 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xADC SWAP2 SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0xB8A DUP5 DUP5 DUP5 PUSH2 0x1B22 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBD5 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC8F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD35 SWAP2 SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xDD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0xDE2 DUP4 DUP4 PUSH2 0x1CFA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 ISZERO PUSH2 0xE44 JUMPI POP PUSH2 0xE44 DUP3 PUSH2 0x1DAD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE52 PUSH2 0x1E24 JUMP JUMPDEST PUSH2 0xE7F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF21 SWAP2 SWAP1 PUSH2 0x24F0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x63616E277420627269646765207A65726F20746F6B656E730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0xF96 DUP4 PUSH2 0xDE7 JUMP JUMPDEST PUSH2 0x1022 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F6E2D77686974656C697374656420746F6B656E206F72206C617374206272 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964676520746F6F20726563656E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x102A PUSH2 0x616 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD SWAP2 SLOAD SWAP1 DUP4 AND SWAP4 DUP4 AND SWAP4 SWAP1 SWAP4 OR SWAP3 DUP3 AND SWAP2 AND EQ ISZERO PUSH2 0x1160 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1138 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP8 POP AND SWAP3 POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA3A7954800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH20 0x4200000000000000000000000000000000000010 SWAP1 PUSH4 0xA3A79548 SWAP1 PUSH1 0xC4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1218 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP8 AND PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP3 POP PUSH32 0x95B5EC953BD38FBAA6F859725352BF73202C155A6809E5622C95CEEF331EAC6C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH2 0x933 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP6 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x136E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742069732064697361626C6564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x1376 PUSH2 0x1E24 JUMP JUMPDEST PUSH2 0x13A3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1454 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F73697420746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x14D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6F7752656C6179466565506374206D757374206265203C3D203235250000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E7374616E7452656C6179466565506374206D757374206265203C3D203235 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x157E PUSH2 0x258 DUP4 PUSH2 0x2555 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1590 PUSH2 0x616 JUMP JUMPDEST LT ISZERO DUP1 ISZERO PUSH2 0x15BA JUMPI POP PUSH2 0x15A5 DUP3 PUSH2 0x258 PUSH2 0x257E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x15B7 PUSH2 0x616 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0x1620 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F736974206D696E656420616674657220646561646C696E6500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP2 AND EQ DUP1 ISZERO PUSH2 0x165B JUMPI POP PUSH1 0x0 CALLVALUE GT JUMPDEST ISZERO PUSH2 0x172F JUMPI DUP5 CALLVALUE EQ PUSH2 0x16C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206D757374206D6174636820616D6F756E740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1725 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1751 JUMP JUMPDEST PUSH2 0x1751 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP9 PUSH2 0x1EAA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP7 DUP8 MSTORE SWAP1 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP12 DUP4 AND SWAP1 DUP6 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP1 DUP6 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH32 0xAB77617F2B9BDBB101FC328E585470FB3C845C92B25C4B080CB7B66F7163CF72 SWAP1 PUSH2 0x140 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1811 SWAP2 SWAP1 PUSH2 0x25AA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x185B SWAP1 POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18A9 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1963 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A09 SWAP2 SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1AAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x933 DUP3 PUSH2 0x1F3F JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B6D PUSH2 0x616 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP6 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 DUP5 AND OR DUP2 SSTORE SWAP5 DUP7 ADD MLOAD SWAP5 SWAP1 SWAP3 ADD DUP1 SLOAD SWAP3 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP1 SWAP2 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH21 0x10000000000000000000000000000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH32 0x93F23ADD56B90352EA2EF3BC2123262792AF300DC6060C99F6EE06A7026863BD DUP4 DUP4 PUSH2 0x1CAC PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP7 ISZERO ISZERO SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF84482204FF927822D3068D71E16E14B51CB1B2ADAFA7D6E11EDC1B8DFD8C0DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 PUSH2 0x1E0B SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x257E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1E1D PUSH2 0x616 JUMP JUMPDEST GT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1EA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xB8A SWAP1 DUP6 SWAP1 PUSH2 0x202B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FBC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4261642062726964676520726F75746572206164647265737300000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9E8C42C9E7FCA7F62755189A16B2F5314D43D8FB24E91BA54E6D65F9314E849 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208D DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2137 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xDE2 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x20AB SWAP2 SWAP1 PUSH2 0x25C2 JUMP JUMPDEST PUSH2 0xDE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2146 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x2150 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x21E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x224A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2273 SWAP2 SWAP1 PUSH2 0x260B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x22B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x22B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x22C5 DUP3 DUP3 DUP7 PUSH2 0x22D0 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x22DF JUMPI POP DUP2 PUSH2 0x2149 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x22EF JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D8 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2335 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x236B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2149 DUP3 PUSH2 0x233C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x23AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x23B9 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x23C9 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x23D9 DUP2 PUSH2 0x2374 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2410 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2420 DUP2 PUSH2 0x23E4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x243D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2149 DUP2 PUSH2 0x2374 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x245B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2466 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x24A3 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x24B3 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x24C8 PUSH1 0x60 DUP9 ADD PUSH2 0x233C JUMP JUMPDEST SWAP3 POP PUSH2 0x24D6 PUSH1 0x80 DUP9 ADD PUSH2 0x233C JUMP JUMPDEST SWAP2 POP PUSH2 0x24E4 PUSH1 0xA0 DUP9 ADD PUSH2 0x233C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2149 DUP2 PUSH2 0x2374 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x2576 JUMPI PUSH2 0x2576 PUSH2 0x2526 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x25A1 JUMPI PUSH2 0x25A1 PUSH2 0x2526 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x25BD JUMPI PUSH2 0x25BD PUSH2 0x2526 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2149 DUP2 PUSH2 0x23E4 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25FA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x25E2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xB8A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x261D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x25DF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2646 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x25DF JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xF8 JUMPI SWAP15 SMOD SUB STATICCALL 0xE7 SWAP7 PUSH2 0xB0B4 TIMESTAMP XOR STOP PUSH23 0x36BDE40F2BD24C1C342936353367F5E064736F6C634300 ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "308:4838:53:-:0;;;1960:392;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;728:12:30;:28;;-1:-1:-1;;;;;;874:18:28;-1:-1:-1;;;;;728:28:30;;874:18:28;-1:-1:-1;;;874:18:28;;;2208:17:53;2227:21;2250:8;2260:7;2269:12;587:42:3;2227:21:53;2250:8;2260:7;2269:12;3589:47:44::1;2227:21:53::0;3589:24:44::1;:47::i;:::-;-1:-1:-1::0;3646:7:44::1;:18:::0;;;;3674:6:::1;:16:::0;;-1:-1:-1;;;;;;3674:16:44::1;-1:-1:-1::0;;;;;3674:16:44;;::::1;;::::0;;737:9:1;:22;;-1:-1:-1;;;;;;;;737:22:1;;;;;;;;;;;;;;-1:-1:-1;1644:39:52::2;1665:17:::0;1644:20:::2;:39::i;:::-;-1:-1:-1::0;;2293:5:53::1;:14:::0;;-1:-1:-1;;;;;2293:14:53;;::::1;-1:-1:-1::0;;;;;;2293:14:53;;::::1;;::::0;;;2317:12:::1;:28:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;308:4838:53;;-1:-1:-1;;;;;;;308:4838:53;4015:198:44;4100:20;:46;;-1:-1:-1;;;;;;4100:46:44;-1:-1:-1;;;;;4100:46:44;;;;;;;;4161:45;;1123:50:66;;;4161:45:44;;1111:2:66;1096:18;4161:45:44;;;;;;;4015:198;:::o;6147:252:52:-;-1:-1:-1;;;;;6233:33:52;;6225:71;;;;-1:-1:-1;;;6225:71:52;;1386:2:66;6225:71:52;;;1368:21:66;1425:2;1405:18;;;1398:30;1464:27;1444:18;;;1437:55;1509:18;;6225:71:52;;;;;;;;6306:16;:38;;-1:-1:-1;;;;;;6306:38:52;-1:-1:-1;;;;;6306:38:52;;;;;;;;6359:33;;;;-1:-1:-1;;6359:33:52;6147:252;:::o;14:177:66:-;93:13;;-1:-1:-1;;;;;135:31:66;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:778::-;319:6;327;335;343;351;359;367;420:3;408:9;399:7;395:23;391:33;388:53;;;437:1;434;427:12;388:53;460:40;490:9;460:40;:::i;:::-;543:2;528:18;;522:25;450:50;;-1:-1:-1;;;;;;576:30:66;;566:41;;556:69;;621:1;618;611:12;556:69;689:2;674:18;;668:25;644:5;;-1:-1:-1;668:25:66;-1:-1:-1;712:49:66;757:2;742:18;;712:49;:::i;:::-;702:59;;780:50;825:3;814:9;810:19;780:50;:::i;:::-;770:60;;849:50;894:3;883:9;879:19;849:50;:::i;:::-;839:60;;918:50;963:3;952:9;948:19;918:50;:::i;:::-;908:60;;196:778;;;;;;;;;;:::o;1184:349::-;308:4838:53;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_9611": {
                                    "entryPoint": null,
                                    "id": 9611,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_9615": {
                                    "entryPoint": null,
                                    "id": 9615,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_callOptionalReturn_1654": {
                                    "entryPoint": 8235,
                                    "id": 1654,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_hasEnoughTimeElapsedToBridge_8615": {
                                    "entryPoint": 7597,
                                    "id": 8615,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_postEntranceReset_5436": {
                                    "entryPoint": null,
                                    "id": 5436,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_5420": {
                                    "entryPoint": 7716,
                                    "id": 5420,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_5428": {
                                    "entryPoint": null,
                                    "id": 5428,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_setCrossDomainAdmin_9463": {
                                    "entryPoint": 7999,
                                    "id": 9463,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setEnableDeposits_8447": {
                                    "entryPoint": 7418,
                                    "id": 8447,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_setMinimumBridgingDelay_8389": {
                                    "entryPoint": 6837,
                                    "id": 8389,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_verifyCallResult_1950": {
                                    "entryPoint": 8912,
                                    "id": 1950,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@_whitelistToken_8426": {
                                    "entryPoint": 6946,
                                    "id": 8426,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@bridgeTokens_9607": {
                                    "entryPoint": 3658,
                                    "id": 9607,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@canBridge_8632": {
                                    "entryPoint": 3559,
                                    "id": 8632,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@chainId_8260": {
                                    "entryPoint": null,
                                    "id": 8260,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@crossDomainAdmin_9269": {
                                    "entryPoint": null,
                                    "id": 9269,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@deposit_8581": {
                                    "entryPoint": 4794,
                                    "id": 8581,
                                    "parameterSlots": 6,
                                    "returnSlots": 0
                                },
                                "@functionCallWithValue_1816": {
                                    "entryPoint": 8528,
                                    "id": 1816,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "@functionCall_1746": {
                                    "entryPoint": 8503,
                                    "id": 1746,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@getCrossDomainMessenger_152": {
                                    "entryPoint": null,
                                    "id": 152,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@getCurrentTime_5596": {
                                    "entryPoint": 1558,
                                    "id": 5596,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@isContract_1675": {
                                    "entryPoint": null,
                                    "id": 1675,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@isWhitelistToken_8597": {
                                    "entryPoint": null,
                                    "id": 8597,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@l1EthWrapper_9474": {
                                    "entryPoint": null,
                                    "id": 9474,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@l1Weth_8262": {
                                    "entryPoint": null,
                                    "id": 8262,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@l2Eth_9472": {
                                    "entryPoint": null,
                                    "id": 9472,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@messenger_100": {
                                    "entryPoint": null,
                                    "id": 100,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@minimumBridgingDelay_8280": {
                                    "entryPoint": null,
                                    "id": 8280,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@numberOfDeposits_8264": {
                                    "entryPoint": null,
                                    "id": 8264,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@safeTransferFrom_1488": {
                                    "entryPoint": 7850,
                                    "id": 1488,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@setCrossDomainAdmin_9316": {
                                    "entryPoint": 6244,
                                    "id": 9316,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setCurrentTime_5571": {
                                    "entryPoint": 1389,
                                    "id": 5571,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setEnableDeposits_9367": {
                                    "entryPoint": 2960,
                                    "id": 9367,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@setMinimumBridgingDelay_9330": {
                                    "entryPoint": 1757,
                                    "id": 9330,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@timerAddress_5530": {
                                    "entryPoint": null,
                                    "id": 5530,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@whitelistToken_9350": {
                                    "entryPoint": 2359,
                                    "id": 9350,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@whitelistedTokens_8278": {
                                    "entryPoint": null,
                                    "id": 8278,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 9259,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 9481,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_addresst_address": {
                                    "entryPoint": 9113,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64": {
                                    "entryPoint": 9343,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 6
                                },
                                "abi_decode_tuple_t_addresst_bool": {
                                    "entryPoint": 9202,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_uint32": {
                                    "entryPoint": 9288,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_bool_fromMemory": {
                                    "entryPoint": 9666,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 8995,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": 9456,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64": {
                                    "entryPoint": 9049,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint64": {
                                    "entryPoint": 9020,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 9739,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint32_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint32_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 9767,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 11,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 9642,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint64": {
                                    "entryPoint": 9598,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_uint64": {
                                    "entryPoint": 9557,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 9695,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 9510,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_address": {
                                    "entryPoint": 9076,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "validator_revert_bool": {
                                    "entryPoint": 9188,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:15735:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "182:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "190:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "178:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "315:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "361:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "370:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "373:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "363:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "363:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "363:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "336:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "345:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "332:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "332:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "357:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "328:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "328:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "325:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "386:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "409:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "396:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "396:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "386:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "281:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "292:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "304:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "245:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "531:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "541:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "553:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "564:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "549:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "549:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "541:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "583:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "594:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "576:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "576:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "576:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "500:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "511:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "522:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "430:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "660:123:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "670:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "692:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "679:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "679:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "670:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "761:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "770:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "773:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "763:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "763:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "763:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "721:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "732:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "739:18:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "728:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "728:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "718:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "718:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "711:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "711:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "708:69:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "639:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "650:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "612:171:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "857:115:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "903:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "912:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "915:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "905:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "905:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "905:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "878:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "887:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "874:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "874:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "899:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "870:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "870:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "867:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "928:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "956:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "938:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "938:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "928:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "823:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "834:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "846:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "788:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1022:109:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1109:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1118:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1121:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1111:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1111:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1111:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1045:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1056:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1063:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1052:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1052:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1042:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1042:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1035:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1035:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1032:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1011:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "977:154:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1240:425:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1286:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1295:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1298:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1288:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1288:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1288:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1261:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1270:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1257:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1257:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1282:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1253:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1253:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1250:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1311:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1337:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1324:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1324:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1315:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1381:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1356:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1356:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1356:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1396:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1406:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1396:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1420:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1452:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1463:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1448:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1448:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1435:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1435:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1424:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1501:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1476:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1476:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1476:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1518:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1528:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1518:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1544:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1576:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1587:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1572:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1572:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1559:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1559:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1548:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1625:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1600:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1600:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1600:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1642:17:66",
                                                            "value": {
                                                                "name": "value_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1652:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1642:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1190:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1201:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1213:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1221:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1229:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1136:529:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1712:76:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1766:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1775:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1778:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1768:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1768:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1768:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1735:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1756:5:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1749:6:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1749:13:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1742:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1742:21:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1732:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1732:32:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1725:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1725:40:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1722:60:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1701:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1670:118:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1877:298:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1923:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1932:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1935:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1925:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1925:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1925:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1898:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1907:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1894:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1894:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1919:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1890:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1890:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1887:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1948:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1974:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1961:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1961:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1952:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2018:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1993:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1993:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1993:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2033:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2043:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2033:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2057:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2089:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2100:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2085:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2085:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2072:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2072:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2061:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2135:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2113:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2113:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2113:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2152:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2162:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2152:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1835:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1846:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1858:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1866:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1793:382:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2250:177:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2296:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2305:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2308:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2298:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2298:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2298:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2271:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2280:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2267:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2267:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2292:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2263:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2263:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2260:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2321:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2347:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2334:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2334:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2325:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2391:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2366:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2366:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2366:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2406:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2416:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2406:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2216:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2227:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2239:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2180:247:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2527:92:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2537:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2549:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2560:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2545:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2545:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2537:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2579:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2604:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2597:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2597:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2590:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2590:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2572:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2572:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2572:41:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2496:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2507:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2518:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2432:187:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2710:333:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2756:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2765:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2768:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2758:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2758:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2758:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2731:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2740:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2727:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2727:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2752:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2723:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2723:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2720:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2781:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2807:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2794:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2794:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2785:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2851:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2826:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2826:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2826:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2866:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2876:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2866:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2890:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2922:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2933:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2918:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2918:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2905:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2905:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2894:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2995:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3004:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3007:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2997:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2997:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2997:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2959:7:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2972:7:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2981:10:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2968:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2968:24:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2956:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2956:37:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2949:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2949:45:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2946:65:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3020:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3030:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3020:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2668:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2679:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2691:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2699:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2624:419:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3147:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3157:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3169:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3180:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3165:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3165:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3157:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3199:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3214:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3222:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3210:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3210:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3192:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3192:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3192:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3116:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3127:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3138:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3048:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3405:523:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3452:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3461:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3464:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3454:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3454:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3454:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3426:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3435:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3422:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3422:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3447:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3418:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3418:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3415:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3477:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3503:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3490:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3490:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3481:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3547:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3522:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3522:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3522:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3562:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3572:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3562:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3586:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3618:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3629:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3614:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3614:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3601:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3601:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3590:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3667:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3642:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3642:33:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3642:33:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3684:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3694:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3684:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3710:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3737:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3748:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3733:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3733:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3720:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3720:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3710:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3761:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3793:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3804:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3789:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3789:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3771:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3771:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3761:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3817:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3849:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3860:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3845:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3845:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3827:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3827:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3817:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3874:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3906:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3917:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3902:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3902:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3884:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3884:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3874:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3331:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3342:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3354:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3362:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3370:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3378:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3386:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3394:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3253:675:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4110:326:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4120:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4132:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4143:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4128:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4128:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4120:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4156:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "4166:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4160:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4224:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4239:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4247:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4235:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4235:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4217:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4217:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4217:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4271:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4282:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4267:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4267:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4291:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4299:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4287:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4287:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4260:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4260:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4260:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4323:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4334:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4319:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4319:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4343:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4351:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4339:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4339:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4312:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4312:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4312:59:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4391:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4402:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4387:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4387:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4421:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4414:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4414:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4407:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4407:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4380:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4380:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4380:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4055:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4066:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4074:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4082:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4090:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4101:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3933:503:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4522:103:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4568:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4577:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4580:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4570:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4570:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4570:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4543:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4552:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4539:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4539:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4564:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4535:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4535:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4532:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4593:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4609:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4603:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4603:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4593:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4488:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4499:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4511:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4441:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4804:236:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4821:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4832:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4814:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4814:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4814:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4855:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4866:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4851:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4851:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4871:2:66",
                                                                        "type": "",
                                                                        "value": "46"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4844:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4844:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4844:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4894:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4905:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4890:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4890:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f564d5f58434841494e3a206d657373656e67657220636f6e74726163742075",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4910:34:66",
                                                                        "type": "",
                                                                        "value": "OVM_XCHAIN: messenger contract u"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4883:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4883:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4883:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4965:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4976:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4961:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4961:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6e61757468656e74696361746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4981:16:66",
                                                                        "type": "",
                                                                        "value": "nauthenticated"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4954:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4954:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4954:44:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5007:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5019:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5030:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5015:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5015:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5007:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4781:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4795:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4630:410:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5126:170:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5172:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5181:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5184:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5174:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5174:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5174:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5147:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5156:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5143:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5143:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5168:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5139:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5139:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5136:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5197:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5216:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5210:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5210:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5201:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5260:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5235:24:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5235:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5235:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5275:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "5285:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5275:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5092:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5103:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5115:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5045:251:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5475:238:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5492:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5503:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5485:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5485:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5485:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5526:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5537:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5522:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5522:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5542:2:66",
                                                                        "type": "",
                                                                        "value": "48"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5515:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5515:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5515:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5565:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5576:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5561:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5561:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f73",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5581:34:66",
                                                                        "type": "",
                                                                        "value": "OVM_XCHAIN: wrong sender of cros"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5554:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5554:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5554:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5636:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5647:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5632:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5632:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "732d646f6d61696e206d657373616765",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5652:18:66",
                                                                        "type": "",
                                                                        "value": "s-domain message"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5625:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5625:46:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5625:46:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5680:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5692:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5703:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5688:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5688:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5680:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5452:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5466:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5301:412:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5892:174:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5909:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5920:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5902:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5902:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5902:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5943:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5954:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5939:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5939:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5959:2:66",
                                                                        "type": "",
                                                                        "value": "24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5932:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5932:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5932:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5982:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5993:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5978:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5978:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "63616e277420627269646765207a65726f20746f6b656e73",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5998:26:66",
                                                                        "type": "",
                                                                        "value": "can't bridge zero tokens"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5971:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5971:54:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5971:54:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6034:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6046:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6057:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6042:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6042:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6034:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5869:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5883:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5718:348:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6245:237:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6262:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6273:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6255:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6255:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6255:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6296:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6307:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6292:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6292:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6312:2:66",
                                                                        "type": "",
                                                                        "value": "47"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6285:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6285:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6285:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6335:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6346:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6331:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6331:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6e6f6e2d77686974656c697374656420746f6b656e206f72206c617374206272",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6351:34:66",
                                                                        "type": "",
                                                                        "value": "non-whitelisted token or last br"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6324:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6324:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6324:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6406:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6417:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6402:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6402:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6964676520746f6f20726563656e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6422:17:66",
                                                                        "type": "",
                                                                        "value": "idge too recent"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6395:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6395:45:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6395:45:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6449:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6461:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6472:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6457:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6457:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6449:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6222:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6236:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6071:411:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6770:382:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "6780:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "6790:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "6784:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6848:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6863:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6871:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6859:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6859:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6841:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6841:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6841:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6895:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6906:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6891:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6891:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6915:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6923:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6911:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6911:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6884:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6884:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6884:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6947:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6958:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6943:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6943:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6963:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6936:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6936:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6936:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6990:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7001:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6986:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6986:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7010:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7018:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7006:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7006:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6979:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6979:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6979:51:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7050:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7061:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7046:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7046:19:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7067:3:66",
                                                                        "type": "",
                                                                        "value": "160"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7039:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7039:32:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7039:32:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7091:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7102:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7087:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7087:19:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7108:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7080:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7080:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7080:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7119:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7131:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7142:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7127:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7127:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7119:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint32_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint32_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6715:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6726:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6734:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6742:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6750:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6761:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6487:665:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7285:136:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7295:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7307:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7318:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7303:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7303:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7295:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7337:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7348:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7330:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7330:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7330:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7375:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7386:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7371:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7371:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7395:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7403:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7391:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7391:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7364:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7364:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7364:51:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7246:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7257:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7265:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7276:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7157:264:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7600:170:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7617:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7628:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7610:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7610:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7610:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7651:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7662:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7647:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7647:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7667:2:66",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7640:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7640:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7640:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7690:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7701:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7686:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7686:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "436f6e74726163742069732064697361626c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7706:22:66",
                                                                        "type": "",
                                                                        "value": "Contract is disabled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7679:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7679:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7679:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7738:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7750:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7761:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7746:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7746:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7738:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7577:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7591:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7426:344:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7949:179:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7966:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7977:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7959:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7959:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7959:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8000:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8011:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7996:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7996:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8016:2:66",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7989:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7989:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7989:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8039:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8050:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8035:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8035:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6465706f73697420746f6b656e206e6f742077686974656c6973746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8055:31:66",
                                                                        "type": "",
                                                                        "value": "deposit token not whitelisted"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8028:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8028:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8028:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8096:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8108:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8119:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8104:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8104:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8096:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7926:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7940:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7775:353:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8307:180:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8324:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8335:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8317:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8317:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8317:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8358:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8369:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8354:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8354:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8374:2:66",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8347:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8347:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8347:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8397:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8408:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8393:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8393:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "736c6f7752656c6179466565506374206d757374206265203c3d20323525",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8413:32:66",
                                                                        "type": "",
                                                                        "value": "slowRelayFeePct must be <= 25%"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8386:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8386:60:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8386:60:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8455:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8467:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8478:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8463:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8463:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8455:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8284:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8298:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8133:354:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8666:223:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8683:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8694:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8676:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8676:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8676:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8717:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8728:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8713:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8713:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8733:2:66",
                                                                        "type": "",
                                                                        "value": "33"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8706:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8706:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8706:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8756:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8767:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8752:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8752:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "696e7374616e7452656c6179466565506374206d757374206265203c3d203235",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8772:34:66",
                                                                        "type": "",
                                                                        "value": "instantRelayFeePct must be <= 25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8745:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8745:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8745:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8827:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8838:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8823:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8823:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "25",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8843:3:66",
                                                                        "type": "",
                                                                        "value": "%"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8816:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8816:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8816:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8856:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8868:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8879:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8864:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8864:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8856:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8643:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8657:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8492:397:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8926:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8943:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8946:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8936:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8936:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8936:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9040:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9043:4:66",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9033:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9033:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9033:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9064:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9067:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9057:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9057:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9057:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "8894:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9131:181:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9141:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9151:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9145:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9178:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9193:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9196:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9189:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9189:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9182:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9208:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9223:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9226:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9219:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9219:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9212:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9254:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9256:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9256:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9256:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9244:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9249:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9241:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9241:12:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9238:38:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9285:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9297:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9302:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9293:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9293:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9285:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9113:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9116:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9122:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9083:229:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9364:189:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9374:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9384:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9378:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9411:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9426:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9429:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9422:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9422:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9415:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9441:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9456:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9459:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9452:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9452:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9445:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9496:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9498:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9498:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9498:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9477:3:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9486:2:66"
                                                                            },
                                                                            {
                                                                                "name": "y_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9490:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9482:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9482:12:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9474:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9474:21:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9471:47:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9527:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9538:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9543:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9534:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9534:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9527:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9347:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9350:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9356:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9317:236:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9732:178:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9749:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9760:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9742:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9742:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9742:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9783:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9794:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9779:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9779:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9799:2:66",
                                                                        "type": "",
                                                                        "value": "28"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9772:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9772:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9772:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9822:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9833:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9818:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9818:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6465706f736974206d696e656420616674657220646561646c696e65",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9838:30:66",
                                                                        "type": "",
                                                                        "value": "deposit mined after deadline"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9811:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9811:58:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9811:58:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9878:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9890:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9901:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9886:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9886:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9878:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9709:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9723:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9558:352:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10089:177:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10106:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10117:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10099:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10099:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10099:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10140:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10151:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10136:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10136:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10156:2:66",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10129:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10129:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10129:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10179:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10190:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10175:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10175:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6d73672e76616c7565206d757374206d6174636820616d6f756e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10195:29:66",
                                                                        "type": "",
                                                                        "value": "msg.value must match amount"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10168:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10168:57:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10168:57:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10234:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10246:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10257:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10242:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10242:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10234:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10066:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10080:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9915:351:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10618:631:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10628:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10640:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10651:3:66",
                                                                        "type": "",
                                                                        "value": "320"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10636:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10636:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10628:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10671:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10682:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10664:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10664:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10664:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10709:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10720:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10705:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10705:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10725:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10698:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10698:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10698:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10741:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10751:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10745:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10813:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10824:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10809:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10809:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10833:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10841:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10829:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10829:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10802:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10802:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10802:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10865:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10876:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10861:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10861:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10885:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10893:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10881:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10881:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10854:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10854:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10854:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10917:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10928:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10913:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10913:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10938:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10946:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10934:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10934:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10906:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10906:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10906:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10970:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10981:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10966:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10966:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value5",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10991:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10999:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10987:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10987:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10959:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10959:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10959:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11023:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11034:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11019:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11019:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11040:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11012:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11012:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11012:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11056:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "11066:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11060:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11104:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11115:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11100:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11100:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value7",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11125:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11133:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11121:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11121:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11093:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11093:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11093:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11157:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11168:3:66",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11153:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11153:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value8",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11178:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11186:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11174:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11174:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11146:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11146:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11146:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11210:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11221:3:66",
                                                                                "type": "",
                                                                                "value": "288"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11206:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11206:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value9",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11231:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11239:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11227:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11227:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11199:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11199:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11199:44:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10515:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value9",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10526:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value8",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10534:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10542:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10550:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10558:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10566:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10574:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10582:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10590:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10598:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10609:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10271:978:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11302:80:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "11329:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11331:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "11331:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "11331:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11318:1:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11325:1:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11321:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11321:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11315:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11315:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11312:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11360:16:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11371:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11374:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11367:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11367:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11360:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11285:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11288:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11294:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11254:128:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11570:319:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11580:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11592:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11603:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11588:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11588:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11580:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11616:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "11626:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11620:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11684:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11699:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11707:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11695:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11695:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11677:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11677:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11677:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11731:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11742:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11727:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11727:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11751:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11759:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11747:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11747:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11720:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11720:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11720:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11783:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11794:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11779:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11779:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11803:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11811:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11799:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11799:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11772:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11772:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11772:59:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11851:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11862:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11847:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11847:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11871:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11879:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11867:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11867:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11840:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11840:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11840:43:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11515:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11526:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11534:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11542:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11550:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11561:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11387:502:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12017:184:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12027:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12039:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12050:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12035:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12035:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12027:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12069:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12084:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12092:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12080:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12080:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12062:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12062:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12062:74:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12156:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12167:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12152:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12152:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "12186:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "12179:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "12179:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12172:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12172:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12145:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12145:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12145:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11978:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11989:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11997:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12008:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11894:307:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12380:181:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12397:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12408:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12390:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12390:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12390:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12431:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12442:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12427:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12427:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12447:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12420:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12420:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12420:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12470:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12481:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12466:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12466:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12486:33:66",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12459:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12459:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12459:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12529:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12541:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12552:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12537:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12537:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12529:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12357:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12371:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12206:355:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12723:241:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12733:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12745:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12756:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12741:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12741:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12733:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "12768:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "12778:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "12772:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12836:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12851:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12859:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12847:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12847:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12829:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12829:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12829:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12883:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12894:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12879:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12879:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12903:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12911:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12899:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12899:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12872:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12872:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12872:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12935:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12946:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12931:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12931:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12951:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12924:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12924:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12924:34:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12676:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12687:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12695:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12703:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12714:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12566:398:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13143:175:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13160:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13171:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13153:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13153:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13153:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13194:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13205:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13190:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13190:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13210:2:66",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13183:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13183:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13183:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13233:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13244:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13229:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13229:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4261642062726964676520726f757465722061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13249:27:66",
                                                                        "type": "",
                                                                        "value": "Bad bridge router address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13222:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13222:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13222:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13286:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13298:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13309:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13294:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13294:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13286:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13120:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13134:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12969:349:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13401:167:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "13447:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "13456:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "13459:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13449:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "13449:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "13449:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13422:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13431:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13418:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13418:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13443:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13414:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13414:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "13411:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13472:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13491:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13485:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13485:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13476:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13532:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13510:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13510:28:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13510:28:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13547:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "13557:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13547:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13367:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13378:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13390:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13323:245:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13747:232:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13764:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13775:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13757:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13757:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13757:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13798:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13809:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13794:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13794:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13814:2:66",
                                                                        "type": "",
                                                                        "value": "42"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13787:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13787:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13787:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13837:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13848:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13833:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13833:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13853:34:66",
                                                                        "type": "",
                                                                        "value": "SafeERC20: ERC20 operation did n"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13826:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13826:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13826:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13908:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13919:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13904:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13904:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6f742073756363656564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13924:12:66",
                                                                        "type": "",
                                                                        "value": "ot succeed"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13897:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13897:40:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13897:40:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13946:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13958:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13969:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13954:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13954:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13946:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13724:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13738:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13573:406:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14158:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14175:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14186:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14168:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14168:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14168:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14209:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14220:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14205:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14205:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14225:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14198:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14198:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14198:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14248:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14259:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14244:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14244:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14264:34:66",
                                                                        "type": "",
                                                                        "value": "Address: insufficient balance fo"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14237:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14237:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14237:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14319:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14330:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14315:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14315:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "722063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14335:8:66",
                                                                        "type": "",
                                                                        "value": "r call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14308:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14308:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14308:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14353:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14365:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14376:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14361:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14361:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14353:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14135:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14149:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13984:402:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14565:179:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14582:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14593:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14575:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14575:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14575:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14616:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14627:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14612:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14612:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14632:2:66",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14605:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14605:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14605:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14655:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14666:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14651:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14651:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14671:31:66",
                                                                        "type": "",
                                                                        "value": "Address: call to non-contract"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14644:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14644:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14644:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14712:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14724:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14735:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14720:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14720:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14712:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14542:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14556:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14391:353:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14802:205:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14812:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "14821:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14816:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14881:63:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14906:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14911:1:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "14902:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "14902:11:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "14925:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "14930:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "14921:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "14921:11:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "14915:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "14915:18:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14895:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14895:39:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14895:39:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14842:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14845:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14839:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14839:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14853:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "14855:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "14864:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "14867:2:66",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14860:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14860:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14855:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14835:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "14831:113:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14970:31:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14983:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14988:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "14979:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "14979:16:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "14997:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14972:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14972:27:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14972:27:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14959:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14962:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14956:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14956:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "14953:48:66"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14780:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14785:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14790:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14749:258:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15149:137:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15159:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15179:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15173:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15173:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15163:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15221:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15229:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15217:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15217:17:66"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15236:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15241:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15195:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15195:53:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15195:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15257:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15268:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15273:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15264:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15264:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15257:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15125:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15130:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15141:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15012:274:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15412:321:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15429:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15440:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15422:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15422:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15422:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15452:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15472:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15466:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15466:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15456:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15499:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15510:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15495:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15495:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15515:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15488:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15488:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15488:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15557:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15565:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15553:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15553:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15574:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15585:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15570:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15570:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15590:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15531:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15531:66:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15531:66:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "15606:121:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15622:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15641:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15649:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15637:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15637:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "15654:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15633:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15633:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15618:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15618:104:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15724:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15614:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15614:113:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15606:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15381:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15392:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15403:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15291:442:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_addresst_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffffffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint64(add(headStart, 96))\n        value4 := abi_decode_uint64(add(headStart, 128))\n        value5 := abi_decode_uint64(add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"OVM_XCHAIN: messenger contract u\")\n        mstore(add(headStart, 96), \"nauthenticated\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"OVM_XCHAIN: wrong sender of cros\")\n        mstore(add(headStart, 96), \"s-domain message\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"can't bridge zero tokens\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"non-whitelisted token or last br\")\n        mstore(add(headStart, 96), \"idge too recent\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint32_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint32_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), and(value3, 0xffffffff))\n        mstore(add(headStart, 128), 160)\n        mstore(add(headStart, 160), 0)\n        tail := add(headStart, 192)\n    }\n    function abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Contract is disabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"deposit token not whitelisted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"slowRelayFeePct must be <= 25%\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"instantRelayFeePct must be <= 25\")\n        mstore(add(headStart, 96), \"%\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint64(x, y) -> diff\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function checked_add_t_uint64(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"deposit mined after deadline\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"msg.value must match amount\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed(headStart, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 320)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), and(value5, _1))\n        mstore(add(headStart, 192), value6)\n        let _2 := 0xffffffffffffffff\n        mstore(add(headStart, 224), and(value7, _2))\n        mstore(add(headStart, 256), and(value8, _2))\n        mstore(add(headStart, 288), and(value9, _2))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 96), and(value3, _1))\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Bad bridge router address\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n        mstore(add(headStart, 96), \"ot succeed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r call\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "60806040526004361061014b5760003560e01c806363635fd9116100b4578063c2d9dca91161006e578063de7eba7811610056578063de7eba78146104b6578063e3229211146104d6578063fbb9fcf71461050357005b8063c2d9dca9146103c4578063daf9c210146103d757005b80639bfd2cdc1161009c5780639bfd2cdc14610354578063a1244c6714610374578063b2d6f4d41461038a57005b806363635fd91461030e5780639a8a05921461033e57005b80633cb747bf116101055780635285e058116100ed5780635285e05814610294578063563c7f60146102c15780635facafbd146102e157005b80633cb747bf1461023b5780634dedca281461027457005b806322f8e5661161013357806322f8e566146101d857806329cb924d146101f85780632ec35b311461021b57005b8063146bf4b1146101545780631c39c38d146101ab57005b3661015257005b005b34801561016057600080fd5b506002546101819073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101b757600080fd5b506000546101819073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101e457600080fd5b506101526101f3366004612323565b61056d565b34801561020457600080fd5b5061020d610616565b6040519081526020016101a2565b34801561022757600080fd5b50610152610236366004612359565b6106dd565b34801561024757600080fd5b506005546101819068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561028057600080fd5b5061015261028f366004612399565b610937565b3480156102a057600080fd5b506006546101819073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102cd57600080fd5b506101526102dc3660046123f2565b610b90565b3480156102ed57600080fd5b506008546101819073ffffffffffffffffffffffffffffffffffffffff1681565b34801561031a57600080fd5b5061032e61032936600461242b565b610de7565b60405190151581526020016101a2565b34801561034a57600080fd5b5061020d60015481565b34801561036057600080fd5b5061015261036f366004612448565b610e4a565b34801561038057600080fd5b5061020d60035481565b34801561039657600080fd5b506005546103ab9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101a2565b6101526103d236600461247f565b6112ba565b3480156103e357600080fd5b5061046d6103f236600461242b565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff90911691830191909152151560608201526080016101a2565b3480156104c257600080fd5b506101526104d136600461242b565b611864565b3480156104e257600080fd5b506007546101819073ffffffffffffffffffffffffffffffffffffffff1681565b34801561050f57600080fd5b5061032e61051e36600461242b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff1661058f57600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16156106d85760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d391906124f0565b905090565b504290565b60065473ffffffffffffffffffffffffffffffffffffffff1661072260055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b15801561084f57600080fd5b505afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190612509565b73ffffffffffffffffffffffffffffffffffffffff161461092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016107d8565b61093382611ab5565b5050565b60065473ffffffffffffffffffffffffffffffffffffffff1661097c60055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016107d8565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa457600080fd5b505afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190612509565b73ffffffffffffffffffffffffffffffffffffffff1614610b7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016107d8565b610b8a848484611b22565b50505050565b60065473ffffffffffffffffffffffffffffffffffffffff16610bd560055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016107d8565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610cfd57600080fd5b505afa158015610d11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d359190612509565b73ffffffffffffffffffffffffffffffffffffffff1614610dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016107d8565b610de28383611cfa565b505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff1615158015610e445750610e4482611dad565b92915050565b610e52611e24565b610e7f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b158015610ee957600080fd5b505af1158015610efd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2191906124f0565b905060008111610f8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e73000000000000000060448201526064016107d8565b610f9683610de7565b611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e74000000000000000000000000000000000060648201526084016107d8565b61102a610616565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260046020526040902060018101805467ffffffffffffffff9490941674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff8516811790915560025491549083169383169390931792821691161415611160576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff851690632e1a7d4d90602401600060405180830381600087803b15801561112457600080fd5b505af1158015611138573d6000803e3d6000fd5b505060075460085473ffffffffffffffffffffffffffffffffffffffff918216975016925050505b6040517fa3a7954800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8086166004830152821660248201526044810183905263ffffffff8416606482015260a06084820152600060a48201527342000000000000000000000000000000000000109063a3a795489060c401600060405180830381600087803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b50506040805185815263ffffffff8716602082015233935073ffffffffffffffffffffffffffffffffffffffff881692507f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a35050610933600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff1661136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c656400000000000000000000000060448201526064016107d8565b611376611e24565b6113a3600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c697374656400000060448201526064016107d8565b6703782dace9d900008467ffffffffffffffff1611156114d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d20323525000060448201526064016107d8565b6703782dace9d900008367ffffffffffffffff161115611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f250000000000000000000000000000000000000000000000000000000000000060648201526084016107d8565b61157e61025883612555565b67ffffffffffffffff16611590610616565b101580156115ba57506115a58261025861257e565b67ffffffffffffffff166115b7610616565b11155b611620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e650000000060448201526064016107d8565b60025473ffffffffffffffffffffffffffffffffffffffff8781166000908152600460205260409020548116911614801561165b5750600034115b1561172f578434146116c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e74000000000060448201526064016107d8565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561171157600080fd5b505af1158015611725573d6000803e3d6000fd5b5050505050611751565b61175173ffffffffffffffffffffffffffffffffffffffff8716333088611eaa565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a160016003600082825461181191906125aa565b9091555061185b9050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60065473ffffffffffffffffffffffffffffffffffffffff166118a960055473ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4f564d5f58434841494e3a206d657373656e67657220636f6e7472616374207560448201527f6e61757468656e7469636174656400000000000000000000000000000000000060648201526084016107d8565b60055473ffffffffffffffffffffffffffffffffffffffff808316916801000000000000000090041673ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b1580156119d157600080fd5b505afa1580156119e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a099190612509565b73ffffffffffffffffffffffffffffffffffffffff1614611aac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f7360448201527f732d646f6d61696e206d6573736167650000000000000000000000000000000060648201526084016107d8565b61093382611f3f565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f9060200160405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001611b6d610616565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd8383611cac610616565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120600101549091611e0b9167ffffffffffffffff91821691740100000000000000000000000000000000000000009091041661257e565b67ffffffffffffffff16611e1d610616565b1192915050565b60005474010000000000000000000000000000000000000000900460ff16611ea8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107d8565b565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610b8a90859061202b565b73ffffffffffffffffffffffffffffffffffffffff8116611fbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4261642062726964676520726f7574657220616464726573730000000000000060448201526064016107d8565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517fa9e8c42c9e7fca7f62755189a16b2f5314d43d8fb24e91ba54e6d65f9314e84990600090a250565b600061208d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121379092919063ffffffff16565b805190915015610de257808060200190518101906120ab91906125c2565b610de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d8565b60606121468484600085612150565b90505b9392505050565b6060824710156121e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107d8565b843b61224a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d8565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612273919061260b565b60006040518083038185875af1925050503d80600081146122b0576040519150601f19603f3d011682016040523d82523d6000602084013e6122b5565b606091505b50915091506122c58282866122d0565b979650505050505050565b606083156122df575081612149565b8251156122ef5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d89190612627565b60006020828403121561233557600080fd5b5035919050565b803567ffffffffffffffff8116811461235457600080fd5b919050565b60006020828403121561236b57600080fd5b6121498261233c565b73ffffffffffffffffffffffffffffffffffffffff8116811461239657600080fd5b50565b6000806000606084860312156123ae57600080fd5b83356123b981612374565b925060208401356123c981612374565b915060408401356123d981612374565b809150509250925092565b801515811461239657600080fd5b6000806040838503121561240557600080fd5b823561241081612374565b91506020830135612420816123e4565b809150509250929050565b60006020828403121561243d57600080fd5b813561214981612374565b6000806040838503121561245b57600080fd5b823561246681612374565b9150602083013563ffffffff8116811461242057600080fd5b60008060008060008060c0878903121561249857600080fd5b86356124a381612374565b955060208701356124b381612374565b9450604087013593506124c86060880161233c565b92506124d66080880161233c565b91506124e460a0880161233c565b90509295509295509295565b60006020828403121561250257600080fd5b5051919050565b60006020828403121561251b57600080fd5b815161214981612374565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8381169083168181101561257657612576612526565b039392505050565b600067ffffffffffffffff8083168185168083038211156125a1576125a1612526565b01949350505050565b600082198211156125bd576125bd612526565b500190565b6000602082840312156125d457600080fd5b8151612149816123e4565b60005b838110156125fa5781810151838201526020016125e2565b83811115610b8a5750506000910152565b6000825161261d8184602087016125df565b9190910192915050565b60208152600082518060208401526126468160408501602087016125df565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220bff8579e0703fae79661b0b44218007636bde40f2bd24c1c342936353367f5e064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x63635FD9 GT PUSH2 0xB4 JUMPI DUP1 PUSH4 0xC2D9DCA9 GT PUSH2 0x6E JUMPI DUP1 PUSH4 0xDE7EBA78 GT PUSH2 0x56 JUMPI DUP1 PUSH4 0xDE7EBA78 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0xE3229211 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0xFBB9FCF7 EQ PUSH2 0x503 JUMPI STOP JUMPDEST DUP1 PUSH4 0xC2D9DCA9 EQ PUSH2 0x3C4 JUMPI DUP1 PUSH4 0xDAF9C210 EQ PUSH2 0x3D7 JUMPI STOP JUMPDEST DUP1 PUSH4 0x9BFD2CDC GT PUSH2 0x9C JUMPI DUP1 PUSH4 0x9BFD2CDC EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0xA1244C67 EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0xB2D6F4D4 EQ PUSH2 0x38A JUMPI STOP JUMPDEST DUP1 PUSH4 0x63635FD9 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x33E JUMPI STOP JUMPDEST DUP1 PUSH4 0x3CB747BF GT PUSH2 0x105 JUMPI DUP1 PUSH4 0x5285E058 GT PUSH2 0xED JUMPI DUP1 PUSH4 0x5285E058 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x563C7F60 EQ PUSH2 0x2C1 JUMPI DUP1 PUSH4 0x5FACAFBD EQ PUSH2 0x2E1 JUMPI STOP JUMPDEST DUP1 PUSH4 0x3CB747BF EQ PUSH2 0x23B JUMPI DUP1 PUSH4 0x4DEDCA28 EQ PUSH2 0x274 JUMPI STOP JUMPDEST DUP1 PUSH4 0x22F8E566 GT PUSH2 0x133 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0x2EC35B31 EQ PUSH2 0x21B JUMPI STOP JUMPDEST DUP1 PUSH4 0x146BF4B1 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x1AB JUMPI STOP JUMPDEST CALLDATASIZE PUSH2 0x152 JUMPI STOP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x160 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2323 JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x227 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x236 CALLDATASIZE PUSH1 0x4 PUSH2 0x2359 JUMP JUMPDEST PUSH2 0x6DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x247 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x181 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x28F CALLDATASIZE PUSH1 0x4 PUSH2 0x2399 JUMP JUMPDEST PUSH2 0x937 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x2DC CALLDATASIZE PUSH1 0x4 PUSH2 0x23F2 JUMP JUMPDEST PUSH2 0xB90 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x8 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32E PUSH2 0x329 CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH2 0xDE7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x2448 JUMP JUMPDEST PUSH2 0xE4A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20D PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x3AB SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1A2 JUMP JUMPDEST PUSH2 0x152 PUSH2 0x3D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x247F JUMP JUMPDEST PUSH2 0x12BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46D PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 DUP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x1A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x152 PUSH2 0x4D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH2 0x1864 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x7 SLOAD PUSH2 0x181 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x32E PUSH2 0x51E CALLDATASIZE PUSH1 0x4 PUSH2 0x242B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x58F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x22F8E56600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x60F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6D3 SWAP2 SWAP1 PUSH2 0x24F0 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x722 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x863 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x887 SWAP2 SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x92A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x933 DUP3 PUSH2 0x1AB5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x97C PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA36 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xADC SWAP2 SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0xB8A DUP5 DUP5 DUP5 PUSH2 0x1B22 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xBD5 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC8F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD35 SWAP2 SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xDD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0xDE2 DUP4 DUP4 PUSH2 0x1CFA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 ISZERO PUSH2 0xE44 JUMPI POP PUSH2 0xE44 DUP3 PUSH2 0x1DAD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xE52 PUSH2 0x1E24 JUMP JUMPDEST PUSH2 0xE7F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF21 SWAP2 SWAP1 PUSH2 0x24F0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0xF8D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x63616E277420627269646765207A65726F20746F6B656E730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0xF96 DUP4 PUSH2 0xDE7 JUMP JUMPDEST PUSH2 0x1022 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F6E2D77686974656C697374656420746F6B656E206F72206C617374206272 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964676520746F6F20726563656E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x102A PUSH2 0x616 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x2 SLOAD SWAP2 SLOAD SWAP1 DUP4 AND SWAP4 DUP4 AND SWAP4 SWAP1 SWAP4 OR SWAP3 DUP3 AND SWAP2 AND EQ ISZERO PUSH2 0x1160 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1138 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP8 POP AND SWAP3 POP POP POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA3A7954800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA4 DUP3 ADD MSTORE PUSH20 0x4200000000000000000000000000000000000010 SWAP1 PUSH4 0xA3A79548 SWAP1 PUSH1 0xC4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1204 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1218 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP8 AND PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP3 POP PUSH32 0x95B5EC953BD38FBAA6F859725352BF73202C155A6809E5622C95CEEF331EAC6C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH2 0x933 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP6 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x136E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742069732064697361626C6564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x1376 PUSH2 0x1E24 JUMP JUMPDEST PUSH2 0x13A3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1454 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F73697420746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x14D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6F7752656C6179466565506374206D757374206265203C3D203235250000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x1572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E7374616E7452656C6179466565506374206D757374206265203C3D203235 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x157E PUSH2 0x258 DUP4 PUSH2 0x2555 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1590 PUSH2 0x616 JUMP JUMPDEST LT ISZERO DUP1 ISZERO PUSH2 0x15BA JUMPI POP PUSH2 0x15A5 DUP3 PUSH2 0x258 PUSH2 0x257E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x15B7 PUSH2 0x616 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0x1620 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F736974206D696E656420616674657220646561646C696E6500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP2 AND EQ DUP1 ISZERO PUSH2 0x165B JUMPI POP PUSH1 0x0 CALLVALUE GT JUMPDEST ISZERO PUSH2 0x172F JUMPI DUP5 CALLVALUE EQ PUSH2 0x16C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206D757374206D6174636820616D6F756E740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1711 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1725 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1751 JUMP JUMPDEST PUSH2 0x1751 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP9 PUSH2 0x1EAA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP7 DUP8 MSTORE SWAP1 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP12 DUP4 AND SWAP1 DUP6 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP1 DUP6 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH32 0xAB77617F2B9BDBB101FC328E585470FB3C845C92B25C4B080CB7B66F7163CF72 SWAP1 PUSH2 0x140 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1811 SWAP2 SWAP1 PUSH2 0x25AA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x185B SWAP1 POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18A9 PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1963 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A206D657373656E67657220636F6E74726163742075 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6E61757468656E74696361746564000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 DIV AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6E296E45 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A09 SWAP2 SWAP1 PUSH2 0x2509 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1AAC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564D5F58434841494E3A2077726F6E672073656E646572206F662063726F73 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x732D646F6D61696E206D65737361676500000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x933 DUP3 PUSH2 0x1F3F JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1B6D PUSH2 0x616 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP6 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 DUP5 AND OR DUP2 SSTORE SWAP5 DUP7 ADD MLOAD SWAP5 SWAP1 SWAP3 ADD DUP1 SLOAD SWAP3 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP1 SWAP2 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH21 0x10000000000000000000000000000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH32 0x93F23ADD56B90352EA2EF3BC2123262792AF300DC6060C99F6EE06A7026863BD DUP4 DUP4 PUSH2 0x1CAC PUSH2 0x616 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP7 ISZERO ISZERO SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF84482204FF927822D3068D71E16E14B51CB1B2ADAFA7D6E11EDC1B8DFD8C0DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 PUSH2 0x1E0B SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x257E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x1E1D PUSH2 0x616 JUMP JUMPDEST GT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1EA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xB8A SWAP1 DUP6 SWAP1 PUSH2 0x202B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1FBC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4261642062726964676520726F75746572206164647265737300000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0xA9E8C42C9E7FCA7F62755189A16B2F5314D43D8FB24E91BA54E6D65F9314E849 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x208D DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2137 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xDE2 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x20AB SWAP2 SWAP1 PUSH2 0x25C2 JUMP JUMPDEST PUSH2 0xDE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x2146 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x2150 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x21E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x7D8 JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x224A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x2273 SWAP2 SWAP1 PUSH2 0x260B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x22B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x22B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x22C5 DUP3 DUP3 DUP7 PUSH2 0x22D0 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x22DF JUMPI POP DUP2 PUSH2 0x2149 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x22EF JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D8 SWAP2 SWAP1 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2335 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2354 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x236B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2149 DUP3 PUSH2 0x233C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x23AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x23B9 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x23C9 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x23D9 DUP2 PUSH2 0x2374 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2396 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2410 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2420 DUP2 PUSH2 0x23E4 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x243D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2149 DUP2 PUSH2 0x2374 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x245B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2466 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x24A3 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x24B3 DUP2 PUSH2 0x2374 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x24C8 PUSH1 0x60 DUP9 ADD PUSH2 0x233C JUMP JUMPDEST SWAP3 POP PUSH2 0x24D6 PUSH1 0x80 DUP9 ADD PUSH2 0x233C JUMP JUMPDEST SWAP2 POP PUSH2 0x24E4 PUSH1 0xA0 DUP9 ADD PUSH2 0x233C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2502 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2149 DUP2 PUSH2 0x2374 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x2576 JUMPI PUSH2 0x2576 PUSH2 0x2526 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x25A1 JUMPI PUSH2 0x25A1 PUSH2 0x2526 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x25BD JUMPI PUSH2 0x25BD PUSH2 0x2526 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2149 DUP2 PUSH2 0x23E4 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x25FA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x25E2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xB8A JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x261D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x25DF JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x2646 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x25DF JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF 0xF8 JUMPI SWAP15 SMOD SUB STATICCALL 0xE7 SWAP7 PUSH2 0xB0B4 TIMESTAMP XOR STOP PUSH23 0x36BDE40F2BD24C1C342936353367F5E064736F6C634300 ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "308:4838:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1076:21:44;;;;;;;;;;-1:-1:-1;1076:21:44;;;;;;;;;;;190:42:66;178:55;;;160:74;;148:2;133:18;1076:21:44;;;;;;;;391:27:30;;;;;;;;;;-1:-1:-1;391:27:30;;;;;;;;1097:115;;;;;;;;;;-1:-1:-1;1097:115:30;;;;;:::i;:::-;;:::i;1457:276::-;;;;;;;;;;;;;:::i;:::-;;;576:25:66;;;564:2;549:18;1457:276:30;430:177:66;2728:203:52;;;;;;;;;;-1:-1:-1;2728:203:52;;;;;:::i;:::-;;:::i;500:24:1:-;;;;;;;;;;-1:-1:-1;500:24:1;;;;;;;;;;;3450:226:52;;;;;;;;;;-1:-1:-1;3450:226:52;;;;;:::i;:::-;;:::i;601:31::-;;;;;;;;;;-1:-1:-1;601:31:52;;;;;;;;4041:199;;;;;;;;;;-1:-1:-1;4041:199:52;;;;;:::i;:::-;;:::i;900:27:53:-;;;;;;;;;;-1:-1:-1;900:27:53;;;;;;;;10863:154:44;;;;;;;;;;-1:-1:-1;10863:154:44;;;;;:::i;:::-;;:::i;:::-;;;2597:14:66;;2590:22;2572:41;;2560:2;2545:18;10863:154:44;2432:187:66;929:22:44;;;;;;;;;;;;;;;;3218:1624:53;;;;;;;;;;-1:-1:-1;3218:1624:53;;;;;:::i;:::-;;:::i;1198:31:44:-;;;;;;;;;;;;;;;;1795:34;;;;;;;;;;-1:-1:-1;1795:34:44;;;;;;;;;;;3222:18:66;3210:31;;;3192:50;;3180:2;3165:18;1795:34:44;3048:200:66;6672:2809:44;;;;;;:::i;:::-;;:::i;1602:65::-;;;;;;;;;;-1:-1:-1;1602:65:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4166:42:66;4235:15;;;4217:34;;4287:15;;;;4282:2;4267:18;;4260:43;4351:18;4339:31;;;4319:18;;;4312:59;;;;4414:14;4407:22;4402:2;4387:18;;4380:50;4143:3;4128:19;1602:65:44;3933:503:66;2278:168:52;;;;;;;;;;-1:-1:-1;2278:168:52;;;;;:::i;:::-;;:::i;692:20:53:-;;;;;;;;;;-1:-1:-1;692:20:53;;;;;;;;9947:140:44;;;;;;;;;;-1:-1:-1;9947:140:44;;;;;:::i;:::-;10034:26;;10011:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;:46;;;9947:140;1097:115:30;899:3;875:12;:28;:12;867:37;;;;;;1171:12:::1;::::0;1165:40:::1;::::0;;;;::::1;::::0;::::1;576:25:66::0;;;1171:12:30::1;::::0;;::::1;::::0;1165:34:::1;::::0;549:18:66;;1165:40:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1097:115:::0;:::o;1457:276::-;1512:7;1535:12;;:28;:12;:28;1531:196;;1592:12;;;;;;;;;;1586:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1579:43;;1457:276;:::o;1531:196::-;-1:-1:-1;1660:15:30;;1457:276::o;2728:203:52:-;2843:16;;;;1221:25:1;1960:9;;;;;;;;;1837:140;1221:25;1199:48;;:10;:48;;;1178:141;;;;;;;4832:2:66;1178:141:1;;;4814:21:66;4871:2;4851:18;;;4844:30;4910:34;4890:18;;;4883:62;4981:16;4961:18;;;4954:44;5015:19;;1178:141:1;;;;;;;;;1960:9;;1351:72;;;;;1960:9;;;;1351:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;1330:167;;;;;;;5503:2:66;1330:167:1;;;5485:21:66;5542:2;5522:18;;;5515:30;5581:34;5561:18;;;5554:62;5652:18;5632;;;5625:46;5688:19;;1330:167:1;5301:412:66;1330:167:1;2875:49:52::1;2900:23;2875:24;:49::i;:::-;2728:203:::0;;:::o;3450:226::-;3594:16;;;;1221:25:1;1960:9;;;;;;;;;1837:140;1221:25;1199:48;;:10;:48;;;1178:141;;;;;;;4832:2:66;1178:141:1;;;4814:21:66;4871:2;4851:18;;;4844:30;4910:34;4890:18;;;4883:62;4981:16;4961:18;;;4954:44;5015:19;;1178:141:1;4630:410:66;1178:141:1;1960:9;;1351:72;;;;;1960:9;;;;1351:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;1330:167;;;;;;;5503:2:66;1330:167:1;;;5485:21:66;5542:2;5522:18;;;5515:30;5581:34;5561:18;;;5554:62;5652:18;5632;;;5625:46;5688:19;;1330:167:1;5301:412:66;1330:167:1;3622:47:52::1;3638:7;3647;3656:12;3622:15;:47::i;:::-;3450:226:::0;;;;:::o;4041:199::-;4157:16;;;;1221:25:1;1960:9;;;;;;;;;1837:140;1221:25;1199:48;;:10;:48;;;1178:141;;;;;;;4832:2:66;1178:141:1;;;4814:21:66;4871:2;4851:18;;;4844:30;4910:34;4890:18;;;4883:62;4981:16;4961:18;;;4954:44;5015:19;;1178:141:1;4630:410:66;1178:141:1;1960:9;;1351:72;;;;;1960:9;;;;1351:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;1330:167;;;;;;;5503:2:66;1330:167:1;;;5485:21:66;5542:2;5522:18;;;5515:30;5581:34;5561:18;;;5554:62;5652:18;5632;;;5625:46;5688:19;;1330:167:1;5301:412:66;1330:167:1;4189:44:52::1;4208:7;4217:15;4189:18;:44::i;:::-;4041:199:::0;;;:::o;10863:154:44:-;10034:26;;;10920:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;:46;;10943:67;;;;;10972:38;11002:7;10972:29;:38::i;:::-;10936:74;10863:154;-1:-1:-1;;10863:154:44:o;3218:1624:53:-;1317:19:28;:17;:19::i;:::-;1346:17;2459:5;2445:19;;;;;;2335:136;1346:17;3346:43:53::1;::::0;;;;3383:4:::1;3346:43;::::0;::::1;160:74:66::0;3312:31:53::1;::::0;3346:28:::1;::::0;::::1;::::0;::::1;::::0;133:18:66;;3346:43:53::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3312:77;;3433:1;3407:23;:27;3399:64;;;::::0;::::1;::::0;;5920:2:66;3399:64:53::1;::::0;::::1;5902:21:66::0;5959:2;5939:18;;;5932:30;5998:26;5978:18;;;5971:54;6042:18;;3399:64:53::1;5718:348:66::0;3399:64:53::1;3481:18;3491:7;3481:9;:18::i;:::-;3473:78;;;::::0;::::1;::::0;;6273:2:66;3473:78:53::1;::::0;::::1;6255:21:66::0;6312:2;6292:18;;;6285:30;6351:34;6331:18;;;6324:62;6422:17;6402:18;;;6395:45;6457:19;;3473:78:53::1;6071:411:66::0;3473:78:53::1;3613:16;:14;:16::i;:::-;3562:26;::::0;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:41:::1;::::0;::::1;:68:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;4066:6:::1;::::0;4028:34;;3662:39;;;;;;;;;;;4028:34;::::1;4066:6:::0;::::1;4028:44;4024:195;;;4088:52;::::0;;;;::::1;::::0;::::1;576:25:66::0;;;4088:27:53::1;::::0;::::1;::::0;::::1;::::0;549:18:66;;4088:52:53::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4164:5:53::1;::::0;4196:12:::1;::::0;4164:5:::1;::::0;;::::1;::::0;-1:-1:-1;4196:12:53::1;::::0;-1:-1:-1;;;4024:195:53::1;4228:525;::::0;;;;6790:42:66;6859:15;;;4228:525:53::1;::::0;::::1;6841:34:66::0;6911:15;;6891:18;;;6884:43;6943:18;;;6936:34;;;7018:10;7006:23;;6986:18;;;6979:51;7067:3;7046:19;;;7039:32;-1:-1:-1;7087:19:66;;;7080:30;864:42:3::1;::::0;4228:68:53::1;::::0;7127:19:66;;4228:525:53::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4769:66:53::1;::::0;;7330:25:66;;;7403:10;7391:23;;7386:2;7371:18;;7364:51;4824:10:53::1;::::0;-1:-1:-1;4769:66:53::1;::::0;::::1;::::0;-1:-1:-1;4769:66:53::1;::::0;7303:18:66;4769:66:53::1;;;;;;;3302:1540;;1384:20:28::0;2658:11;:18;;;;;;;;2477:206;6672:2809:44;2850:26;;;;;;;:17;:26;;;;;:42;;;:26;;:42;;;;;2842:75;;;;;;;7628:2:66;2842:75:44;;;7610:21:66;7667:2;7647:18;;;7640:30;7706:22;7686:18;;;7679:50;7746:18;;2842:75:44;7426:344:66;2842:75:44;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;10034:26:44::0;;;10011:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;6942:67:::2;;;::::0;::::2;::::0;;7977:2:66;6942:67:44::2;::::0;::::2;7959:21:66::0;8016:2;7996:18;;;7989:30;8055:31;8035:18;;;8028:59;8104:18;;6942:67:44::2;7775:353:66::0;6942:67:44::2;7276:7;7257:15;:26;;;;7249:69;;;::::0;::::2;::::0;;8335:2:66;7249:69:44::2;::::0;::::2;8317:21:66::0;8374:2;8354:18;;;8347:30;8413:32;8393:18;;;8386:60;8463:18;;7249:69:44::2;8133:354:66::0;7249:69:44::2;7358:7;7336:18;:29;;;;7328:75;;;::::0;::::2;::::0;;8694:2:66;7328:75:44::2;::::0;::::2;8676:21:66::0;8733:2;8713:18;;;8706:30;8772:34;8752:18;;;8745:62;8843:3;8823:18;;;8816:31;8864:19;;7328:75:44::2;8492:397:66::0;7328:75:44::2;8061:27;8078:10;8061:14:::0;:27:::2;:::i;:::-;8041:47;;:16;:14;:16::i;:::-;:47;;:98;;;;-1:-1:-1::0;8112:27:44::2;:14:::0;8129:10:::2;8112:27;:::i;:::-;8092:47;;:16;:14;:16::i;:::-;:47;;8041:98;8020:173;;;::::0;::::2;::::0;;9760:2:66;8020:173:44::2;::::0;::::2;9742:21:66::0;9799:2;9779:18;;;9772:30;9838;9818:18;;;9811:58;9886:18;;8020:173:44::2;9558:352:66::0;8020:173:44::2;8468:6;::::0;::::2;8430:26:::0;;::::2;8468:6;8430:26:::0;;;:17:::2;:26;::::0;;;;:34;;::::2;8468:6:::0;::::2;8430:44;:61:::0;::::2;;;;8490:1;8478:9;:13;8430:61;8426:623;;;8528:6;8515:9;:19;8507:59;;;::::0;::::2;::::0;;10117:2:66;8507:59:44::2;::::0;::::2;10099:21:66::0;10156:2;10136:18;;;10129:30;10195:29;10175:18;;;10168:57;10242:18;;8507:59:44::2;9915:351:66::0;8507:59:44::2;8598:7;8580:35;;;8624:9;8580:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;8426:623;;;8982:67;:32;::::0;::::2;9015:10;9035:4;9042:6:::0;8982:32:::2;:67::i;:::-;9093:7;::::0;9114:16:::2;::::0;9268:26:::2;::::0;;::::2;;::::0;;;:17:::2;:26;::::0;;;;;;;;:34;9065:377;;10664:25:66;;;10705:18;;;10698:34;;;;10829:15;;;10809:18;;;10802:43;9244:10:44::2;10876:2:66::0;10861:18;;10854:43;9268:34:44;::::2;10928:3:66::0;10913:19;;10906:44;10981:3;10966:19;;10959:44;11034:3;11019:19;;11012:35;;;11066:18;11121:15;;;11115:3;11100:19;;11093:44;11174:15;;;11168:3;11153:19;;11146:44;11227:15;;11221:3;11206:19;;11199:44;9065:377:44::2;::::0;10651:3:66;10636:19;9065:377:44::2;;;;;;;9473:1;9453:16;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;1384:20:28::1;::::0;-1:-1:-1;2658:11:28;:18;;;;;;;;2477:206;1384:20:::1;6672:2809:44::0;;;;;;;:::o;2278:168:52:-;2370:16;;;;1221:25:1;1960:9;;;;;;;;;1837:140;1221:25;1199:48;;:10;:48;;;1178:141;;;;;;;4832:2:66;1178:141:1;;;4814:21:66;4871:2;4851:18;;;4844:30;4910:34;4890:18;;;4883:62;4981:16;4961:18;;;4954:44;5015:19;;1178:141:1;4630:410:66;1178:141:1;1960:9;;1351:72;;;;;1960:9;;;;1351:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;1330:167;;;;;;;5503:2:66;1330:167:1;;;5485:21:66;5542:2;5522:18;;;5515:30;5581:34;5561:18;;;5554:62;5652:18;5632;;;5625:46;5688:19;;1330:167:1;5301:412:66;1330:167:1;2398:41:52::1;2419:19;2398:20;:41::i;4015:198:44:-:0;4100:20;:46;;;;;;;;;;;;;4161:45;;3192:50:66;;;4161:45:44;;3180:2:66;3165:18;4161:45:44;;;;;;;4015:198;:::o;4632:445::-;4791:191;;;;;;;;4835:7;4791:191;;;;;;4870:12;4791:191;;;;;;4919:16;:14;:16::i;:::-;4791:191;;;;;;4967:4;4791:191;;;;;;;4762:26;;;;-1:-1:-1;4762:26:44;;;:17;:26;;;;;;;:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4998:72;5013:7;4762:26;5038:16;:14;:16::i;:::-;4998:72;;;11626:42:66;11695:15;;;11677:34;;11747:15;;;11742:2;11727:18;;11720:43;11811:18;11799:31;;;11779:18;;;11772:59;11867:15;;;11862:2;11847:18;;11840:43;11603:3;11588:19;4998:72:44;;;;;;;4632:445;;;:::o;5342:209::-;5428:26;;;;;;;:17;:26;;;;;;;;;:42;;:60;;;;;;;;;;;;;;;;;;5503:41;;12062:74:66;;;12152:18;;;12145:50;5503:41:44;;12035:18:66;5503:41:44;;;;;;;5342:209;;:::o;10093:192::-;10258:20;;10214:26;;;10172:4;10214:26;;;:17;:26;;;;;10258:20;10214:41;;10172:4;;10214:64;;10258:20;;;;;10214:41;;;;;:64;:::i;:::-;10195:83;;:16;:14;:16::i;:::-;:83;;10093:192;-1:-1:-1;;10093:192:44:o;2143:186:28:-;2275:11;;;;;;;2267:55;;;;;;;12408:2:66;2267:55:28;;;12390:21:66;12447:2;12427:18;;;12420:30;12486:33;12466:18;;;12459:61;12537:18;;2267:55:28;12206:355:66;2267:55:28;2143:186::o;815:203:10:-;942:68;;;12778:42:66;12847:15;;;942:68:10;;;12829:34:66;12899:15;;12879:18;;;12872:43;12931:18;;;;12924:34;;;942:68:10;;;;;;;;;;12741:18:66;;;;942:68:10;;;;;;;;;;965:27;942:68;;;915:96;;935:5;;915:19;:96::i;6147:252:52:-;6233:33;;;6225:71;;;;;;;13171:2:66;6225:71:52;;;13153:21:66;13210:2;13190:18;;;13183:30;13249:27;13229:18;;;13222:55;13294:18;;6225:71:52;12969:349:66;6225:71:52;6306:16;:38;;;;;;;;;;;;;6359:33;;;;-1:-1:-1;;6359:33:52;6147:252;:::o;3022:751:10:-;3441:23;3467:69;3495:4;3467:69;;;;;;;;;;;;;;;;;3475:5;3467:27;;;;:69;;;;;:::i;:::-;3550:17;;3441:95;;-1:-1:-1;3550:21:10;3546:221;;3690:10;3679:30;;;;;;;;;;;;:::i;:::-;3671:85;;;;;;;13775:2:66;3671:85:10;;;13757:21:66;13814:2;13794:18;;;13787:30;13853:34;13833:18;;;13826:62;13924:12;13904:18;;;13897:40;13954:19;;3671:85:10;13573:406:66;3573:193:11;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;:::-;3700:59;;3573:193;;;;;;:::o;4600:523::-;4727:12;4784:5;4759:21;:30;;4751:81;;;;;;;14186:2:66;4751:81:11;;;14168:21:66;14225:2;14205:18;;;14198:30;14264:34;14244:18;;;14237:62;14335:8;14315:18;;;14308:36;14361:19;;4751:81:11;13984:402:66;4751:81:11;1078:20;;4842:60;;;;;;;14593:2:66;4842:60:11;;;14575:21:66;14632:2;14612:18;;;14605:30;14671:31;14651:18;;;14644:59;14720:18;;4842:60:11;14391:353:66;4842:60:11;4973:12;4987:23;5014:6;:11;;5034:5;5042:4;5014:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:11:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:11;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7363:429;7764:12;7757:20;;;;;;;;;;;:::i;245:180:66:-;304:6;357:2;345:9;336:7;332:23;328:32;325:52;;;373:1;370;363:12;325:52;-1:-1:-1;396:23:66;;245:180;-1:-1:-1;245:180:66:o;612:171::-;679:20;;739:18;728:30;;718:41;;708:69;;773:1;770;763:12;708:69;612:171;;;:::o;788:184::-;846:6;899:2;887:9;878:7;874:23;870:32;867:52;;;915:1;912;905:12;867:52;938:28;956:9;938:28;:::i;977:154::-;1063:42;1056:5;1052:54;1045:5;1042:65;1032:93;;1121:1;1118;1111:12;1032:93;977:154;:::o;1136:529::-;1213:6;1221;1229;1282:2;1270:9;1261:7;1257:23;1253:32;1250:52;;;1298:1;1295;1288:12;1250:52;1337:9;1324:23;1356:31;1381:5;1356:31;:::i;:::-;1406:5;-1:-1:-1;1463:2:66;1448:18;;1435:32;1476:33;1435:32;1476:33;:::i;:::-;1528:7;-1:-1:-1;1587:2:66;1572:18;;1559:32;1600:33;1559:32;1600:33;:::i;:::-;1652:7;1642:17;;;1136:529;;;;;:::o;1670:118::-;1756:5;1749:13;1742:21;1735:5;1732:32;1722:60;;1778:1;1775;1768:12;1793:382;1858:6;1866;1919:2;1907:9;1898:7;1894:23;1890:32;1887:52;;;1935:1;1932;1925:12;1887:52;1974:9;1961:23;1993:31;2018:5;1993:31;:::i;:::-;2043:5;-1:-1:-1;2100:2:66;2085:18;;2072:32;2113:30;2072:32;2113:30;:::i;:::-;2162:7;2152:17;;;1793:382;;;;;:::o;2180:247::-;2239:6;2292:2;2280:9;2271:7;2267:23;2263:32;2260:52;;;2308:1;2305;2298:12;2260:52;2347:9;2334:23;2366:31;2391:5;2366:31;:::i;2624:419::-;2691:6;2699;2752:2;2740:9;2731:7;2727:23;2723:32;2720:52;;;2768:1;2765;2758:12;2720:52;2807:9;2794:23;2826:31;2851:5;2826:31;:::i;:::-;2876:5;-1:-1:-1;2933:2:66;2918:18;;2905:32;2981:10;2968:24;;2956:37;;2946:65;;3007:1;3004;2997:12;3253:675;3354:6;3362;3370;3378;3386;3394;3447:3;3435:9;3426:7;3422:23;3418:33;3415:53;;;3464:1;3461;3454:12;3415:53;3503:9;3490:23;3522:31;3547:5;3522:31;:::i;:::-;3572:5;-1:-1:-1;3629:2:66;3614:18;;3601:32;3642:33;3601:32;3642:33;:::i;:::-;3694:7;-1:-1:-1;3748:2:66;3733:18;;3720:32;;-1:-1:-1;3771:37:66;3804:2;3789:18;;3771:37;:::i;:::-;3761:47;;3827:38;3860:3;3849:9;3845:19;3827:38;:::i;:::-;3817:48;;3884:38;3917:3;3906:9;3902:19;3884:38;:::i;:::-;3874:48;;3253:675;;;;;;;;:::o;4441:184::-;4511:6;4564:2;4552:9;4543:7;4539:23;4535:32;4532:52;;;4580:1;4577;4570:12;4532:52;-1:-1:-1;4603:16:66;;4441:184;-1:-1:-1;4441:184:66:o;5045:251::-;5115:6;5168:2;5156:9;5147:7;5143:23;5139:32;5136:52;;;5184:1;5181;5174:12;5136:52;5216:9;5210:16;5235:31;5260:5;5235:31;:::i;8894:184::-;8946:77;8943:1;8936:88;9043:4;9040:1;9033:15;9067:4;9064:1;9057:15;9083:229;9122:4;9151:18;9219:10;;;;9189;;9241:12;;;9238:38;;;9256:18;;:::i;:::-;9293:13;;9083:229;-1:-1:-1;;;9083:229:66:o;9317:236::-;9356:3;9384:18;9429:2;9426:1;9422:10;9459:2;9456:1;9452:10;9490:3;9486:2;9482:12;9477:3;9474:21;9471:47;;;9498:18;;:::i;:::-;9534:13;;9317:236;-1:-1:-1;;;;9317:236:66:o;11254:128::-;11294:3;11325:1;11321:6;11318:1;11315:13;11312:39;;;11331:18;;:::i;:::-;-1:-1:-1;11367:9:66;;11254:128::o;13323:245::-;13390:6;13443:2;13431:9;13422:7;13418:23;13414:32;13411:52;;;13459:1;13456;13449:12;13411:52;13491:9;13485:16;13510:28;13532:5;13510:28;:::i;14749:258::-;14821:1;14831:113;14845:6;14842:1;14839:13;14831:113;;;14921:11;;;14915:18;14902:11;;;14895:39;14867:2;14860:10;14831:113;;;14962:6;14959:1;14956:13;14953:48;;;-1:-1:-1;;14997:1:66;14979:16;;14972:27;14749:258::o;15012:274::-;15141:3;15179:6;15173:13;15195:53;15241:6;15236:3;15229:4;15221:6;15217:17;15195:53;:::i;:::-;15264:16;;;;;15012:274;-1:-1:-1;;15012:274:66:o;15291:442::-;15440:2;15429:9;15422:21;15403:4;15472:6;15466:13;15515:6;15510:2;15499:9;15495:18;15488:34;15531:66;15590:6;15585:2;15574:9;15570:18;15565:2;15557:6;15553:15;15531:66;:::i;:::-;15649:2;15637:15;15654:66;15633:88;15618:104;;;;15724:2;15614:113;;15291:442;-1:-1:-1;;15291:442:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "1980400",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "": "164",
                                "bridgeTokens(address,uint32)": "infinite",
                                "canBridge(address)": "infinite",
                                "chainId()": "2363",
                                "crossDomainAdmin()": "2347",
                                "deposit(address,address,uint256,uint64,uint64,uint64)": "infinite",
                                "getCurrentTime()": "infinite",
                                "isWhitelistToken(address)": "2630",
                                "l1EthWrapper()": "2391",
                                "l1Weth()": "2349",
                                "l2Eth()": "2368",
                                "messenger()": "2359",
                                "minimumBridgingDelay()": "2402",
                                "numberOfDeposits()": "2362",
                                "setCrossDomainAdmin(address)": "infinite",
                                "setCurrentTime(uint256)": "infinite",
                                "setEnableDeposits(address,bool)": "infinite",
                                "setMinimumBridgingDelay(uint64)": "infinite",
                                "timerAddress()": "2371",
                                "whitelistToken(address,address,address)": "infinite",
                                "whitelistedTokens(address)": "4840"
                            }
                        },
                        "methodIdentifiers": {
                            "bridgeTokens(address,uint32)": "9bfd2cdc",
                            "canBridge(address)": "63635fd9",
                            "chainId()": "9a8a0592",
                            "crossDomainAdmin()": "5285e058",
                            "deposit(address,address,uint256,uint64,uint64,uint64)": "c2d9dca9",
                            "getCurrentTime()": "29cb924d",
                            "isWhitelistToken(address)": "fbb9fcf7",
                            "l1EthWrapper()": "5facafbd",
                            "l1Weth()": "146bf4b1",
                            "l2Eth()": "e3229211",
                            "messenger()": "3cb747bf",
                            "minimumBridgingDelay()": "b2d6f4d4",
                            "numberOfDeposits()": "a1244c67",
                            "setCrossDomainAdmin(address)": "de7eba78",
                            "setCurrentTime(uint256)": "22f8e566",
                            "setEnableDeposits(address,bool)": "563c7f60",
                            "setMinimumBridgingDelay(uint64)": "2ec35b31",
                            "timerAddress()": "1c39c38d",
                            "whitelistToken(address,address,address)": "4dedca28",
                            "whitelistedTokens(address)": "daf9c210"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_crossDomainAdmin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_minimumBridgingDelay\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"_chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_l1Weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Eth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l1EthWrapper\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"timerAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"DepositsEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"FundsDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"SetMinimumBridgingDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetXDomainAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numberOfTokensBridged\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1Gas\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"TokensBridged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"name\":\"WhitelistToken\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"l1Gas\",\"type\":\"uint32\"}],\"name\":\"bridgeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"canBridge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"crossDomainAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"isWhitelistToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1EthWrapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Weth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Eth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumBridgingDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newCrossDomainAdmin\",\"type\":\"address\"}],\"name\":\"setCrossDomainAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"setEnableDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"setMinimumBridgingDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l1BridgePool\",\"type\":\"address\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l1BridgePool\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"Modified version of OVM_BridgeDepositBox that supports Optimism ETH being sent over the canonical bridge as ETH. This is re-wrapped to WETH on L2. All other functionality remains the same.\",\"kind\":\"dev\",\"methods\":{\"bridgeTokens(address,uint32)\":{\"details\":\"The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam      on L1 as the finalization of a L2->L1 tx is quite expensive.\",\"params\":{\"l1Gas\":\"Unused by optimism, but included for potential forward compatibility considerations.\",\"l2Token\":\"L2 token to relay over the canonical bridge.\"}},\"canBridge(address)\":{\"details\":\"This function is also public for caller convenience.\",\"params\":{\"l2Token\":\"L2 token to check bridging status.\"},\"returns\":{\"_0\":\"true if token is whitelised and enough time has elapsed since the previous bridge.\"}},\"constructor\":{\"params\":{\"_chainId\":\"L2 Chain identifier this deposit box is deployed on.\",\"_crossDomainAdmin\":\"Address of the L1 contract that can call admin functions on this contract from L1.\",\"_l1EthWrapper\":\"Address of custom ETH wrapper on L1. Any ETH sent to this contract will be wrapped to WETH     and sent to the WETH Bridge Pool.\",\"_l1Weth\":\"Address of Weth on L1. Used to inform if a bridging action should wrap ETH to WETH, if the desired      asset-to-bridge is for a whitelisted token mapped to this L1 Weth token.\",\"_l2Eth\":\"Address of ETH on L2. If someone wants to bridge L2 Weth from this contract to L1, then L2 ETH     should be sent over the Optimism bridge.\",\"_minimumBridgingDelay\":\"Minimum second that must elapse between L2->L1 token transfer to prevent dos.\",\"timerAddress\":\"Timer used to synchronize contract time in testing. Set to 0x000... in production.\"}},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"details\":\"Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.\",\"params\":{\"amount\":\"How many L2 tokens should be deposited.\",\"instantRelayFeePct\":\"Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\",\"l1Recipient\":\"L1 address that should receive the tokens.\",\"l2Token\":\"L2 token to deposit.\",\"quoteTimestamp\":\"Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\",\"slowRelayFeePct\":\"Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current Testable timestamp.\"}},\"isWhitelistToken(address)\":{\"details\":\"Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.\",\"params\":{\"l2Token\":\"L2 token to check against the whitelist.\"},\"returns\":{\"_0\":\"true if token is whitelised.\"}},\"setCrossDomainAdmin(address)\":{\"details\":\"This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which is expected to be the Optimism_Messenger.Only callable by the existing admin via the Optimism cross domain messenger.\",\"params\":{\"newCrossDomainAdmin\":\"address of the new L1 admin contract.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set current Testable time to.\"}},\"setEnableDeposits(address,bool)\":{\"details\":\"Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\",\"params\":{\"depositsEnabled\":\"bool to set if the deposit box should accept/reject deposits.\",\"l2Token\":\"address of L2 token to enable/disable deposits for.\"}},\"setMinimumBridgingDelay(uint64)\":{\"details\":\"Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\",\"params\":{\"newMinimumBridgingDelay\":\"the new minimum delay.\"}},\"whitelistToken(address,address,address)\":{\"details\":\"Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\",\"params\":{\"l1BridgePool\":\"Address of the L1 withdrawal pool linked to this L2+L1 token.\",\"l1Token\":\"Address of the canonical L1 token. This is the token users will receive on Ethereum.\",\"l2Token\":\"Address of the L2 token representation. This is the token users would deposit on optimism.\"}}},\"title\":\"OVM_OETH_BridgeDepositBox\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"bridgeTokens(address,uint32)\":{\"notice\":\"Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical     token bridge, to the L1 Withdraw box. Implementation is exactly the same as the standard OVM_BridgeDepositBox except constructed to work with Optimism ETH by first unwrapping WETH then bridging OETH. The target on L1 is not the bridgePool but to the l1EthWrapper that takes any ETH sent to it, wraps it and sends to the BridgePool.\"},\"canBridge(address)\":{\"notice\":\"Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\"},\"constructor\":{\"notice\":\"Construct the Optimism Bridge Deposit Box\"},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"notice\":\"Called by L2 user to bridge funds between L2 and L1.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp.\"},\"isWhitelistToken(address)\":{\"notice\":\"Checks if a given L2 token is whitelisted.\"},\"setCrossDomainAdmin(address)\":{\"notice\":\"Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"},\"setEnableDeposits(address,bool)\":{\"notice\":\"L1 owner can enable/disable deposits for a whitelisted token.\"},\"setMinimumBridgingDelay(uint64)\":{\"notice\":\"Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\"},\"whitelistToken(address,address,address)\":{\"notice\":\"Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol\":\"OVM_OETH_BridgeDepositBox\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\n/**\\n * @title IL2ERC20Bridge\\n */\\ninterface IL2ERC20Bridge {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event WithdrawalInitiated(\\n        address indexed _l1Token,\\n        address indexed _l2Token,\\n        address indexed _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes _data\\n    );\\n\\n    event DepositFinalized(\\n        address indexed _l1Token,\\n        address indexed _l2Token,\\n        address indexed _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes _data\\n    );\\n\\n    event DepositFailed(\\n        address indexed _l1Token,\\n        address indexed _l2Token,\\n        address indexed _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes _data\\n    );\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * @dev get the address of the corresponding L1 bridge contract.\\n     * @return Address of the corresponding L1 bridge contract.\\n     */\\n    function l1TokenBridge() external returns (address);\\n\\n    /**\\n     * @dev initiate a withdraw of some tokens to the caller's account on L1\\n     * @param _l2Token Address of L2 token where withdrawal was initiated.\\n     * @param _amount Amount of the token to withdraw.\\n     * param _l1Gas Unused, but included for potential forward compatibility considerations.\\n     * @param _data Optional data to forward to L1. This data is provided\\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\\n     *        length, these contracts provide no guarantees about its content.\\n     */\\n    function withdraw(\\n        address _l2Token,\\n        uint256 _amount,\\n        uint32 _l1Gas,\\n        bytes calldata _data\\n    ) external;\\n\\n    /**\\n     * @dev initiate a withdraw of some token to a recipient's account on L1.\\n     * @param _l2Token Address of L2 token where withdrawal is initiated.\\n     * @param _to L1 adress to credit the withdrawal to.\\n     * @param _amount Amount of the token to withdraw.\\n     * param _l1Gas Unused, but included for potential forward compatibility considerations.\\n     * @param _data Optional data to forward to L1. This data is provided\\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\\n     *        length, these contracts provide no guarantees about its content.\\n     */\\n    function withdrawTo(\\n        address _l2Token,\\n        address _to,\\n        uint256 _amount,\\n        uint32 _l1Gas,\\n        bytes calldata _data\\n    ) external;\\n\\n    /*************************\\n     * Cross-chain Functions *\\n     *************************/\\n\\n    /**\\n     * @dev Complete a deposit from L1 to L2, and credits funds to the recipient's balance of this\\n     * L2 token. This call will fail if it did not originate from a corresponding deposit in\\n     * L1StandardTokenBridge.\\n     * @param _l1Token Address for the l1 token this is called with\\n     * @param _l2Token Address for the l2 token this is called with\\n     * @param _from Account to pull the deposit from on L2.\\n     * @param _to Address to receive the withdrawal at\\n     * @param _amount Amount of the token to withdraw\\n     * @param _data Data provider by the sender on L1. This data is provided\\n     *        solely as a convenience for external contracts. Aside from enforcing a maximum\\n     *        length, these contracts provide no guarantees about its content.\\n     */\\n    function finalizeDeposit(\\n        address _l1Token,\\n        address _l2Token,\\n        address _from,\\n        address _to,\\n        uint256 _amount,\\n        bytes calldata _data\\n    ) external;\\n}\\n\",\"keccak256\":\"0x4674c3c8733ca0db16c2b81d58227560df36a07ded3b637a0793564d90ac0475\",\"license\":\"MIT\"},\"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/* Interface Imports */\\nimport { ICrossDomainMessenger } from \\\"./ICrossDomainMessenger.sol\\\";\\n\\n/**\\n * @title CrossDomainEnabled\\n * @dev Helper contract for contracts performing cross-domain communications\\n *\\n * Compiler used: defined by inheriting contract\\n */\\ncontract CrossDomainEnabled {\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    // Messenger contract used to send and recieve messages from the other domain.\\n    address public messenger;\\n\\n    /***************\\n     * Constructor *\\n     ***************/\\n\\n    /**\\n     * @param _messenger Address of the CrossDomainMessenger on the current layer.\\n     */\\n    constructor(address _messenger) {\\n        messenger = _messenger;\\n    }\\n\\n    /**********************\\n     * Function Modifiers *\\n     **********************/\\n\\n    /**\\n     * Enforces that the modified function is only callable by a specific cross-domain account.\\n     * @param _sourceDomainAccount The only account on the originating domain which is\\n     *  authenticated to call this function.\\n     */\\n    modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {\\n        require(\\n            msg.sender == address(getCrossDomainMessenger()),\\n            \\\"OVM_XCHAIN: messenger contract unauthenticated\\\"\\n        );\\n\\n        require(\\n            getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,\\n            \\\"OVM_XCHAIN: wrong sender of cross-domain message\\\"\\n        );\\n\\n        _;\\n    }\\n\\n    /**********************\\n     * Internal Functions *\\n     **********************/\\n\\n    /**\\n     * Gets the messenger, usually from storage. This function is exposed in case a child contract\\n     * needs to override.\\n     * @return The address of the cross-domain messenger contract which should be used.\\n     */\\n    function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) {\\n        return ICrossDomainMessenger(messenger);\\n    }\\n\\n    /**q\\n     * Sends a message to an account on another domain\\n     * @param _crossDomainTarget The intended recipient on the destination domain\\n     * @param _message The data to send to the target (usually calldata to a function with\\n     *  `onlyFromCrossDomainAccount()`)\\n     * @param _gasLimit The gasLimit for the receipt of the message on the target domain.\\n     */\\n    function sendCrossDomainMessage(\\n        address _crossDomainTarget,\\n        uint32 _gasLimit,\\n        bytes memory _message\\n    ) internal {\\n        getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);\\n    }\\n}\\n\",\"keccak256\":\"0x147bd09bf9b4c02347ea21790a3dce2f733b914e4e6d73539d8abafb38827c9d\",\"license\":\"MIT\"},\"@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/**\\n * @title ICrossDomainMessenger\\n */\\ninterface ICrossDomainMessenger {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event SentMessage(\\n        address indexed target,\\n        address sender,\\n        bytes message,\\n        uint256 messageNonce,\\n        uint256 gasLimit\\n    );\\n    event RelayedMessage(bytes32 indexed msgHash);\\n    event FailedRelayedMessage(bytes32 indexed msgHash);\\n\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    function xDomainMessageSender() external view returns (address);\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * Sends a cross domain message to the target messenger.\\n     * @param _target Target contract address.\\n     * @param _message Message to send to the target.\\n     * @param _gasLimit Gas limit for the provided message.\\n     */\\n    function sendMessage(\\n        address _target,\\n        bytes calldata _message,\\n        uint32 _gasLimit\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8f29ae23021345a20ccac7b5edb3fc38268aef943b65adc8a32e74b80bf1833a\",\"license\":\"MIT\"},\"@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\n/**\\n * @title Lib_PredeployAddresses\\n */\\nlibrary Lib_PredeployAddresses {\\n    address internal constant L2_TO_L1_MESSAGE_PASSER = 0x4200000000000000000000000000000000000000;\\n    address internal constant L1_MESSAGE_SENDER = 0x4200000000000000000000000000000000000001;\\n    address internal constant DEPLOYER_WHITELIST = 0x4200000000000000000000000000000000000002;\\n    address payable internal constant OVM_ETH = payable(0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000);\\n    address internal constant L2_CROSS_DOMAIN_MESSENGER =\\n        0x4200000000000000000000000000000000000007;\\n    address internal constant LIB_ADDRESS_MANAGER = 0x4200000000000000000000000000000000000008;\\n    address internal constant PROXY_EOA = 0x4200000000000000000000000000000000000009;\\n    address internal constant L2_STANDARD_BRIDGE = 0x4200000000000000000000000000000000000010;\\n    address internal constant SEQUENCER_FEE_WALLET = 0x4200000000000000000000000000000000000011;\\n    address internal constant L2_STANDARD_TOKEN_FACTORY =\\n        0x4200000000000000000000000000000000000012;\\n    address internal constant L1_BLOCK_NUMBER = 0x4200000000000000000000000000000000000013;\\n}\\n\",\"keccak256\":\"0x2bc28307af93e9716151a41a81694b56cbe513ef5eb335fb1d81f35e5db8edfa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        // solhint-disable-next-line max-line-length\\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n    }\\n\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            uint256 newAllowance = oldAllowance - value;\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        if (returndata.length > 0) { // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"},\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Testable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Timer.sol\\\";\\n\\n/**\\n * @title Base class that provides time overrides, but only if being run in test mode.\\n */\\nabstract contract Testable {\\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\\n    // Note: this variable should be set on construction and never modified.\\n    address public timerAddress;\\n\\n    /**\\n     * @notice Constructs the Testable contract. Called by child contracts.\\n     * @param _timerAddress Contract that stores the current time in a testing environment.\\n     * Must be set to 0x0 for production environments that use live time.\\n     */\\n    constructor(address _timerAddress) {\\n        timerAddress = _timerAddress;\\n    }\\n\\n    /**\\n     * @notice Reverts if not running in test mode.\\n     */\\n    modifier onlyIfTest {\\n        require(timerAddress != address(0x0));\\n        _;\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set current Testable time to.\\n     */\\n    function setCurrentTime(uint256 time) external onlyIfTest {\\n        Timer(timerAddress).setCurrentTime(time);\\n    }\\n\\n    /**\\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\\n     * Otherwise, it will return the block timestamp.\\n     * @return uint for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view virtual returns (uint256) {\\n        if (timerAddress != address(0x0)) {\\n            return Timer(timerAddress).getCurrentTime();\\n        } else {\\n            return block.timestamp; // solhint-disable-line not-rely-on-time\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../common/implementation/Testable.sol\\\";\\nimport \\\"../common/implementation/Lockable.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface TokenLike {\\n    function balanceOf(address guy) external returns (uint256 wad);\\n}\\n\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 wad) external;\\n}\\n\\n/**\\n * @title OVM Bridge Deposit Box.\\n * @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\\n */\\n\\nabstract contract BridgeDepositBox is Testable, Lockable {\\n    using SafeERC20 for IERC20;\\n    /*************************************\\n     *  OVM DEPOSIT BOX DATA STRUCTURES  *\\n     *************************************/\\n\\n    // ChainID of the L2 this deposit box is deployed on.\\n    uint256 public chainId;\\n\\n    // Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.\\n    address public l1Weth;\\n\\n    // Track the total number of deposits. Used as a unique identifier for bridged transfers.\\n    uint256 public numberOfDeposits;\\n\\n    struct L2TokenRelationships {\\n        address l1Token;\\n        address l1BridgePool;\\n        uint64 lastBridgeTime;\\n        bool depositsEnabled;\\n    }\\n\\n    // Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token\\n    // type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.\\n    mapping(address => L2TokenRelationships) public whitelistedTokens;\\n\\n    // Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.\\n    uint64 public minimumBridgingDelay;\\n\\n    /****************************************\\n     *                EVENTS                *\\n     ****************************************/\\n\\n    event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);\\n    event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);\\n    event DepositsEnabled(address l2Token, bool depositsEnabled);\\n    event FundsDeposited(\\n        uint256 chainId,\\n        uint256 depositId,\\n        address l1Recipient,\\n        address l2Sender,\\n        address l1Token,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    );\\n    event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);\\n\\n    /****************************************\\n     *               MODIFIERS              *\\n     ****************************************/\\n\\n    modifier onlyIfDepositsEnabled(address l2Token) {\\n        require(whitelistedTokens[l2Token].depositsEnabled, \\\"Contract is disabled\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the Bridge Deposit Box\\n     * @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\\n     * @param _chainId Chain identifier for the Bridge deposit box.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) Testable(timerAddress) {\\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\\n        chainId = _chainId;\\n        l1Weth = _l1Weth;\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {\\n        minimumBridgingDelay = newMinimumBridgingDelay;\\n        emit SetMinimumBridgingDelay(minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function _whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) internal {\\n        whitelistedTokens[l2Token] = L2TokenRelationships({\\n            l1Token: l1Token,\\n            l1BridgePool: l1BridgePool,\\n            lastBridgeTime: uint64(getCurrentTime()),\\n            depositsEnabled: true\\n        });\\n\\n        emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {\\n        whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;\\n        emit DepositsEnabled(l2Token, depositsEnabled);\\n    }\\n\\n    function bridgeTokens(address l2Token, uint32 l2Gas) public virtual;\\n\\n    /**************************************\\n     *         DEPOSITOR FUNCTIONS        *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by L2 user to bridge funds between L2 and L1.\\n     * @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\\n     * @dev The caller must first approve this contract to spend `amount` of `l2Token`.\\n     * @param l1Recipient L1 address that should receive the tokens.\\n     * @param l2Token L2 token to deposit.\\n     * @param amount How many L2 tokens should be deposited.\\n     * @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\\n     * @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\\n     * @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\\n     *    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\\n     */\\n    function deposit(\\n        address l1Recipient,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    ) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {\\n        require(isWhitelistToken(l2Token), \\\"deposit token not whitelisted\\\");\\n        // We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.\\n        // The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.\\n        require(slowRelayFeePct <= 0.25e18, \\\"slowRelayFeePct must be <= 25%\\\");\\n        require(instantRelayFeePct <= 0.25e18, \\\"instantRelayFeePct must be <= 25%\\\");\\n\\n        // Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp\\n        // corresponds to the L1 timestamp of the last confirmed L1 \\u21d2 L2 transaction. The quoteTime must be within 10\\n        // mins of the current time to allow for this variance.\\n        // Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result\\n        // in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.\\n        // Consider requiring `quoteTimestamp >= 10 minutes`.\\n        require(\\n            getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,\\n            \\\"deposit mined after deadline\\\"\\n        );\\n        // If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user\\n        // is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.\\n        if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {\\n            require(msg.value == amount, \\\"msg.value must match amount\\\");\\n            WETH9Like(address(l2Token)).deposit{ value: msg.value }();\\n        }\\n        // Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.\\n        // Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In\\n        // this case the msg.value will be set to 0, indicating a \\\"normal\\\" ERC20 bridging action.\\n        else IERC20(l2Token).safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit FundsDeposited(\\n            chainId,\\n            numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).\\n            l1Recipient,\\n            msg.sender,\\n            whitelistedTokens[l2Token].l1Token,\\n            l2Token,\\n            amount,\\n            slowRelayFeePct,\\n            instantRelayFeePct,\\n            quoteTimestamp\\n        );\\n\\n        numberOfDeposits += 1;\\n    }\\n\\n    /**************************************\\n     *           VIEW FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Checks if a given L2 token is whitelisted.\\n     * @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\\n     * the token has been whitelisted.\\n     * @param l2Token L2 token to check against the whitelist.\\n     * @return true if token is whitelised.\\n     */\\n    function isWhitelistToken(address l2Token) public view returns (bool) {\\n        return whitelistedTokens[l2Token].lastBridgeTime != 0;\\n    }\\n\\n    function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {\\n        return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;\\n    }\\n\\n    /**\\n     * @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\\n     * balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\\n     * and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\\n     * @dev This function is also public for caller convenience.\\n     * @param l2Token L2 token to check bridging status.\\n     * @return true if token is whitelised and enough time has elapsed since the previous bridge.\\n     */\\n    function canBridge(address l2Token) public view returns (bool) {\\n        return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);\\n    }\\n}\\n\",\"keccak256\":\"0x4ee97e2948d55ffd8a44769e452ee5e8de4fcb073388aef12a4c4e53bc99af21\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../BridgeDepositBox.sol\\\";\\nimport \\\"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\\\";\\nimport \\\"@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol\\\";\\nimport \\\"@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol\\\";\\n\\n/**\\n * @notice OVM specific bridge deposit box.\\n * @dev Uses OVM cross-domain-enabled logic for access control.\\n */\\n\\ncontract OVM_BridgeDepositBox is BridgeDepositBox, CrossDomainEnabled {\\n    // Address of the L1 contract that acts as the owner of this Bridge deposit box.\\n    address public crossDomainAdmin;\\n\\n    event SetXDomainAdmin(address indexed newAdmin);\\n\\n    /**\\n     * @notice Construct the Optimism Bridge Deposit Box\\n     * @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\\n     * @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\\n     * @param _chainId L2 Chain identifier this deposit box is deployed on.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        address _crossDomainAdmin,\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    )\\n        CrossDomainEnabled(Lib_PredeployAddresses.L2_CROSS_DOMAIN_MESSENGER)\\n        BridgeDepositBox(_minimumBridgingDelay, _chainId, _l1Weth, timerAddress)\\n    {\\n        _setCrossDomainAdmin(_crossDomainAdmin);\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\\n     * @dev This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which\\n     * is expected to be the Optimism_Messenger.\\n     * @dev Only callable by the existing admin via the Optimism cross domain messenger.\\n     * @param newCrossDomainAdmin address of the new L1 admin contract.\\n     */\\n    function setCrossDomainAdmin(address newCrossDomainAdmin) public onlyFromCrossDomainAccount(crossDomainAdmin) {\\n        _setCrossDomainAdmin(newCrossDomainAdmin);\\n    }\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\\n     * @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function setMinimumBridgingDelay(uint64 newMinimumBridgingDelay)\\n        public\\n        onlyFromCrossDomainAccount(crossDomainAdmin)\\n    {\\n        _setMinimumBridgingDelay(newMinimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) public onlyFromCrossDomainAccount(crossDomainAdmin) {\\n        _whitelistToken(l1Token, l2Token, l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function setEnableDeposits(address l2Token, bool depositsEnabled)\\n        public\\n        onlyFromCrossDomainAccount(crossDomainAdmin)\\n    {\\n        _setEnableDeposits(l2Token, depositsEnabled);\\n    }\\n\\n    /**************************************\\n     *          RELAYER FUNCTIONS         *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\\n     *      token bridge, to the L1 Withdraw box.\\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\\n     * @param l2Token L2 token to relay over the canonical bridge.\\n     * @param l1Gas Unused by optimism, but included for potential forward compatibility considerations.\\n     */\\n    function bridgeTokens(address l2Token, uint32 l1Gas) public virtual override nonReentrant() {\\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\\n        require(bridgeDepositBoxBalance > 0, \\\"can't bridge zero tokens\\\");\\n        require(canBridge(l2Token), \\\"non-whitelisted token or last bridge too recent\\\");\\n\\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\\n\\n        IL2ERC20Bridge(Lib_PredeployAddresses.L2_STANDARD_BRIDGE).withdrawTo(\\n            l2Token, // _l2Token. Address of the L2 token to bridge over.\\n            whitelistedTokens[l2Token].l1BridgePool, // _to. Withdraw, over the bridge, to the l1 withdraw contract.\\n            bridgeDepositBoxBalance, // _amount. Send the full balance of the deposit box to bridge.\\n            l1Gas, // _l1Gas. Unused, but included for potential forward compatibility considerations\\n            \\\"\\\" // _data. We don't need to send any data for the bridging action.\\n        );\\n\\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\\n    }\\n\\n    /**************************************\\n     *         INTERNAL FUNCTIONS         *\\n     **************************************/\\n\\n    function _setCrossDomainAdmin(address newCrossDomainAdmin) internal {\\n        require(newCrossDomainAdmin != address(0), \\\"Bad bridge router address\\\");\\n        crossDomainAdmin = newCrossDomainAdmin;\\n        emit SetXDomainAdmin(crossDomainAdmin);\\n    }\\n}\\n\",\"keccak256\":\"0x20f71deea5d58fb96705ea0b4cb31771931012c456b4bf5be30d4fce52173db3\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol\":{\"content\":\"pragma solidity ^0.8.0;\\n\\nimport \\\"./OVM_BridgeDepositBox.sol\\\";\\n\\n/**\\n * @title OVM_OETH_BridgeDepositBox\\n * @dev Modified version of OVM_BridgeDepositBox that supports Optimism ETH being sent over the canonical bridge as ETH.\\n * This is re-wrapped to WETH on L2. All other functionality remains the same.\\n */\\n\\ncontract OVM_OETH_BridgeDepositBox is OVM_BridgeDepositBox {\\n    // l2Eth is ETH on Optimism. This acts as both an ERC20 and ETH on the OVM. In production is deployed at address\\n    // 0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000. We need to know the address in this contract as the Optimism bridge\\n    // does not support WETH so we need to unwrap to ETH first then send over ETH.\\n    address public l2Eth;\\n    // The L1 ETH Wrapper contract receives ETH, wraps it to WETH and sends it to the BridgePool. This enables the\\n    // us to keep the same L1 contracts while supporting Optimsim.\\n    address public l1EthWrapper;\\n\\n    /**\\n     * @notice Construct the Optimism Bridge Deposit Box\\n     * @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\\n     * @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\\n     * @param _chainId L2 Chain identifier this deposit box is deployed on.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if a bridging action should wrap ETH to WETH, if the desired\\n     *      asset-to-bridge is for a whitelisted token mapped to this L1 Weth token.\\n     * @param _l2Eth Address of ETH on L2. If someone wants to bridge L2 Weth from this contract to L1, then L2 ETH\\n     *     should be sent over the Optimism bridge.\\n     * @param _l1EthWrapper Address of custom ETH wrapper on L1. Any ETH sent to this contract will be wrapped to WETH\\n     *     and sent to the WETH Bridge Pool.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        address _crossDomainAdmin,\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address _l2Eth,\\n        address _l1EthWrapper,\\n        address timerAddress\\n    ) OVM_BridgeDepositBox(_crossDomainAdmin, _minimumBridgingDelay, _chainId, _l1Weth, timerAddress) {\\n        l2Eth = _l2Eth;\\n        l1EthWrapper = _l1EthWrapper;\\n    }\\n\\n    /**\\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\\n     *     token bridge, to the L1 Withdraw box. Implementation is exactly the same as the standard OVM_BridgeDepositBox\\n     * except constructed to work with Optimism ETH by first unwrapping WETH then bridging OETH. The target on L1 is\\n     * not the bridgePool but to the l1EthWrapper that takes any ETH sent to it, wraps it and sends to the BridgePool.\\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\\n     * @param l2Token L2 token to relay over the canonical bridge.\\n     * @param l1Gas Unused by optimism, but included for potential forward compatibility considerations.\\n     */\\n    function bridgeTokens(address l2Token, uint32 l1Gas) public override nonReentrant() {\\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\\n        require(bridgeDepositBoxBalance > 0, \\\"can't bridge zero tokens\\\");\\n        require(canBridge(l2Token), \\\"non-whitelisted token or last bridge too recent\\\");\\n\\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\\n\\n        address bridgePool = whitelistedTokens[l2Token].l1BridgePool;\\n\\n        // If the l1Token mapping to the l2Token is l1Weth, then to work with the canonical optimism bridge, we first\\n        //  unwrap it to ETH then bridge the newly unwraped L2 ETH over the canonical bridge. On L1 the l1EthWrapper will\\n        // re-wrap the ETH to WETH and send it to the WETH bridge pool.\\n        if (whitelistedTokens[l2Token].l1Token == l1Weth) {\\n            WETH9Like(l2Token).withdraw(bridgeDepositBoxBalance);\\n            l2Token = l2Eth;\\n            bridgePool = l1EthWrapper;\\n        }\\n        IL2ERC20Bridge(Lib_PredeployAddresses.L2_STANDARD_BRIDGE).withdrawTo(\\n            l2Token, // _l2Token. Address of the L2 token to bridge over.\\n            bridgePool, // _to. Withdraw, over the bridge, to the l1 withdraw contract.\\n            bridgeDepositBoxBalance, // _amount. Send the full balance of the deposit box to bridge.\\n            l1Gas, // _l1Gas. Unused, but included for potential forward compatibility considerations\\n            \\\"\\\" // _data. We don't need to send any data for the bridging action.\\n        );\\n\\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\\n    }\\n\\n    // Fallback function to enable this contract to receive ETH sent to it via WETH unwrapping. When l2ETH is unwrapped\\n    // from l2WETH, the l2ETH is sent to this contract before being sent over the canonical Optimism's bridge.\\n    receive() external payable {}\\n\\n    fallback() external payable {}\\n}\\n\",\"keccak256\":\"0x726e70e1f96637ef4d3e1a9a2429197bb0d06128f4ce2a13b61866fa692d19df\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 5530,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "timerAddress",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 5381,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "_notEntered",
                                "offset": 20,
                                "slot": "0",
                                "type": "t_bool"
                            },
                            {
                                "astId": 8260,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "chainId",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8262,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "l1Weth",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_address"
                            },
                            {
                                "astId": 8264,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "numberOfDeposits",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8278,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "whitelistedTokens",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)"
                            },
                            {
                                "astId": 8280,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "minimumBridgingDelay",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_uint64"
                            },
                            {
                                "astId": 100,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "messenger",
                                "offset": 8,
                                "slot": "5",
                                "type": "t_address"
                            },
                            {
                                "astId": 9269,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "crossDomainAdmin",
                                "offset": 0,
                                "slot": "6",
                                "type": "t_address"
                            },
                            {
                                "astId": 9472,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "l2Eth",
                                "offset": 0,
                                "slot": "7",
                                "type": "t_address"
                            },
                            {
                                "astId": 9474,
                                "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                "label": "l1EthWrapper",
                                "offset": 0,
                                "slot": "8",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => struct BridgeDepositBox.L2TokenRelationships)",
                                "numberOfBytes": "32",
                                "value": "t_struct(L2TokenRelationships)8273_storage"
                            },
                            "t_struct(L2TokenRelationships)8273_storage": {
                                "encoding": "inplace",
                                "label": "struct BridgeDepositBox.L2TokenRelationships",
                                "members": [
                                    {
                                        "astId": 8266,
                                        "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                        "label": "l1Token",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8268,
                                        "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                        "label": "l1BridgePool",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8270,
                                        "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                        "label": "lastBridgeTime",
                                        "offset": 20,
                                        "slot": "1",
                                        "type": "t_uint64"
                                    },
                                    {
                                        "astId": 8272,
                                        "contract": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol:OVM_OETH_BridgeDepositBox",
                                        "label": "depositsEnabled",
                                        "offset": 28,
                                        "slot": "1",
                                        "type": "t_bool"
                                    }
                                ],
                                "numberOfBytes": "64"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            },
                            "t_uint64": {
                                "encoding": "inplace",
                                "label": "uint64",
                                "numberOfBytes": "8"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "bridgeTokens(address,uint32)": {
                                "notice": "Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical     token bridge, to the L1 Withdraw box. Implementation is exactly the same as the standard OVM_BridgeDepositBox except constructed to work with Optimism ETH by first unwrapping WETH then bridging OETH. The target on L1 is not the bridgePool but to the l1EthWrapper that takes any ETH sent to it, wraps it and sends to the BridgePool."
                            },
                            "canBridge(address)": {
                                "notice": "Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted)."
                            },
                            "constructor": {
                                "notice": "Construct the Optimism Bridge Deposit Box"
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "notice": "Called by L2 user to bridge funds between L2 and L1."
                            },
                            "getCurrentTime()": {
                                "notice": "Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp."
                            },
                            "isWhitelistToken(address)": {
                                "notice": "Checks if a given L2 token is whitelisted."
                            },
                            "setCrossDomainAdmin(address)": {
                                "notice": "Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box."
                            },
                            "setCurrentTime(uint256)": {
                                "notice": "Sets the current time."
                            },
                            "setEnableDeposits(address,bool)": {
                                "notice": "L1 owner can enable/disable deposits for a whitelisted token."
                            },
                            "setMinimumBridgingDelay(uint64)": {
                                "notice": "Changes the minimum time in seconds that must elapse between withdraws from L2->L1."
                            },
                            "whitelistToken(address,address,address)": {
                                "notice": "Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/ovm/Optimism_Messenger.sol": {
                "Optimism_Messenger": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_crossDomainMessenger",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "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": "messenger",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "owner",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "target",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasLimit",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "message",
                                    "type": "bytes"
                                }
                            ],
                            "name": "relayMessage",
                            "outputs": [],
                            "stateMutability": "payable",
                            "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": "This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.",
                        "kind": "dev",
                        "methods": {
                            "owner()": {
                                "details": "Returns the address of the current owner."
                            },
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": {
                                "params": {
                                    "gasLimit": "The gasLimit for the receipt of the message on L2.",
                                    "message": "The data to send to the target (usually calldata to a function with  `onlyFromCrossDomainAccount()`)",
                                    "target": "The intended recipient on L2."
                                }
                            },
                            "renounceOwnership()": {
                                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
                            },
                            "transferOwnership(address)": {
                                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_111": {
                                    "entryPoint": null,
                                    "id": 111,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_655": {
                                    "entryPoint": null,
                                    "id": 655,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_9637": {
                                    "entryPoint": null,
                                    "id": 9637,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 150,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:306:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "95:209:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "141:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "150:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "153:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "143:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "143:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "143:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "116:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "125:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "112:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "112:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "137:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "108:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "108:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "105:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "166:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "185:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "179:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "179:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "170:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "258:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "267:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "270:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "260:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "260:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "260:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "217:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "228:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "243:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "248:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "239:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "239:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "252:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "235:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "235:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "224:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "224:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "214:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "214:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "207:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "207:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "204:70:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "283:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "293:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "283:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "61:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "72:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:290:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b5060405161082838038061082883398101604081905261002f91610096565b600080546001600160a01b031916339081178255604051839282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b0392909216919091179055506100c6565b6000602082840312156100a857600080fd5b81516001600160a01b03811681146100bf57600080fd5b9392505050565b610753806100d56000396000f3fe60806040526004361061005a5760003560e01c80638da5cb5b116100435780638da5cb5b146100cc5780639e353c70146100f7578063f2fde38b1461010a57600080fd5b80633cb747bf1461005f578063715018a6146100b5575b600080fd5b34801561006b57600080fd5b5060015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100c157600080fd5b506100ca61012a565b005b3480156100d857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661008c565b6100ca610105366004610545565b61021f565b34801561011657600080fd5b506100ca61012536600461065c565b6102b4565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101a7565b6102ab878583610465565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101a7565b73ffffffffffffffffffffffffffffffffffffffff81166103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101a7565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6001546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633dbb202b906104bf9086908590879060040161067e565b600060405180830381600087803b1580156104d957600080fd5b505af11580156102ab573d6000803e3d6000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461051157600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080600080600060e0888a03121561056057600080fd5b610569886104ed565b9650610577602089016104ed565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff808211156105b057600080fd5b818a0191508a601f8301126105c457600080fd5b8135818111156105d6576105d6610516565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561061c5761061c610516565b816040528281528d602084870101111561063557600080fd5b82602086016020830137600060208483010152809550505050505092959891949750929550565b60006020828403121561066e57600080fd5b610677826104ed565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260006020606081840152845180606085015260005b818110156106c8578681018301518582016080015282016106ac565b818111156106da576000608083870101525b5063ffffffff9490941660408401525050601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016016080019291505056fea26469706673582212209aa182300788bd8b4c4e46a46dbde90a29170de50b24597f2ba028a05f57ec5b64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x828 CODESIZE SUB DUP1 PUSH2 0x828 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x96 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD DUP4 SWAP3 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0xC6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x753 DUP1 PUSH2 0xD5 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x9E353C70 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3CB747BF EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0x8C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x12A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8C JUMP JUMPDEST PUSH2 0xCA PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x545 JUMP JUMPDEST PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x65C JUMP JUMPDEST PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH2 0x2AB DUP8 DUP6 DUP4 PUSH2 0x465 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x335 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x3D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3DBB202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3DBB202B SWAP1 PUSH2 0x4BF SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x67E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569 DUP9 PUSH2 0x4ED JUMP JUMPDEST SWAP7 POP PUSH2 0x577 PUSH1 0x20 DUP10 ADD PUSH2 0x4ED JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5D6 JUMPI PUSH2 0x5D6 PUSH2 0x516 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x61C JUMPI PUSH2 0x61C PUSH2 0x516 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP14 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x677 DUP3 PUSH2 0x4ED JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x60 DUP2 DUP5 ADD MSTORE DUP5 MLOAD DUP1 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI DUP7 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x80 ADD MSTORE DUP3 ADD PUSH2 0x6AC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH1 0x40 DUP5 ADD MSTORE POP POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x80 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 LOG1 DUP3 ADDRESS SMOD DUP9 0xBD DUP12 0x4C 0x4E CHAINID LOG4 PUSH14 0xBDE90A29170DE50B24597F2BA028 LOG0 0x5F JUMPI 0xEC JUMPDEST PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "523:789:54:-:0;;;608:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;867:17:5;909:18;;-1:-1:-1;;;;;;909:18:5;665:10:12;909:18:5;;;;;942:43;;670:21:54;;665:10:12;;942:43:5;;867:17;;942:43;-1:-1:-1;737:9:1;:22;;-1:-1:-1;;;;;;737:22:1;-1:-1:-1;;;;;737:22:1;;;;;;;;;;-1:-1:-1;523:789:54;;14:290:66;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:66;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:66:o;:::-;523:789:54;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@getCrossDomainMessenger_152": {
                                    "entryPoint": null,
                                    "id": 152,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@messenger_100": {
                                    "entryPoint": null,
                                    "id": 100,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@owner_664": {
                                    "entryPoint": null,
                                    "id": 664,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@relayMessage_9668": {
                                    "entryPoint": 543,
                                    "id": 9668,
                                    "parameterSlots": 7,
                                    "returnSlots": 0
                                },
                                "@renounceOwnership_700": {
                                    "entryPoint": 298,
                                    "id": 700,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@sendCrossDomainMessage_171": {
                                    "entryPoint": 1125,
                                    "id": 171,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@transferOwnership_728": {
                                    "entryPoint": 692,
                                    "id": 728,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_address": {
                                    "entryPoint": 1261,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 1628,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr": {
                                    "entryPoint": 1349,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 7
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_bytes_memory_ptr_t_uint32__to_t_address_t_bytes_memory_ptr_t_uint32__fromStack_reversed": {
                                    "entryPoint": 1662,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 1302,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:3868:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "182:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "190:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "178:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "294:147:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "304:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "326:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "313:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "313:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "304:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "419:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "428:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "431:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "421:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "421:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "421:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "355:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "366:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "373:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "362:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "362:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "352:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "352:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "345:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "345:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "342:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "273:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "284:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "245:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "478:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "495:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "498:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "488:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "488:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "488:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "592:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "595:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "585:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "585:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "585:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "616:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "619:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "609:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "609:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "609:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "446:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "816:1223:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "863:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "872:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "875:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "865:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "865:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "865:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "837:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "846:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "833:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "833:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "858:3:66",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "829:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "829:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "826:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "888:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "917:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "898:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "898:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "888:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "936:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "969:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "980:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "965:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "965:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "946:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "946:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "936:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "993:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1020:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1031:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1016:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1016:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1003:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1003:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "993:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1044:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1071:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1082:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1067:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1067:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1054:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1054:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1044:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1095:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1122:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1133:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1118:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1118:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1105:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1105:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1095:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1147:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1174:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1185:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1170:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1170:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1157:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1157:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1147:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1199:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1230:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1241:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1226:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1226:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1213:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1213:33:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1203:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1255:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1265:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1259:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1310:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1319:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1322:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1312:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1312:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1312:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1298:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1306:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1295:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1295:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1292:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1335:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1349:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1360:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1345:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1345:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1339:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1415:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1424:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1427:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1417:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1417:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1417:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1394:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1398:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1390:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1390:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1405:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1386:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1386:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1379:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1379:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1376:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1440:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1463:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1450:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1450:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1444:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1489:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1491:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1491:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1491:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1481:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1485:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1478:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1478:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1475:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1520:76:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1530:66:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1524:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1605:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1625:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1619:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1619:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1609:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1637:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1659:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "1683:2:66"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1687:4:66",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1679:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1679:13:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1694:2:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1675:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1675:22:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1699:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1671:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1671:31:66"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1704:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1667:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1667:40:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1655:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1655:53:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1641:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1767:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1769:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1769:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1769:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1726:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1738:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1723:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1723:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1746:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1758:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1743:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1743:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1720:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1720:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1717:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1805:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1809:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1798:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1798:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1798:22:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1836:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1844:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1829:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1829:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1829:18:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1893:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1902:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1905:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1895:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1895:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1895:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1870:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1874:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1866:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1866:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1879:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1862:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1862:20:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1884:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1859:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1859:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1856:53:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1935:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1943:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1931:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1931:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1952:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1956:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1948:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1948:11:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1961:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1918:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1918:46:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1918:46:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "memPtr",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1988:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1996:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1984:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1984:15:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2001:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1980:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1980:24:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2006:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1973:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1973:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1973:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2017:16:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2027:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2017:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "734:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "745:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "757:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "765:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "773:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "781:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "789:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "797:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "805:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "635:1404:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2114:116:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2160:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2169:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2172:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2162:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2162:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2162:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2135:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2144:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2131:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2131:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2156:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2127:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2127:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2124:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2185:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2214:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2195:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2195:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2185:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2080:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2091:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2103:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2044:186:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2409:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2426:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2437:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2419:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2419:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2419:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2460:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2471:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2456:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2456:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2476:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2449:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2449:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2449:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2499:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2510:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2495:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2495:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2515:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: caller is not the owner"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2488:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2488:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2488:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2559:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2571:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2582:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2567:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2567:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2559:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2386:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2400:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2235:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2770:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2787:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2798:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2780:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2780:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2780:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2821:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2832:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2817:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2817:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2837:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2810:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2810:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2810:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2860:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2871:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2856:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2856:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2876:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: new owner is the zero a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2849:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2849:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2849:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2931:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2942:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2927:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2927:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2947:8:66",
                                                                        "type": "",
                                                                        "value": "ddress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2920:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2920:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2920:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2965:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2977:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2988:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2973:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2973:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2965:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2747:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2761:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2596:402:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3176:690:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3193:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3208:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3216:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3204:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3204:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3186:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3186:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3186:74:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3269:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3279:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3273:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3301:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3312:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3297:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3297:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3317:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3290:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3290:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3290:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3329:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3349:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3343:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3343:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3333:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3376:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3387:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3372:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3372:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3392:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3365:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3365:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3365:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3408:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3417:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3412:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3477:91:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3506:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3517:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3502:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "3502:17:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "3521:3:66",
                                                                                            "type": "",
                                                                                            "value": "128"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3498:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3498:27:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "value1",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "3541:6:66"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "3549:1:66"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "3537:3:66"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "3537:14:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3553:2:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3533:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "3533:23:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3527:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3527:30:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3491:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3491:67:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3491:67:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3438:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3441:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3435:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3435:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3449:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "3451:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3460:1:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3463:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3456:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3456:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3451:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3431:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "3427:141:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3602:67:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3631:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "length",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3642:6:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3627:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "3627:22:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "3651:3:66",
                                                                                            "type": "",
                                                                                            "value": "128"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3623:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "3623:32:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3657:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3616:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3616:43:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3616:43:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3583:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3586:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3580:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3580:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3577:92:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3678:122:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3694:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3713:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3721:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3709:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3709:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3726:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3705:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3705:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3690:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3690:104:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3796:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3686:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3686:114:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3678:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3820:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3831:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3816:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3816:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3840:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3848:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3836:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3836:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3809:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3809:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3809:51:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr_t_uint32__to_t_address_t_bytes_memory_ptr_t_uint32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3129:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3140:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3148:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3156:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3167:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3003:863:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        let offset := calldataload(add(headStart, 192))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value6 := memPtr\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr_t_uint32__to_t_address_t_bytes_memory_ptr_t_uint32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        let _1 := 32\n        mstore(add(headStart, _1), 96)\n        let length := mload(value1)\n        mstore(add(headStart, 96), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 128), mload(add(add(value1, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 128), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 128)\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "60806040526004361061005a5760003560e01c80638da5cb5b116100435780638da5cb5b146100cc5780639e353c70146100f7578063f2fde38b1461010a57600080fd5b80633cb747bf1461005f578063715018a6146100b5575b600080fd5b34801561006b57600080fd5b5060015461008c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100c157600080fd5b506100ca61012a565b005b3480156100d857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661008c565b6100ca610105366004610545565b61021f565b34801561011657600080fd5b506100ca61012536600461065c565b6102b4565b60005473ffffffffffffffffffffffffffffffffffffffff1633146101b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101a7565b6102ab878583610465565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101a7565b73ffffffffffffffffffffffffffffffffffffffff81166103d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016101a7565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6001546040517f3dbb202b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690633dbb202b906104bf9086908590879060040161067e565b600060405180830381600087803b1580156104d957600080fd5b505af11580156102ab573d6000803e3d6000fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461051157600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080600080600060e0888a03121561056057600080fd5b610569886104ed565b9650610577602089016104ed565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff808211156105b057600080fd5b818a0191508a601f8301126105c457600080fd5b8135818111156105d6576105d6610516565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561061c5761061c610516565b816040528281528d602084870101111561063557600080fd5b82602086016020830137600060208483010152809550505050505092959891949750929550565b60006020828403121561066e57600080fd5b610677826104ed565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260006020606081840152845180606085015260005b818110156106c8578681018301518582016080015282016106ac565b818111156106da576000608083870101525b5063ffffffff9490941660408401525050601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016016080019291505056fea26469706673582212209aa182300788bd8b4c4e46a46dbde90a29170de50b24597f2ba028a05f57ec5b64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x9E353C70 EQ PUSH2 0xF7 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3CB747BF EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0x8C SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x12A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8C JUMP JUMPDEST PUSH2 0xCA PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x545 JUMP JUMPDEST PUSH2 0x21F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCA PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x65C JUMP JUMPDEST PUSH2 0x2B4 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH2 0x2AB DUP8 DUP6 DUP4 PUSH2 0x465 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x335 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x3D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3DBB202B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x3DBB202B SWAP1 PUSH2 0x4BF SWAP1 DUP7 SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x67E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x569 DUP9 PUSH2 0x4ED JUMP JUMPDEST SWAP7 POP PUSH2 0x577 PUSH1 0x20 DUP10 ADD PUSH2 0x4ED JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x5B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x5D6 JUMPI PUSH2 0x5D6 PUSH2 0x516 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x61C JUMPI PUSH2 0x61C PUSH2 0x516 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP14 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x677 DUP3 PUSH2 0x4ED JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0x60 DUP2 DUP5 ADD MSTORE DUP5 MLOAD DUP1 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI DUP7 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x80 ADD MSTORE DUP3 ADD PUSH2 0x6AC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x6DA JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH1 0x40 DUP5 ADD MSTORE POP POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x80 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 LOG1 DUP3 ADDRESS SMOD DUP9 0xBD DUP12 0x4C 0x4E CHAINID LOG4 PUSH14 0xBDE90A29170DE50B24597F2BA028 LOG0 0x5F JUMPI 0xEC JUMPDEST PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "523:789:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:24:1;;;;;;;;;;-1:-1:-1;500:24:1;;;;;;;;;;;190:42:66;178:55;;;160:74;;148:2;133:18;500:24:1;;;;;;;1700:145:5;;;;;;;;;;;;;:::i;:::-;;1068:85;;;;;;;;;;-1:-1:-1;1114:7:5;1140:6;;;1068:85;;1024:286:54;;;;;;:::i;:::-;;:::i;1994:240:5:-;;;;;;;;;;-1:-1:-1;1994:240:5;;;;;:::i;:::-;;:::i;1700:145::-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;2437:2:66;1272:68:5;;;2419:21:66;;;2456:18;;;2449:30;2515:34;2495:18;;;2488:62;2567:18;;1272:68:5;;;;;;;;;1806:1:::1;1790:6:::0;;1769:40:::1;::::0;::::1;1790:6:::0;;::::1;::::0;1769:40:::1;::::0;1806:1;;1769:40:::1;1836:1;1819:19:::0;;;::::1;::::0;;1700:145::o;1024:286:54:-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;2437:2:66;1272:68:5;;;2419:21:66;;;2456:18;;;2449:30;2515:34;2495:18;;;2488:62;2567:18;;1272:68:5;2235:356:66;1272:68:5;1246:57:54::1;1269:6;1284:8;1295:7;1246:22;:57::i;:::-;1024:286:::0;;;;;;;:::o;1994:240:5:-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;2437:2:66;1272:68:5;;;2419:21:66;;;2456:18;;;2449:30;2515:34;2495:18;;;2488:62;2567:18;;1272:68:5;2235:356:66;1272:68:5;2082:22:::1;::::0;::::1;2074:73;;;::::0;::::1;::::0;;2798:2:66;2074:73:5::1;::::0;::::1;2780:21:66::0;2837:2;2817:18;;;2810:30;2876:34;2856:18;;;2849:62;2947:8;2927:18;;;2920:36;2973:19;;2074:73:5::1;2596:402:66::0;2074:73:5::1;2183:6;::::0;;2162:38:::1;::::0;::::1;::::0;;::::1;::::0;2183:6;::::1;::::0;2162:38:::1;::::0;::::1;2210:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1994:240::o;2358:235:1:-;1960:9;;2508:78;;;;;1960:9;;;;;2508:37;;:78;;2546:18;;2566:8;;2576:9;;2508:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;245:196:66;313:20;;373:42;362:54;;352:65;;342:93;;431:1;428;421:12;342:93;245:196;;;:::o;446:184::-;498:77;495:1;488:88;595:4;592:1;585:15;619:4;616:1;609:15;635:1404;757:6;765;773;781;789;797;805;858:3;846:9;837:7;833:23;829:33;826:53;;;875:1;872;865:12;826:53;898:29;917:9;898:29;:::i;:::-;888:39;;946:38;980:2;969:9;965:18;946:38;:::i;:::-;936:48;;1031:2;1020:9;1016:18;1003:32;993:42;;1082:2;1071:9;1067:18;1054:32;1044:42;;1133:3;1122:9;1118:19;1105:33;1095:43;;1185:3;1174:9;1170:19;1157:33;1147:43;;1241:3;1230:9;1226:19;1213:33;1265:18;1306:2;1298:6;1295:14;1292:34;;;1322:1;1319;1312:12;1292:34;1360:6;1349:9;1345:22;1335:32;;1405:7;1398:4;1394:2;1390:13;1386:27;1376:55;;1427:1;1424;1417:12;1376:55;1463:2;1450:16;1485:2;1481;1478:10;1475:36;;;1491:18;;:::i;:::-;1625:2;1619:9;1687:4;1679:13;;1530:66;1675:22;;;1699:2;1671:31;1667:40;1655:53;;;1723:18;;;1743:22;;;1720:46;1717:72;;;1769:18;;:::i;:::-;1809:10;1805:2;1798:22;1844:2;1836:6;1829:18;1884:7;1879:2;1874;1870;1866:11;1862:20;1859:33;1856:53;;;1905:1;1902;1895:12;1856:53;1961:2;1956;1952;1948:11;1943:2;1935:6;1931:15;1918:46;2006:1;2001:2;1996;1988:6;1984:15;1980:24;1973:35;2027:6;2017:16;;;;;;;635:1404;;;;;;;;;;:::o;2044:186::-;2103:6;2156:2;2144:9;2135:7;2131:23;2127:32;2124:52;;;2172:1;2169;2162:12;2124:52;2195:29;2214:9;2195:29;:::i;:::-;2185:39;2044:186;-1:-1:-1;;;2044:186:66:o;3003:863::-;3216:42;3208:6;3204:55;3193:9;3186:74;3167:4;3279:2;3317;3312;3301:9;3297:18;3290:30;3349:6;3343:13;3392:6;3387:2;3376:9;3372:18;3365:34;3417:1;3427:141;3441:6;3438:1;3435:13;3427:141;;;3537:14;;;3533:23;;3527:30;3502:17;;;3521:3;3498:27;3491:67;3456:10;;3427:141;;;3586:6;3583:1;3580:13;3577:92;;;3657:1;3651:3;3642:6;3631:9;3627:22;3623:32;3616:43;3577:92;-1:-1:-1;3848:10:66;3836:23;;;;3831:2;3816:18;;3809:51;-1:-1:-1;;3721:2:66;3709:15;;;;3726:66;3705:88;3690:104;3796:3;3686:114;;3003:863;-1:-1:-1;;3003:863:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "375000",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "messenger()": "2302",
                                "owner()": "2295",
                                "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": "infinite",
                                "renounceOwnership()": "30149",
                                "transferOwnership(address)": "30369"
                            }
                        },
                        "methodIdentifiers": {
                            "messenger()": "3cb747bf",
                            "owner()": "8da5cb5b",
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": "9e353c70",
                            "renounceOwnership()": "715018a6",
                            "transferOwnership(address)": "f2fde38b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_crossDomainMessenger\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.\",\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"gasLimit\":\"The gasLimit for the receipt of the message on L2.\",\"message\":\"The data to send to the target (usually calldata to a function with  `onlyFromCrossDomainAccount()`)\",\"target\":\"The intended recipient on L2.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Sends a message to an account on L2.\"}},\"notice\":\"Sends cross chain messages Optimism L2 network.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/ovm/Optimism_Messenger.sol\":\"Optimism_Messenger\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/* Interface Imports */\\nimport { ICrossDomainMessenger } from \\\"./ICrossDomainMessenger.sol\\\";\\n\\n/**\\n * @title CrossDomainEnabled\\n * @dev Helper contract for contracts performing cross-domain communications\\n *\\n * Compiler used: defined by inheriting contract\\n */\\ncontract CrossDomainEnabled {\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    // Messenger contract used to send and recieve messages from the other domain.\\n    address public messenger;\\n\\n    /***************\\n     * Constructor *\\n     ***************/\\n\\n    /**\\n     * @param _messenger Address of the CrossDomainMessenger on the current layer.\\n     */\\n    constructor(address _messenger) {\\n        messenger = _messenger;\\n    }\\n\\n    /**********************\\n     * Function Modifiers *\\n     **********************/\\n\\n    /**\\n     * Enforces that the modified function is only callable by a specific cross-domain account.\\n     * @param _sourceDomainAccount The only account on the originating domain which is\\n     *  authenticated to call this function.\\n     */\\n    modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {\\n        require(\\n            msg.sender == address(getCrossDomainMessenger()),\\n            \\\"OVM_XCHAIN: messenger contract unauthenticated\\\"\\n        );\\n\\n        require(\\n            getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,\\n            \\\"OVM_XCHAIN: wrong sender of cross-domain message\\\"\\n        );\\n\\n        _;\\n    }\\n\\n    /**********************\\n     * Internal Functions *\\n     **********************/\\n\\n    /**\\n     * Gets the messenger, usually from storage. This function is exposed in case a child contract\\n     * needs to override.\\n     * @return The address of the cross-domain messenger contract which should be used.\\n     */\\n    function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) {\\n        return ICrossDomainMessenger(messenger);\\n    }\\n\\n    /**q\\n     * Sends a message to an account on another domain\\n     * @param _crossDomainTarget The intended recipient on the destination domain\\n     * @param _message The data to send to the target (usually calldata to a function with\\n     *  `onlyFromCrossDomainAccount()`)\\n     * @param _gasLimit The gasLimit for the receipt of the message on the target domain.\\n     */\\n    function sendCrossDomainMessage(\\n        address _crossDomainTarget,\\n        uint32 _gasLimit,\\n        bytes memory _message\\n    ) internal {\\n        getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);\\n    }\\n}\\n\",\"keccak256\":\"0x147bd09bf9b4c02347ea21790a3dce2f733b914e4e6d73539d8abafb38827c9d\",\"license\":\"MIT\"},\"@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/**\\n * @title ICrossDomainMessenger\\n */\\ninterface ICrossDomainMessenger {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event SentMessage(\\n        address indexed target,\\n        address sender,\\n        bytes message,\\n        uint256 messageNonce,\\n        uint256 gasLimit\\n    );\\n    event RelayedMessage(bytes32 indexed msgHash);\\n    event FailedRelayedMessage(bytes32 indexed msgHash);\\n\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    function xDomainMessageSender() external view returns (address);\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * Sends a cross domain message to the target messenger.\\n     * @param _target Target contract address.\\n     * @param _message Message to send to the target.\\n     * @param _gasLimit Gas limit for the provided message.\\n     */\\n    function sendMessage(\\n        address _target,\\n        bytes calldata _message,\\n        uint32 _gasLimit\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8f29ae23021345a20ccac7b5edb3fc38268aef943b65adc8a32e74b80bf1833a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"contracts/insured-bridge/interfaces/MessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will\\n * differ for each L2.\\n */\\ninterface MessengerInterface {\\n    function relayMessage(\\n        address target,\\n        address userToRefund,\\n        uint256 l1CallValue,\\n        uint256 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        bytes memory message\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0xa20bf4ed8f80d1ddd3cc81b1a49bb2bcd8dd4ed00e1c7ade3fd4edaf5b4f13b2\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/ovm/Optimism_Messenger.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol\\\";\\nimport \\\"../interfaces/MessengerInterface.sol\\\";\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\n/**\\n * @notice Sends cross chain messages Optimism L2 network.\\n * @dev This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the\\n * BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.\\n */\\ncontract Optimism_Messenger is Ownable, CrossDomainEnabled, MessengerInterface {\\n    constructor(address _crossDomainMessenger) CrossDomainEnabled(_crossDomainMessenger) {}\\n\\n    /**\\n     * @notice Sends a message to an account on L2.\\n     * @param target The intended recipient on L2.\\n     * @param gasLimit The gasLimit for the receipt of the message on L2.\\n     * @param message The data to send to the target (usually calldata to a function with\\n     *  `onlyFromCrossDomainAccount()`)\\n     */\\n    function relayMessage(\\n        address target,\\n        address,\\n        uint256,\\n        uint256 gasLimit,\\n        uint256,\\n        uint256,\\n        bytes memory message\\n    ) external payable override onlyOwner {\\n        sendCrossDomainMessage(target, uint32(gasLimit), message);\\n    }\\n}\\n\",\"keccak256\":\"0x309e4ed431d9fb138e770a9300275b39aac555a4795fa1637cc600b32d8eea29\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 627,
                                "contract": "contracts/insured-bridge/ovm/Optimism_Messenger.sol:Optimism_Messenger",
                                "label": "_owner",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 100,
                                "contract": "contracts/insured-bridge/ovm/Optimism_Messenger.sol:Optimism_Messenger",
                                "label": "messenger",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": {
                                "notice": "Sends a message to an account on L2."
                            }
                        },
                        "notice": "Sends cross chain messages Optimism L2 network.",
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/ovm/Optimism_Wrapper.sol": {
                "Optimism_Wrapper": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "contract WETH9Like",
                                    "name": "_weth",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_bridgePool",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "ChangedBridgePool",
                            "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"
                        },
                        {
                            "stateMutability": "payable",
                            "type": "fallback"
                        },
                        {
                            "inputs": [],
                            "name": "bridgePool",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newBridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "changeBridgePool",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "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"
                        },
                        {
                            "inputs": [],
                            "name": "weth",
                            "outputs": [
                                {
                                    "internalType": "contract WETH9Like",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "wrapAndTransfer",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "changeBridgePool(address)": {
                                "params": {
                                    "newBridgePool": "address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract."
                                }
                            },
                            "constructor": {
                                "params": {
                                    "_bridgePool": "address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract.",
                                    "_weth": "l1WethContract address. Normally deployed at 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2."
                                }
                            },
                            "owner()": {
                                "details": "Returns the address of the current owner."
                            },
                            "renounceOwnership()": {
                                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
                            },
                            "transferOwnership(address)": {
                                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_655": {
                                    "entryPoint": null,
                                    "id": 655,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_9724": {
                                    "entryPoint": null,
                                    "id": 9724,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_contract$_WETH9Like_$9691t_address_fromMemory": {
                                    "entryPoint": 230,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "validator_revert_contract_WETH9Like": {
                                    "entryPoint": 206,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:588:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "70:86:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "134:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "143:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "146:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "136:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "136:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "136:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "93:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "104:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "119:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "124:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "115:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "115:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "128:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "111:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "111:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "100:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "100:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "90:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "90:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "83:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "83:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "80:70:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_contract_WETH9Like",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "59:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:142:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "277:309:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "323:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "332:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "335:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "325:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "325:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "325:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "298:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "307:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "294:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "294:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "319:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "290:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "290:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "287:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "348:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "367:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "361:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "361:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "352:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "422:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_contract_WETH9Like",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "386:35:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "386:42:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "386:42:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "437:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "447:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "437:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "461:40:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "486:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "497:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "482:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "482:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "476:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "476:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "465:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "546:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_contract_WETH9Like",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "510:35:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "510:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "510:44:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "563:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "573:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "563:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_contract$_WETH9Like_$9691t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "235:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "246:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "258:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "266:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "161:425:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function validator_revert_contract_WETH9Like(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_contract$_WETH9Like_$9691t_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_WETH9Like(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_WETH9Like(value_1)\n        value1 := value_1\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b5060405161088538038061088583398101604081905261002f916100e6565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b038085166001600160a01b0319928316179092556002805492841692909116821790556040517f5db0594861800ee9ecbe0fa088052848807cc869a6941eb0f07bbf6a33f1196690600090a25050610120565b6001600160a01b03811681146100e357600080fd5b50565b600080604083850312156100f957600080fd5b8251610104816100ce565b6020840151909250610115816100ce565b809150509250929050565b6107568061012f6000396000f3fe6080604052600436106100705760003560e01c8063715018a61161004e578063715018a61461011d5780638da5cb5b14610132578063c915f0ea14610070578063f2fde38b1461015d57610070565b80632ad440711461007a5780633fc8cef31461009a5780635e46bea5146100f0575b61007861017d565b005b34801561008657600080fd5b506100786100953660046106ca565b610334565b3480156100a657600080fd5b506001546100c79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100fc57600080fd5b506002546100c79073ffffffffffffffffffffffffffffffffffffffff1681565b34801561012957600080fd5b50610078610429565b34801561013e57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100c7565b34801561016957600080fd5b506100786101783660046106ca565b610519565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156101e757600080fd5b505af11580156101fb573d6000803e3d6000fd5b50506001546002546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff928316955063a9059cbb94509116915083906370a082319060240160206040518083038186803b15801561027757600080fd5b505afa15801561028b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102af9190610707565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561031a57600080fd5b505af115801561032e573d6000803e3d6000fd5b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f5db0594861800ee9ecbe0fa088052848807cc869a6941eb0f07bbf6a33f1196690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103b1565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461059a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103b1565b73ffffffffffffffffffffffffffffffffffffffff811661063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103b1565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000602082840312156106dc57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461070057600080fd5b9392505050565b60006020828403121561071957600080fd5b505191905056fea26469706673582212203994ce7d021ef1cc0502af81e2b95d97562d2eb4b1f7e137f8d2fb4f5881991e64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x885 CODESIZE SUB DUP1 PUSH2 0x885 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xE6 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 DUP3 SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x2 DUP1 SLOAD SWAP3 DUP5 AND SWAP3 SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5DB0594861800EE9ECBE0FA088052848807CC869A6941EB0F07BBF6A33F11966 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP PUSH2 0x120 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x104 DUP2 PUSH2 0xCE JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x115 DUP2 PUSH2 0xCE JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x756 DUP1 PUSH2 0x12F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xC915F0EA EQ PUSH2 0x70 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x15D JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x2AD44071 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x3FC8CEF3 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x5E46BEA5 EQ PUSH2 0xF0 JUMPI JUMPDEST PUSH2 0x78 PUSH2 0x17D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH2 0x95 CALLDATASIZE PUSH1 0x4 PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0xC7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0xC7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH2 0x429 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x519 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 SELFBALANCE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP6 POP PUSH4 0xA9059CBB SWAP5 POP SWAP2 AND SWAP2 POP DUP4 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AF SWAP2 SWAP1 PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x3BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5DB0594861800EE9ECBE0FA088052848807CC869A6941EB0F07BBF6A33F11966 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x4AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x59A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x63D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY SWAP5 0xCE PUSH30 0x21EF1CC0502AF81E2B95D97562D2EB4B1F7E137F8D2FB4F5881991E6473 PUSH16 0x6C634300080900330000000000000000 ",
                            "sourceMap": "552:1662:55:-:0;;;1000:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;867:17:5;909:18;;-1:-1:-1;;;;;;909:18:5;665:10:12;909:18:5;;;;;942:43;;665:10:12;;;;942:43:5;;867:17;;942:43;-1:-1:-1;1060:4:55;:12;;-1:-1:-1;;;;;1060:12:55;;;-1:-1:-1;;;;;;1060:12:55;;;;;;;1082:10;:24;;;;;;;;;;;;;1121:29;;;;1060:4;;1121:29;1000:157;;552:1662;;14:142:66;-1:-1:-1;;;;;100:31:66;;90:42;;80:70;;146:1;143;136:12;80:70;14:142;:::o;161:425::-;258:6;266;319:2;307:9;298:7;294:23;290:32;287:52;;;335:1;332;325:12;287:52;367:9;361:16;386:42;422:5;386:42;:::i;:::-;497:2;482:18;;476:25;447:5;;-1:-1:-1;510:44:66;476:25;510:44;:::i;:::-;573:7;563:17;;;161:425;;;;;:::o;:::-;552:1662:55;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_9777": {
                                    "entryPoint": null,
                                    "id": 9777,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1962": {
                                    "entryPoint": null,
                                    "id": 1962,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@bridgePool_9698": {
                                    "entryPoint": null,
                                    "id": 9698,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@changeBridgePool_9741": {
                                    "entryPoint": 820,
                                    "id": 9741,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@owner_664": {
                                    "entryPoint": null,
                                    "id": 664,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@renounceOwnership_700": {
                                    "entryPoint": 1065,
                                    "id": 700,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@transferOwnership_728": {
                                    "entryPoint": 1305,
                                    "id": 728,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@weth_9696": {
                                    "entryPoint": null,
                                    "id": 9696,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@wrapAndTransfer_9770": {
                                    "entryPoint": 381,
                                    "id": 9770,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 1738,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": 1799,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_WETH9Like_$9691__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:2064:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "84:239:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "130:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "139:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "142:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "132:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "132:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "132:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "105:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "114:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "101:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "101:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "126:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "97:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "97:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "94:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "155:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "181:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "168:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "168:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "159:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "277:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "286:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "289:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "279:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "279:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "279:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "213:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "224:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "231:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "220:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "220:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "210:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "210:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "203:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "203:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "200:93:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "302:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "312:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "302:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "50:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "61:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "73:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:309:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "447:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "457:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "469:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "480:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "465:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "465:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "457:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "499:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "514:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "522:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "510:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "510:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "492:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "492:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "492:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_WETH9Like_$9691__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "416:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "427:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "438:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "328:244:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "678:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "688:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "700:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "711:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "696:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "696:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "688:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "730:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "745:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "753:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "741:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "741:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "723:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "723:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "723:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "647:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "658:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "669:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "577:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "889:103:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "935:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "944:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "947:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "937:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "937:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "937:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "910:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "919:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "906:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "906:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "931:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "902:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "902:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "899:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "960:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "976:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "970:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "970:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "960:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "855:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "866:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "878:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "808:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1126:168:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1136:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1148:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1159:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1144:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1144:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1136:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1178:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1193:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1201:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1189:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1189:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1171:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1171:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1171:74:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1265:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1276:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1261:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1261:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1281:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1254:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1254:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1254:34:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1087:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1098:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1106:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1117:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "997:297:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1473:182:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1490:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1501:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1483:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1483:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1483:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1524:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1535:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1520:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1520:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1540:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1513:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1513:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1513:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1563:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1574:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1559:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1559:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1579:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: caller is not the owner"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1552:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1552:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1552:62:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1623:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1635:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1646:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1631:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1631:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1623:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1450:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1464:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1299:356:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1834:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1851:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1862:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1844:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1844:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1844:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1885:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1896:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1881:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1881:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1901:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1874:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1874:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1874:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1924:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1935:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1920:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1920:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1940:34:66",
                                                                        "type": "",
                                                                        "value": "Ownable: new owner is the zero a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1913:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1913:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1913:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1995:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2006:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1991:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1991:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2011:8:66",
                                                                        "type": "",
                                                                        "value": "ddress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1984:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1984:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1984:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2029:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2041:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2052:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2037:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2037:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2029:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1811:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1825:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1660:402:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_contract$_WETH9Like_$9691__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 32)\n        mstore(add(headStart, 64), \"Ownable: caller is not the owner\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Ownable: new owner is the zero a\")\n        mstore(add(headStart, 96), \"ddress\")\n        tail := add(headStart, 128)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600436106100705760003560e01c8063715018a61161004e578063715018a61461011d5780638da5cb5b14610132578063c915f0ea14610070578063f2fde38b1461015d57610070565b80632ad440711461007a5780633fc8cef31461009a5780635e46bea5146100f0575b61007861017d565b005b34801561008657600080fd5b506100786100953660046106ca565b610334565b3480156100a657600080fd5b506001546100c79073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100fc57600080fd5b506002546100c79073ffffffffffffffffffffffffffffffffffffffff1681565b34801561012957600080fd5b50610078610429565b34801561013e57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100c7565b34801561016957600080fd5b506100786101783660046106ca565b610519565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156101e757600080fd5b505af11580156101fb573d6000803e3d6000fd5b50506001546002546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff928316955063a9059cbb94509116915083906370a082319060240160206040518083038186803b15801561027757600080fd5b505afa15801561028b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102af9190610707565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b15801561031a57600080fd5b505af115801561032e573d6000803e3d6000fd5b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f5db0594861800ee9ecbe0fa088052848807cc869a6941eb0f07bbf6a33f1196690600090a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103b1565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461059a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103b1565b73ffffffffffffffffffffffffffffffffffffffff811661063d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103b1565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000602082840312156106dc57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461070057600080fd5b9392505050565b60006020828403121561071957600080fd5b505191905056fea26469706673582212203994ce7d021ef1cc0502af81e2b95d97562d2eb4b1f7e137f8d2fb4f5881991e64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xC915F0EA EQ PUSH2 0x70 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x15D JUMPI PUSH2 0x70 JUMP JUMPDEST DUP1 PUSH4 0x2AD44071 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x3FC8CEF3 EQ PUSH2 0x9A JUMPI DUP1 PUSH4 0x5E46BEA5 EQ PUSH2 0xF0 JUMPI JUMPDEST PUSH2 0x78 PUSH2 0x17D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH2 0x95 CALLDATASIZE PUSH1 0x4 PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x334 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0xC7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0xC7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH2 0x429 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x78 PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x519 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 SELFBALANCE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP6 POP PUSH4 0xA9059CBB SWAP5 POP SWAP2 AND SWAP2 POP DUP4 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x28B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AF SWAP2 SWAP1 PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x3BA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH32 0x5DB0594861800EE9ECBE0FA088052848807CC869A6941EB0F07BBF6A33F11966 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x4AA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x59A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3B1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x63D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A206E6577206F776E657220697320746865207A65726F2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6464726573730000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3B1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x700 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x719 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CODECOPY SWAP5 0xCE PUSH30 0x21EF1CC0502AF81E2B95D97562D2EB4B1F7E137F8D2FB4F5881991E6473 PUSH16 0x6C634300080900330000000000000000 ",
                            "sourceMap": "552:1662:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2188:17;:15;:17::i;:::-;552:1662;1397:153;;;;;;;;;;-1:-1:-1;1397:153:55;;;;;:::i;:::-;;:::i;595:21::-;;;;;;;;;;-1:-1:-1;595:21:55;;;;;;;;;;;522:42:66;510:55;;;492:74;;480:2;465:18;595:21:55;;;;;;;622:25;;;;;;;;;;-1:-1:-1;622:25:55;;;;;;;;1700:145:5;;;;;;;;;;;;;:::i;1068:85::-;;;;;;;;;;-1:-1:-1;1114:7:5;1140:6;;;1068:85;;1994:240;;;;;;;;;;-1:-1:-1;1994:240:5;;;;;:::i;:::-;;:::i;1862:171:55:-;1914:4;;;;;;;;;;;:12;;;1935:21;1914:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1970:4:55;;1984:10;;1996:29;;;;;2019:4;1996:29;;;492:74:66;1970:4:55;;;;;-1:-1:-1;1970:13:55;;-1:-1:-1;1984:10:55;;;-1:-1:-1;1970:4:55;;1996:14;;465:18:66;;1996:29:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1970:56;;;;;;;;;;1201:42:66;1189:55;;;1970:56:55;;;1171:74:66;1261:18;;;1254:34;1144:18;;1970:56:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1862:171::o;1397:153::-;1114:7:5;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;1501:2:66;1272:68:5;;;1483:21:66;;;1520:18;;;1513:30;1579:34;1559:18;;;1552:62;1631:18;;1272:68:5;;;;;;;;;1473:10:55::1;:26:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1514:29:::1;::::0;::::1;::::0;-1:-1:-1;;1514:29:55::1;1397:153:::0;:::o;1700:145:5:-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;1501:2:66;1272:68:5;;;1483:21:66;;;1520:18;;;1513:30;1579:34;1559:18;;;1552:62;1631:18;;1272:68:5;1299:356:66;1272:68:5;1806:1:::1;1790:6:::0;;1769:40:::1;::::0;::::1;1790:6:::0;;::::1;::::0;1769:40:::1;::::0;1806:1;;1769:40:::1;1836:1;1819:19:::0;;;::::1;::::0;;1700:145::o;1994:240::-;1114:7;1140:6;1280:23;1140:6;665:10:12;1280:23:5;1272:68;;;;;;;1501:2:66;1272:68:5;;;1483:21:66;;;1520:18;;;1513:30;1579:34;1559:18;;;1552:62;1631:18;;1272:68:5;1299:356:66;1272:68:5;2082:22:::1;::::0;::::1;2074:73;;;::::0;::::1;::::0;;1862:2:66;2074:73:5::1;::::0;::::1;1844:21:66::0;1901:2;1881:18;;;1874:30;1940:34;1920:18;;;1913:62;2011:8;1991:18;;;1984:36;2037:19;;2074:73:5::1;1660:402:66::0;2074:73:5::1;2183:6;::::0;;2162:38:::1;::::0;::::1;::::0;;::::1;::::0;2183:6;::::1;::::0;2162:38:::1;::::0;::::1;2210:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;1994:240::o;14:309:66:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;231:42;224:5;220:54;213:5;210:65;200:93;;289:1;286;279:12;200:93;312:5;14:309;-1:-1:-1;;;14:309:66:o;808:184::-;878:6;931:2;919:9;910:7;906:23;902:32;899:52;;;947:1;944;937:12;899:52;-1:-1:-1;970:16:66;;808:184;-1:-1:-1;808:184:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "375600",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "": "infinite",
                                "bridgePool()": "2346",
                                "changeBridgePool(address)": "27765",
                                "owner()": "2317",
                                "renounceOwnership()": "30126",
                                "transferOwnership(address)": "30356",
                                "weth()": "2324",
                                "wrapAndTransfer()": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "bridgePool()": "5e46bea5",
                            "changeBridgePool(address)": "2ad44071",
                            "owner()": "8da5cb5b",
                            "renounceOwnership()": "715018a6",
                            "transferOwnership(address)": "f2fde38b",
                            "weth()": "3fc8cef3",
                            "wrapAndTransfer()": "c915f0ea"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract WETH9Like\",\"name\":\"_weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_bridgePool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"name\":\"ChangedBridgePool\",\"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\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"bridgePool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newBridgePool\",\"type\":\"address\"}],\"name\":\"changeBridgePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"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\"},{\"inputs\":[],\"name\":\"weth\",\"outputs\":[{\"internalType\":\"contract WETH9Like\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrapAndTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"changeBridgePool(address)\":{\"params\":{\"newBridgePool\":\"address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract.\"}},\"constructor\":{\"params\":{\"_bridgePool\":\"address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract.\",\"_weth\":\"l1WethContract address. Normally deployed at 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"changeBridgePool(address)\":{\"notice\":\"Called by owner of the wrapper to change the destination of the wrapped ETH (bridgePool).\"},\"constructor\":{\"notice\":\"Construct Optimism Wrapper contract.\"},\"wrapAndTransfer()\":{\"notice\":\"Publicly callable function that takes all ETH in this contract, wraps it to WETH and sends it to the bridge pool contract. Function is called by fallback functions to automatically wrap ETH to WETH and send at the conclusion of a canonical ETH bridging action.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/ovm/Optimism_Wrapper.sol\":\"Optimism_Wrapper\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"contracts/insured-bridge/ovm/Optimism_Wrapper.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\n/**\\n * @title Optimism Eth Wrapper\\n * @dev Any ETH sent to this contract is wrapped into WETH and sent to the set bridge pool. This enables ETH to be sent\\n * over the canonical Optimism bridge, which does not support WETH bridging.\\n */\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function transfer(address guy, uint256 wad) external;\\n\\n    function balanceOf(address guy) external view returns (uint256);\\n}\\n\\ncontract Optimism_Wrapper is Ownable {\\n    WETH9Like public weth;\\n    address public bridgePool;\\n\\n    event ChangedBridgePool(address indexed bridgePool);\\n\\n    /**\\n     * @notice Construct Optimism Wrapper contract.\\n     * @param _weth l1WethContract address. Normally deployed at 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.\\n     * @param _bridgePool address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract.\\n     */\\n    constructor(WETH9Like _weth, address _bridgePool) {\\n        weth = _weth;\\n        bridgePool = _bridgePool;\\n        emit ChangedBridgePool(bridgePool);\\n    }\\n\\n    /**\\n     * @notice Called by owner of the wrapper to change the destination of the wrapped ETH (bridgePool).\\n     * @param newBridgePool address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract.\\n     */\\n    function changeBridgePool(address newBridgePool) public onlyOwner {\\n        bridgePool = newBridgePool;\\n        emit ChangedBridgePool(bridgePool);\\n    }\\n\\n    /**\\n     * @notice Publicly callable function that takes all ETH in this contract, wraps it to WETH and sends it to the\\n     * bridge pool contract. Function is called by fallback functions to automatically wrap ETH to WETH and send at the\\n     * conclusion of a canonical ETH bridging action.\\n     */\\n    function wrapAndTransfer() public payable {\\n        weth.deposit{ value: address(this).balance }();\\n        weth.transfer(bridgePool, weth.balanceOf(address(this)));\\n    }\\n\\n    // Fallback function enable this contract to receive funds when they are unwrapped from the weth contract.\\n    fallback() external payable {\\n        wrapAndTransfer();\\n    }\\n}\\n\",\"keccak256\":\"0x486e601fd0def9b0e63e3cfdfaf62e89dbfdfc00c1a43750893798479be11412\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 627,
                                "contract": "contracts/insured-bridge/ovm/Optimism_Wrapper.sol:Optimism_Wrapper",
                                "label": "_owner",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 9696,
                                "contract": "contracts/insured-bridge/ovm/Optimism_Wrapper.sol:Optimism_Wrapper",
                                "label": "weth",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_contract(WETH9Like)9691"
                            },
                            {
                                "astId": 9698,
                                "contract": "contracts/insured-bridge/ovm/Optimism_Wrapper.sol:Optimism_Wrapper",
                                "label": "bridgePool",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_contract(WETH9Like)9691": {
                                "encoding": "inplace",
                                "label": "contract WETH9Like",
                                "numberOfBytes": "20"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "changeBridgePool(address)": {
                                "notice": "Called by owner of the wrapper to change the destination of the wrapped ETH (bridgePool)."
                            },
                            "constructor": {
                                "notice": "Construct Optimism Wrapper contract."
                            },
                            "wrapAndTransfer()": {
                                "notice": "Publicly callable function that takes all ETH in this contract, wraps it to WETH and sends it to the bridge pool contract. Function is called by fallback functions to automatically wrap ETH to WETH and send at the conclusion of a canonical ETH bridging action."
                            }
                        },
                        "version": 1
                    }
                },
                "WETH9Like": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "guy",
                                    "type": "address"
                                }
                            ],
                            "name": "balanceOf",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "guy",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "wad",
                                    "type": "uint256"
                                }
                            ],
                            "name": "transfer",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Any ETH sent to this contract is wrapped into WETH and sent to the set bridge pool. This enables ETH to be sent over the canonical Optimism bridge, which does not support WETH bridging.",
                        "kind": "dev",
                        "methods": {},
                        "title": "Optimism Eth Wrapper",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "balanceOf(address)": "70a08231",
                            "deposit()": "d0e30db0",
                            "transfer(address,uint256)": "a9059cbb"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Any ETH sent to this contract is wrapped into WETH and sent to the set bridge pool. This enables ETH to be sent over the canonical Optimism bridge, which does not support WETH bridging.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Optimism Eth Wrapper\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/ovm/Optimism_Wrapper.sol\":\"WETH9Like\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"contracts/insured-bridge/ovm/Optimism_Wrapper.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\n\\n/**\\n * @title Optimism Eth Wrapper\\n * @dev Any ETH sent to this contract is wrapped into WETH and sent to the set bridge pool. This enables ETH to be sent\\n * over the canonical Optimism bridge, which does not support WETH bridging.\\n */\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function transfer(address guy, uint256 wad) external;\\n\\n    function balanceOf(address guy) external view returns (uint256);\\n}\\n\\ncontract Optimism_Wrapper is Ownable {\\n    WETH9Like public weth;\\n    address public bridgePool;\\n\\n    event ChangedBridgePool(address indexed bridgePool);\\n\\n    /**\\n     * @notice Construct Optimism Wrapper contract.\\n     * @param _weth l1WethContract address. Normally deployed at 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.\\n     * @param _bridgePool address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract.\\n     */\\n    constructor(WETH9Like _weth, address _bridgePool) {\\n        weth = _weth;\\n        bridgePool = _bridgePool;\\n        emit ChangedBridgePool(bridgePool);\\n    }\\n\\n    /**\\n     * @notice Called by owner of the wrapper to change the destination of the wrapped ETH (bridgePool).\\n     * @param newBridgePool address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract.\\n     */\\n    function changeBridgePool(address newBridgePool) public onlyOwner {\\n        bridgePool = newBridgePool;\\n        emit ChangedBridgePool(bridgePool);\\n    }\\n\\n    /**\\n     * @notice Publicly callable function that takes all ETH in this contract, wraps it to WETH and sends it to the\\n     * bridge pool contract. Function is called by fallback functions to automatically wrap ETH to WETH and send at the\\n     * conclusion of a canonical ETH bridging action.\\n     */\\n    function wrapAndTransfer() public payable {\\n        weth.deposit{ value: address(this).balance }();\\n        weth.transfer(bridgePool, weth.balanceOf(address(this)));\\n    }\\n\\n    // Fallback function enable this contract to receive funds when they are unwrapped from the weth contract.\\n    fallback() external payable {\\n        wrapAndTransfer();\\n    }\\n}\\n\",\"keccak256\":\"0x486e601fd0def9b0e63e3cfdfaf62e89dbfdfc00c1a43750893798479be11412\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/test/Arbitrum_InboxMock.sol": {
                "Arbitrum_BridgeMock": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "activeOutbox",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "outbox",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address payable",
                                    "name": "messengerToCall",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "processMessageFromCrossChainChild",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_outbox",
                                    "type": "address"
                                }
                            ],
                            "name": "setOutbox",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b506103a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063a3b2436014610051578063ab5d894314610066578063ce11e6ab146100a9578063ff204f3b146100c9575b600080fd5b61006461005f3660046101fa565b61011e565b005b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6000546100809073ffffffffffffffffffffffffffffffffffffffff1681565b6100646100d73660046102dc565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040517f109ff9a900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063109ff9a990610170908490600401610300565b600060405180830381600087803b15801561018a57600080fd5b505af115801561019e573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146101c857600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561020d57600080fd5b8235610218816101a6565b9150602083013567ffffffffffffffff8082111561023557600080fd5b818501915085601f83011261024957600080fd5b81358181111561025b5761025b6101cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156102a1576102a16101cb565b816040528281528860208487010111156102ba57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156102ee57600080fd5b81356102f9816101a6565b9392505050565b600060208083528351808285015260005b8181101561032d57858101830151858201604001528201610311565b8181111561033f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea2646970667358221220db7c33e8552c241ab4e89237e4fd880a6fbdfd2a4bcd22845a164aa53e7f3e0d64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A9 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3B24360 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xAB5D8943 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0xCE11E6AB EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xFF204F3B EQ PUSH2 0xC9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x11E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x80 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x109FF9A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x109FF9A9 SWAP1 PUSH2 0x170 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x218 DUP2 PUSH2 0x1A6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x25B JUMPI PUSH2 0x25B PUSH2 0x1CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2A1 JUMPI PUSH2 0x2A1 PUSH2 0x1CB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F9 DUP2 PUSH2 0x1A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x32D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x311 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB PUSH29 0x33E8552C241AB4E89237E4FD880A6FBDFD2A4BCD22845A164AA53E7F3E 0xD PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "379:650:56:-:0;;;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@activeOutbox_9814": {
                                    "entryPoint": null,
                                    "id": 9814,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@outbox_9796": {
                                    "entryPoint": null,
                                    "id": 9796,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@processMessageFromCrossChainChild_9829": {
                                    "entryPoint": 286,
                                    "id": 9829,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@setOutbox_9806": {
                                    "entryPoint": null,
                                    "id": 9806,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 732,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_payablet_bytes_memory_ptr": {
                                    "entryPoint": 506,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 768,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 459,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_address_payable": {
                                    "entryPoint": 422,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:2653:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "67:109:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "154:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "163:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "166:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "156:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "156:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "156:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "90:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "101:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "108:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "97:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "97:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "87:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "87:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "80:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "80:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "77:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_address_payable",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "56:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:162:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "213:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "230:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "233:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "223:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "223:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "223:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "327:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "330:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "320:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "320:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "320:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "351:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "354:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "344:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "344:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "344:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "181:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "474:1027:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "520:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "529:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "532:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "522:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "522:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "522:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "495:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "504:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "491:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "491:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "516:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "487:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "487:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "484:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "545:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "571:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "558:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "558:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "549:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "623:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address_payable",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "590:32:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "590:39:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "590:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "638:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "648:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "638:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "662:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "693:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "704:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "689:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "689:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "676:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "676:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "666:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "717:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "727:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "721:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "772:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "781:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "784:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "774:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "774:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "774:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "760:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "768:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "757:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "757:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "754:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "797:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "811:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "822:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "807:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "807:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "801:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "877:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "886:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "889:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "879:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "879:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "879:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "856:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "860:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "852:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "852:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "867:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "848:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "848:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "841:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "841:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "838:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "902:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "925:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "912:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "912:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "906:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "951:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "953:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "953:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "953:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "943:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "947:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "940:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "940:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "937:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "982:76:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "992:66:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "986:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1067:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1087:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1081:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1081:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1071:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1099:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1121:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "1145:2:66"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1149:4:66",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1141:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1141:13:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1156:2:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1137:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1137:22:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1161:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1133:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1133:31:66"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1166:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1129:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1129:40:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1117:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1117:53:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1103:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1229:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1231:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1231:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1231:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1188:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1200:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1185:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1185:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1208:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1220:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1205:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1205:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1182:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1182:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1179:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1267:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1271:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1260:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1260:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1260:22:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1298:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1306:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1291:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1291:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1291:18:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1355:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1364:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1367:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1357:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1357:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1357:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1332:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1336:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1328:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1328:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1341:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1324:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1324:20:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1346:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1321:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1321:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1318:53:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1397:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1405:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1393:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1393:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1414:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1418:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1410:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1410:11:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1423:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1380:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1380:46:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1380:46:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "memPtr",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1450:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1458:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1446:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1446:15:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1463:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1442:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1442:24:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1468:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1435:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1435:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1435:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1479:16:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1489:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1479:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_payablet_bytes_memory_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "432:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "443:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "455:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "463:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "370:1131:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1607:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1617:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1629:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1640:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1625:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1625:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1617:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1659:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1674:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1682:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1670:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1670:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1652:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1652:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1652:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1576:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1587:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1598:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1506:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1807:185:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1853:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1862:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1865:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1855:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1855:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1855:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1828:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1837:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1824:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1824:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1849:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1820:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1820:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1817:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1878:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1904:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1891:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1891:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1882:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1956:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address_payable",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1923:32:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1923:39:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1923:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1971:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1981:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1971:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1773:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1784:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1796:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1737:255:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2116:535:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2126:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2136:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2130:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2154:9:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2165:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2147:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2147:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2147:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2177:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2197:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2191:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2191:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2181:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2224:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2235:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2220:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2220:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2240:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2213:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2213:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2213:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2256:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2265:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2260:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2325:90:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2354:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2365:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2350:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2350:17:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "2369:2:66",
                                                                                            "type": "",
                                                                                            "value": "64"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2346:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2346:26:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "value0",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "2388:6:66"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "2396:1:66"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "2384:3:66"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "2384:14:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2400:2:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2380:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2380:23:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2374:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2374:30:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2339:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2339:66:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2339:66:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2286:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2289:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2283:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2283:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2297:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2299:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2308:1:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2311:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2304:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2304:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2299:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2279:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "2275:140:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2449:66:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2478:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "length",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2489:6:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2474:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2474:22:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "2498:2:66",
                                                                                            "type": "",
                                                                                            "value": "64"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2470:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2470:31:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2503:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2463:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2463:42:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2463:42:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2430:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2433:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2427:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2427:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2424:91:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2524:121:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2540:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2559:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "2567:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2555:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2555:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2572:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2551:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2551:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2536:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2536:104:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2642:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2532:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2532:113:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2524:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2085:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2096:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2107:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1997:654:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function validator_revert_address_payable(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_address_payablet_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address_payable(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value1 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address_payable(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c8063a3b2436014610051578063ab5d894314610066578063ce11e6ab146100a9578063ff204f3b146100c9575b600080fd5b61006461005f3660046101fa565b61011e565b005b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6000546100809073ffffffffffffffffffffffffffffffffffffffff1681565b6100646100d73660046102dc565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6040517f109ff9a900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063109ff9a990610170908490600401610300565b600060405180830381600087803b15801561018a57600080fd5b505af115801561019e573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146101c857600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561020d57600080fd5b8235610218816101a6565b9150602083013567ffffffffffffffff8082111561023557600080fd5b818501915085601f83011261024957600080fd5b81358181111561025b5761025b6101cb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156102a1576102a16101cb565b816040528281528860208487010111156102ba57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156102ee57600080fd5b81356102f9816101a6565b9392505050565b600060208083528351808285015260005b8181101561032d57858101830151858201604001528201610311565b8181111561033f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fea2646970667358221220db7c33e8552c241ab4e89237e4fd880a6fbdfd2a4bcd22845a164aa53e7f3e0d64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3B24360 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0xAB5D8943 EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0xCE11E6AB EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xFF204F3B EQ PUSH2 0xC9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x11E JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x80 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2DC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x109FF9A900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x109FF9A9 SWAP1 PUSH2 0x170 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x300 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x218 DUP2 PUSH2 0x1A6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x25B JUMPI PUSH2 0x25B PUSH2 0x1CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2A1 JUMPI PUSH2 0x2A1 PUSH2 0x1CB JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2F9 DUP2 PUSH2 0x1A6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x32D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x311 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x33F JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB PUSH29 0x33E8552C241AB4E89237E4FD880A6FBDFD2A4BCD22845A164AA53E7F3E 0xD PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "379:650:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;825:202;;;;;;:::i;:::-;;:::i;:::-;;526:86;573:7;599:6;;;526:86;;;1682:42:66;1670:55;;;1652:74;;1640:2;1625:18;526:86:56;;;;;;;414:21;;;;;;;;;442:78;;;;;;:::i;:::-;497:6;:16;;;;;;;;;;;;;;;442:78;825:202;939:81;;;;;:75;;;;;;:81;;1015:4;;939:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;825:202;;:::o;14:162:66:-;108:42;101:5;97:54;90:5;87:65;77:93;;166:1;163;156:12;77:93;14:162;:::o;181:184::-;233:77;230:1;223:88;330:4;327:1;320:15;354:4;351:1;344:15;370:1131;455:6;463;516:2;504:9;495:7;491:23;487:32;484:52;;;532:1;529;522:12;484:52;571:9;558:23;590:39;623:5;590:39;:::i;:::-;648:5;-1:-1:-1;704:2:66;689:18;;676:32;727:18;757:14;;;754:34;;;784:1;781;774:12;754:34;822:6;811:9;807:22;797:32;;867:7;860:4;856:2;852:13;848:27;838:55;;889:1;886;879:12;838:55;925:2;912:16;947:2;943;940:10;937:36;;;953:18;;:::i;:::-;1087:2;1081:9;1149:4;1141:13;;992:66;1137:22;;;1161:2;1133:31;1129:40;1117:53;;;1185:18;;;1205:22;;;1182:46;1179:72;;;1231:18;;:::i;:::-;1271:10;1267:2;1260:22;1306:2;1298:6;1291:18;1346:7;1341:2;1336;1332;1328:11;1324:20;1321:33;1318:53;;;1367:1;1364;1357:12;1318:53;1423:2;1418;1414;1410:11;1405:2;1397:6;1393:15;1380:46;1468:1;1463:2;1458;1450:6;1446:15;1442:24;1435:35;1489:6;1479:16;;;;;;;370:1131;;;;;:::o;1737:255::-;1796:6;1849:2;1837:9;1828:7;1824:23;1820:32;1817:52;;;1865:1;1862;1855:12;1817:52;1904:9;1891:23;1923:39;1956:5;1923:39;:::i;:::-;1981:5;1737:255;-1:-1:-1;;;1737:255:66:o;1997:654::-;2107:4;2136:2;2165;2154:9;2147:21;2197:6;2191:13;2240:6;2235:2;2224:9;2220:18;2213:34;2265:1;2275:140;2289:6;2286:1;2283:13;2275:140;;;2384:14;;;2380:23;;2374:30;2350:17;;;2369:2;2346:26;2339:66;2304:10;;2275:140;;;2433:6;2430:1;2427:13;2424:91;;;2503:1;2498:2;2489:6;2478:9;2474:22;2470:31;2463:42;2424:91;-1:-1:-1;2567:2:66;2555:15;2572:66;2551:88;2536:104;;;;2642:2;2532:113;;1997:654;-1:-1:-1;;;1997:654:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "187400",
                                "executionCost": "232",
                                "totalCost": "187632"
                            },
                            "external": {
                                "activeOutbox()": "2284",
                                "outbox()": "2323",
                                "processMessageFromCrossChainChild(address,bytes)": "infinite",
                                "setOutbox(address)": "24558"
                            }
                        },
                        "methodIdentifiers": {
                            "activeOutbox()": "ab5d8943",
                            "outbox()": "ce11e6ab",
                            "processMessageFromCrossChainChild(address,bytes)": "a3b24360",
                            "setOutbox(address)": "ff204f3b"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"activeOutbox\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"outbox\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"messengerToCall\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"processMessageFromCrossChainChild\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_outbox\",\"type\":\"address\"}],\"name\":\"setOutbox\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/test/Arbitrum_InboxMock.sol\":\"Arbitrum_BridgeMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"@uma/core/contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\\\";\\nimport \\\"../interfaces/ParentMessengerInterface.sol\\\";\\nimport \\\"../interfaces/ParentMessengerConsumerInterface.sol\\\";\\nimport \\\"./ParentMessengerBase.sol\\\";\\nimport \\\"../../common/implementation/Lockable.sol\\\";\\n\\n/**\\n * @notice Sends cross chain messages from Ethereum L1 to Arbitrum L2 network.\\n * @dev This contract is ownable and should be owned by the DVM governor.\\n */\\ncontract Arbitrum_ParentMessenger is\\n    Arbitrum_CrossDomainEnabled,\\n    ParentMessengerInterface,\\n    ParentMessengerBase,\\n    Lockable\\n{\\n    event SetDefaultGasLimit(uint32 newDefaultGasLimit);\\n    event SetDefaultMaxSubmissionCost(uint256 newMaxSubmissionCost);\\n    event SetDefaultGasPrice(uint256 newDefaultGasPrice);\\n    event SetRefundL2Address(address newRefundL2Address);\\n    event MessageSentToChild(\\n        bytes data,\\n        address indexed targetSpoke,\\n        uint256 l1CallValue,\\n        uint32 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        address refundL2Address,\\n        address indexed childMessenger,\\n        uint256 sequenceNumber\\n    );\\n    event MessageReceivedFromChild(bytes data, address indexed childMessenger, address indexed targetHub);\\n\\n    // TODO: Can these default values be determined dynamically via L1 Arbitrum system contracts?\\n\\n    // Gas limit for immediate L2 execution attempt (can be estimated via NodeInterface.estimateRetryableTicket).\\n    // NodeInterface precompile interface exists at L2 address 0x00000000000000000000000000000000000000C8\\n    uint32 public defaultGasLimit = 5_000_000;\\n\\n    // Amount of ETH allocated to pay for the base submission fee. The base submission fee is a parameter unique to\\n    // retryable transactions; the user is charged the base submission fee to cover the storage costs of keeping their\\n    // ticket\\u2019s calldata in the retry buffer. (current base submission fee is queryable via\\n    // ArbRetryableTx.getSubmissionPrice). ArbRetryableTicket precompile interface exists at L2 address\\n    // 0x000000000000000000000000000000000000006E.\\n    uint256 public defaultMaxSubmissionCost = 0.1e18;\\n\\n    // L2 Gas price bid for immediate L2 execution attempt (queryable via standard eth*gasPrice RPC)\\n    uint256 public defaultGasPrice = 10e9; // 10 gWei\\n\\n    // This address on L2 receives extra ETH that is left over after relaying a message via the inbox.\\n    address public refundL2Address;\\n\\n    /**\\n     * @notice Construct the Optimism_ParentMessenger contract.\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     * @param _childChainId The chain id of the Optimism L2 network this messenger should connect to.\\n     **/\\n    constructor(address _inbox, uint256 _childChainId)\\n        Arbitrum_CrossDomainEnabled(_inbox)\\n        ParentMessengerBase(_childChainId)\\n    {\\n        refundL2Address = owner();\\n    }\\n\\n    /**\\n     * @notice Changes the refund address on L2 that receives excess gas or the full msg.value if the retryable\\n     * ticket reverts.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newRefundl2Address the new refund address to set.\\n     */\\n    function setRefundL2Address(address newRefundl2Address) public onlyOwner nonReentrant() {\\n        refundL2Address = newRefundl2Address;\\n        emit SetRefundL2Address(refundL2Address);\\n    }\\n\\n    /**\\n     * @notice Changes the default gas limit that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultGasLimit the new L2 gas limit to be set.\\n     */\\n    function setDefaultGasLimit(uint32 newDefaultGasLimit) public onlyOwner nonReentrant() {\\n        defaultGasLimit = newDefaultGasLimit;\\n        emit SetDefaultGasLimit(newDefaultGasLimit);\\n    }\\n\\n    /**\\n     * @notice Changes the default gas price that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultGasPrice the new L2 gas price to be set.\\n     */\\n    function setDefaultGasPrice(uint256 newDefaultGasPrice) public onlyOwner nonReentrant() {\\n        defaultGasPrice = newDefaultGasPrice;\\n        emit SetDefaultGasPrice(newDefaultGasPrice);\\n    }\\n\\n    /**\\n     * @notice Changes the default max submission cost that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultMaxSubmissionCost the new L2 max submission cost to be set.\\n     */\\n    function setDefaultMaxSubmissionCost(uint256 newDefaultMaxSubmissionCost) public onlyOwner nonReentrant() {\\n        defaultMaxSubmissionCost = newDefaultMaxSubmissionCost;\\n        emit SetDefaultMaxSubmissionCost(newDefaultMaxSubmissionCost);\\n    }\\n\\n    /**\\n     * @notice Changes the address of the oracle spoke on L2 via the child messenger.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param newOracleSpoke the new oracle spoke address set on L2.\\n     */\\n    function setChildOracleSpoke(address newOracleSpoke) public onlyOwner {\\n        bytes memory dataSentToChild = abi.encodeWithSignature(\\\"setOracleSpoke(address)\\\", newOracleSpoke);\\n        _sendMessageToChild(dataSentToChild, childMessenger);\\n    }\\n\\n    /**\\n     * @notice Changes the address of the parent messenger on L2 via the child messenger.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param newParentMessenger the new parent messenger contract to be set on L2.\\n     */\\n    function setChildParentMessenger(address newParentMessenger) public onlyOwner {\\n        bytes memory dataSentToChild = abi.encodeWithSignature(\\\"setParentMessenger(address)\\\", newParentMessenger);\\n        _sendMessageToChild(dataSentToChild, childMessenger);\\n    }\\n\\n    /**\\n     * @notice Sends a message to the child messenger via the canonical message bridge.\\n     * @dev The caller must be the either the OracleHub or the GovernorHub. This is to send either a\\n     * price or initiate a governance action to the OracleSpoke or GovernorSpoke on the child network.\\n     * @dev The recipient of this message is the child messenger. The messenger must implement processMessageFromParent\\n     * which then forwards the data to the target either the OracleSpoke or the governorSpoke depending on the caller.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param data data message sent to the child messenger. Should be an encoded function call or packed data.\\n     */\\n    function sendMessageToChild(bytes memory data) external override onlyHubContract() nonReentrant() {\\n        address target = msg.sender == oracleHub ? oracleSpoke : governorSpoke;\\n        bytes memory dataSentToChild =\\n            abi.encodeWithSignature(\\\"processMessageFromCrossChainParent(bytes,address)\\\", data, target);\\n        _sendMessageToChild(dataSentToChild, target);\\n    }\\n\\n    /**\\n     * @notice Process a received message from the child messenger via the canonical message bridge.\\n     * @dev The caller must be the the child messenger, sent over the canonical message bridge.\\n     * @dev Note that only the OracleHub can receive messages from the child messenger. Therefore we can always forward\\n     * these messages to this contract. The OracleHub must implement processMessageFromChild to handle this message.\\n     * @param data data message sent from the child messenger. Should be an encoded function call or packed data.\\n     */\\n    function processMessageFromCrossChainChild(bytes memory data)\\n        public\\n        onlyFromCrossDomainAccount(childMessenger)\\n        nonReentrant()\\n    {\\n        ParentMessengerConsumerInterface(oracleHub).processMessageFromChild(childChainId, data);\\n        emit MessageReceivedFromChild(data, childMessenger, oracleHub);\\n    }\\n\\n    /**\\n     * @notice This function is expected to be queried by Hub contracts that need to determine how much ETH\\n     * to include in msg.value when calling `sendMessageToChild`.\\n     * @return Amount of msg.value to include to send cross-chain message.\\n     */\\n    function getL1CallValue()\\n        public\\n        view\\n        override(ParentMessengerBase, ParentMessengerInterface)\\n        nonReentrantView()\\n        returns (uint256)\\n    {\\n        return _getL1CallValue();\\n    }\\n\\n    // We need to allow this contract to receive ETH, so that it can include some msg.value amount on external calls\\n    // to the `sendMessageToChild` function. We shouldn't expect the owner of this contract to send\\n    // ETH because the owner is intended to be a contract (e.g. the Governor) and we don't want to change the\\n    // Governor interface.\\n    fallback() external payable {}\\n\\n    // Used to determine how much ETH to include in msg.value when calling admin functions like\\n    // `setChildParentMessenger` and sending messages across the bridge.\\n    function _getL1CallValue() internal view returns (uint256) {\\n        // This could overflow if these values are set too high, but since they are configurable by trusted owner\\n        // we won't catch this case.\\n        return defaultMaxSubmissionCost + defaultGasPrice * defaultGasLimit;\\n    }\\n\\n    // This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n    function _sendMessageToChild(bytes memory data, address target) internal {\\n        uint256 requiredL1CallValue = _getL1CallValue();\\n        require(address(this).balance >= requiredL1CallValue, \\\"Insufficient ETH balance\\\");\\n\\n        uint256 seqNumber =\\n            sendTxToL2NoAliassing(\\n                childMessenger,\\n                refundL2Address,\\n                requiredL1CallValue,\\n                defaultMaxSubmissionCost,\\n                defaultGasLimit,\\n                defaultGasPrice,\\n                data\\n            );\\n        emit MessageSentToChild(\\n            data,\\n            target,\\n            requiredL1CallValue,\\n            defaultGasLimit,\\n            defaultGasPrice,\\n            defaultMaxSubmissionCost,\\n            refundL2Address,\\n            childMessenger,\\n            seqNumber\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x944c1d9fca50e1a41ea645b1b481a57a01d8dad3befb157d861e8364c2b4d844\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../interfaces/ParentMessengerInterface.sol\\\";\\n\\nabstract contract ParentMessengerBase is Ownable, ParentMessengerInterface {\\n    uint256 public childChainId;\\n\\n    address public childMessenger;\\n\\n    address public oracleHub;\\n    address public governorHub;\\n\\n    address public oracleSpoke;\\n    address public governorSpoke;\\n\\n    event SetChildMessenger(address indexed childMessenger);\\n    event SetOracleHub(address indexed oracleHub);\\n    event SetGovernorHub(address indexed governorHub);\\n    event SetOracleSpoke(address indexed oracleSpoke);\\n    event SetGovernorSpoke(address indexed governorSpoke);\\n\\n    modifier onlyHubContract() {\\n        require(msg.sender == oracleHub || msg.sender == governorHub, \\\"Only privileged caller\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the ParentMessengerBase contract.\\n     * @param _childChainId The chain id of the L2 network this messenger should connect to.\\n     **/\\n    constructor(uint256 _childChainId) {\\n        childChainId = _childChainId;\\n    }\\n\\n    /*******************\\n     *  OWNER METHODS  *\\n     *******************/\\n\\n    /**\\n     * @notice Changes the stored address of the child messenger, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newChildMessenger address of the new child messenger, deployed on L2.\\n     */\\n    function setChildMessenger(address newChildMessenger) public onlyOwner {\\n        childMessenger = newChildMessenger;\\n        emit SetChildMessenger(childMessenger);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Oracle hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleHub address of the new oracle hub, deployed on L1 Ethereum.\\n     */\\n    function setOracleHub(address newOracleHub) public onlyOwner {\\n        oracleHub = newOracleHub;\\n        emit SetOracleHub(oracleHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Governor hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorHub address of the new governor hub, deployed on L1 Ethereum.\\n     */\\n    function setGovernorHub(address newGovernorHub) public onlyOwner {\\n        governorHub = newGovernorHub;\\n        emit SetGovernorHub(governorHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the oracle spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleSpoke address of the new oracle spoke, deployed on L2.\\n     */\\n    function setOracleSpoke(address newOracleSpoke) public onlyOwner {\\n        oracleSpoke = newOracleSpoke;\\n        emit SetOracleSpoke(oracleSpoke);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the governor spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorSpoke address of the new governor spoke, deployed on L2.\\n     */\\n    function setGovernorSpoke(address newGovernorSpoke) public onlyOwner {\\n        governorSpoke = newGovernorSpoke;\\n        emit SetGovernorSpoke(governorSpoke);\\n    }\\n\\n    /**\\n     * @notice Returns the amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     * @return The amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     */\\n    function getL1CallValue() external view virtual override returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x6d23fec9f17279108b1e51871f4c751e3fb25923d2099053281ac249897ea81b\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerConsumerInterface {\\n    // Function called on Oracle hub to pass in data send from L2, with chain ID.\\n    function processMessageFromChild(uint256 chainId, bytes memory data) external;\\n}\\n\",\"keccak256\":\"0xcb13640f61cb5f5c880f23ca1c82514e46943c94837582bc699c69665fbc5cbb\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerInterface {\\n    // Should send cross-chain message to Child messenger contract or revert.\\n    function sendMessageToChild(bytes memory data) external;\\n\\n    // Informs Hub how much msg.value they need to include to call `sendMessageToChild`.\\n    function getL1CallValue() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x404de68facc63619239a94f5ff8457f47f0c4d098d36b320ef6a0dbf1d6ba568\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":{\"content\":\"// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\\n// with changes only to the solidity version.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n\\n/*\\n * Copyright 2021, Offchain Labs, Inc.\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *    http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\npragma solidity ^0.8.0;\\n\\ninterface iArbitrum_Outbox {\\n    function l2ToL1Sender() external view returns (address);\\n}\\n\",\"keccak256\":\"0x346d5d3a1bcdb29ef40bebbf0ca78fe3063e14176c20c96ea7854cbb4762cbd8\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol\\n// with a change to the solidity version.\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"../../external/avm/interfaces/iArbitrum_Outbox.sol\\\";\\n\\nabstract contract Arbitrum_CrossDomainEnabled {\\n    iArbitrum_Inbox public immutable inbox;\\n\\n    /**\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     */\\n    constructor(address _inbox) {\\n        inbox = iArbitrum_Inbox(_inbox);\\n    }\\n\\n    // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\\n    // This function will not apply aliassing to the `user` address on L2.\\n    // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the\\n    // inbox.\\n    function sendTxToL2NoAliassing(\\n        address target, // Address where transaction will initiate on L2.\\n        address user, // Address where excess gas is credited on L2.\\n        uint256 l1CallValue, // msg.value deposited to `user` on L2.\\n        uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this\\n        // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should\\n        // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`.\\n        uint256 maxGas, // Gas limit for immediate L2 execution attempt.\\n        uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt.\\n        bytes memory data // ABI encoded data to send to target.\\n    ) internal returns (uint256) {\\n        // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external\\n        // - address destAddr: destination L2 contract address\\n        // - uint256 l2CallValue: call value for retryable L2 message\\n        // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee\\n        // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2\\n        // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled\\n        // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution\\n        // - uint256 gasPriceBid: price bid for L2 execution\\n        // - bytes data: ABI encoded data of L2 message\\n        uint256 seqNum =\\n            inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }(\\n                target,\\n                0, // we always assume that l2CallValue = 0\\n                maxSubmissionCost,\\n                user,\\n                user,\\n                maxGas,\\n                gasPriceBid,\\n                data\\n            );\\n        return seqNum;\\n    }\\n\\n    // Copied mostly from: https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol#L31\\n    modifier onlyFromCrossDomainAccount(address l2Counterpart) {\\n        // a message coming from the counterpart gateway was executed by the bridge\\n        IBridge bridge = IBridge(inbox.bridge());\\n        require(msg.sender == address(bridge), \\\"NOT_FROM_BRIDGE\\\");\\n\\n        // and the outbox reports that the L2 address of the sender is the counterpart gateway\\n        address l2ToL1Sender = iArbitrum_Outbox(bridge.activeOutbox()).l2ToL1Sender();\\n        require(l2ToL1Sender == l2Counterpart, \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x8bfa42e9d6c7a927da893c0968213e2263c958414e727562b7e3a02397a962ce\"},\"contracts/insured-bridge/test/Arbitrum_InboxMock.sol\":{\"content\":\"pragma solidity ^0.8.0;\\nimport \\\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol\\\";\\n\\ncontract Arbitrum_OutboxMock {\\n    function l2ToL1Sender() external view returns (address) {\\n        // Function not called in tests, only smocked.\\n        return address(this);\\n    }\\n}\\n\\ncontract Arbitrum_BridgeMock {\\n    address public outbox;\\n\\n    function setOutbox(address _outbox) external {\\n        outbox = _outbox;\\n    }\\n\\n    function activeOutbox() external view returns (address) {\\n        return outbox;\\n    }\\n\\n    // This function can be called by an EOA to send a call to the parent messenger, which is important in tests\\n    // because `processMessageFromCrossChainChild` can only be called by the Bridge contract.\\n    function processMessageFromCrossChainChild(address payable messengerToCall, bytes memory data) external {\\n        Arbitrum_ParentMessenger(messengerToCall).processMessageFromCrossChainChild(data);\\n    }\\n}\\n\\ncontract Arbitrum_InboxMock is iArbitrum_Inbox {\\n    // We leave these unused function parameters named because this contract is used with smockit and makes testing\\n    // this function's call inputs easier.\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable override returns (uint256) {\\n        return 0;\\n    }\\n\\n    function bridge() external view returns (address) {\\n        // Function not called in tests, only smocked.\\n        return address(this);\\n    }\\n}\\n\",\"keccak256\":\"0xd6bd7caf7e322efb803494569b48d24b8e8540879e7edd5522bb88ea5053853d\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 9796,
                                "contract": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol:Arbitrum_BridgeMock",
                                "label": "outbox",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                },
                "Arbitrum_InboxMock": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "bridge",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "destAddr",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "l2CallValue",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxSubmissionCost",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "excessFeeRefundAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "callValueRefundAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "maxGas",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasPriceBid",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "data",
                                    "type": "bytes"
                                }
                            ],
                            "name": "createRetryableTicketNoRefundAliasRewrite",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b506101a3806100206000396000f3fe6080604052600436106100295760003560e01c80631b871c8d1461002e578063e78cea921461005e575b600080fd5b61004b61003c3660046100a2565b60009998505050505050505050565b6040519081526020015b60405180910390f35b34801561006a57600080fd5b50604051308152602001610055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461009d57600080fd5b919050565b60008060008060008060008060006101008a8c0312156100c157600080fd5b6100ca8a610079565b985060208a0135975060408a013596506100e660608b01610079565b95506100f460808b01610079565b945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff8082111561011f57600080fd5b818c0191508c601f83011261013357600080fd5b81358181111561014257600080fd5b8d602082850101111561015457600080fd5b602083019450809350505050929598509295985092959856fea2646970667358221220db7bf91430db81ccc76251b942eba10b22d5c9ee1c2b120a7e3d0cf12239fb2764736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A3 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1B871C8D EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xE78CEA92 EQ PUSH2 0x5E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B PUSH2 0x3C CALLDATASIZE PUSH1 0x4 PUSH2 0xA2 JUMP JUMPDEST PUSH1 0x0 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x55 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 DUP11 DUP13 SUB SLT ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCA DUP11 PUSH2 0x79 JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP11 ADD CALLDATALOAD SWAP7 POP PUSH2 0xE6 PUSH1 0x60 DUP12 ADD PUSH2 0x79 JUMP JUMPDEST SWAP6 POP PUSH2 0xF4 PUSH1 0x80 DUP12 ADD PUSH2 0x79 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP4 POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD SWAP3 POP PUSH1 0xE0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP13 ADD SWAP2 POP DUP13 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP14 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x154 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB PUSH28 0xF91430DB81CCC76251B942EBA10B22D5C9EE1C2B120A7E3D0CF12239 0xFB 0x27 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "1031:740:56:-:0;;;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@bridge_9868": {
                                    "entryPoint": null,
                                    "id": 9868,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@createRetryableTicketNoRefundAliasRewrite_9857": {
                                    "entryPoint": null,
                                    "id": 9857,
                                    "parameterSlots": 9,
                                    "returnSlots": 1
                                },
                                "abi_decode_address": {
                                    "entryPoint": 121,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_uint256t_uint256t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr": {
                                    "entryPoint": 162,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 9
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:1720:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "63:147:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "73:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "95:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "82:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "82:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "73:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "188:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "197:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "200:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "190:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "190:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "190:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "124:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "135:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "142:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "131:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "131:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "121:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "121:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "114:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "114:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "111:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "42:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "53:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "423:882:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "470:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "479:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "482:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "472:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "472:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "472:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "444:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "453:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "440:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "440:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "465:3:66",
                                                                        "type": "",
                                                                        "value": "256"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "436:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "436:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "433:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "495:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "524:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "505:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "505:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "495:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "543:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "570:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "581:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "566:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "566:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "553:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "553:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "543:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "594:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "621:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "632:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "617:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "617:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "604:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "604:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "594:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "645:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "678:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "689:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "674:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "674:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "655:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "655:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "645:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "702:49:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "735:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "746:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "731:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "731:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "712:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "712:39:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "702:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "760:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "787:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "798:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "783:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "783:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "770:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "770:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "760:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "812:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "839:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "850:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "835:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "835:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "822:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "822:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "812:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "864:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "895:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "906:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "891:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "891:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "878:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "878:33:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "868:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "920:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "930:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "924:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "975:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "984:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "987:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "977:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "977:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "977:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "963:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "971:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "960:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "960:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "957:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1000:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1014:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1025:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1010:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1010:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1004:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1080:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1089:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1092:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1082:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1082:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1082:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1059:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1063:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1055:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1055:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1070:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1051:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1051:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1044:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1044:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1041:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1105:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1132:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1119:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1119:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1109:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1162:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1171:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1174:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1164:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1164:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1164:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1150:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1158:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1147:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1147:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1144:34:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1228:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1237:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1240:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1230:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1230:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1230:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1201:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1205:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1197:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1197:15:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1214:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1193:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1193:24:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1219:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1190:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1190:37:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1187:57:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1253:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1267:2:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1271:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1263:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1263:11:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value7",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1253:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1283:16:66",
                                                            "value": {
                                                                "name": "length",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1293:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value8",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1283:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "325:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "336:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "348:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "356:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "364:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "372:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "380:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "388:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "396:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "404:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value8",
                                                        "nodeType": "YulTypedName",
                                                        "src": "412:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "215:1090:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1411:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1421:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1433:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1444:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1429:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1429:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1421:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1463:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1474:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1456:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1456:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1456:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1380:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1391:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1402:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1310:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1593:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1603:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1615:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1626:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1611:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1611:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1603:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1645:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1660:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1668:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1656:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1656:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1638:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1638:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1638:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1562:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1573:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1584:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1492:226:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8\n    {\n        if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_address(add(headStart, 96))\n        value4 := abi_decode_address(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n        let offset := calldataload(add(headStart, 224))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value7 := add(_2, 32)\n        value8 := length\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600436106100295760003560e01c80631b871c8d1461002e578063e78cea921461005e575b600080fd5b61004b61003c3660046100a2565b60009998505050505050505050565b6040519081526020015b60405180910390f35b34801561006a57600080fd5b50604051308152602001610055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461009d57600080fd5b919050565b60008060008060008060008060006101008a8c0312156100c157600080fd5b6100ca8a610079565b985060208a0135975060408a013596506100e660608b01610079565b95506100f460808b01610079565b945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff8082111561011f57600080fd5b818c0191508c601f83011261013357600080fd5b81358181111561014257600080fd5b8d602082850101111561015457600080fd5b602083019450809350505050929598509295985092959856fea2646970667358221220db7bf91430db81ccc76251b942eba10b22d5c9ee1c2b120a7e3d0cf12239fb2764736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1B871C8D EQ PUSH2 0x2E JUMPI DUP1 PUSH4 0xE78CEA92 EQ PUSH2 0x5E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B PUSH2 0x3C CALLDATASIZE PUSH1 0x4 PUSH2 0xA2 JUMP JUMPDEST PUSH1 0x0 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD ADDRESS DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x55 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x100 DUP11 DUP13 SUB SLT ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCA DUP11 PUSH2 0x79 JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP11 ADD CALLDATALOAD SWAP7 POP PUSH2 0xE6 PUSH1 0x60 DUP12 ADD PUSH2 0x79 JUMP JUMPDEST SWAP6 POP PUSH2 0xF4 PUSH1 0x80 DUP12 ADD PUSH2 0x79 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP4 POP PUSH1 0xC0 DUP11 ADD CALLDATALOAD SWAP3 POP PUSH1 0xE0 DUP11 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP13 ADD SWAP2 POP DUP13 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP14 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x154 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDB PUSH28 0xF91430DB81CCC76251B942EBA10B22D5C9EE1C2B120A7E3D0CF12239 0xFB 0x27 PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "1031:740:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;1243:378;;;;;;:::i;:::-;1587:7;1243:378;;;;;;;;;;;;;;;1456:25:66;;;1444:2;1429:18;1243:378:56;;;;;;;;1627:142;;;;;;;;;;-1:-1:-1;1627:142:56;;1757:4;1638:74:66;;1626:2;1611:18;1627:142:56;1492:226:66;14:196;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:1090::-;348:6;356;364;372;380;388;396;404;412;465:3;453:9;444:7;440:23;436:33;433:53;;;482:1;479;472:12;433:53;505:29;524:9;505:29;:::i;:::-;495:39;;581:2;570:9;566:18;553:32;543:42;;632:2;621:9;617:18;604:32;594:42;;655:38;689:2;678:9;674:18;655:38;:::i;:::-;645:48;;712:39;746:3;735:9;731:19;712:39;:::i;:::-;702:49;;798:3;787:9;783:19;770:33;760:43;;850:3;839:9;835:19;822:33;812:43;;906:3;895:9;891:19;878:33;930:18;971:2;963:6;960:14;957:34;;;987:1;984;977:12;957:34;1025:6;1014:9;1010:22;1000:32;;1070:7;1063:4;1059:2;1055:13;1051:27;1041:55;;1092:1;1089;1082:12;1041:55;1132:2;1119:16;1158:2;1150:6;1147:14;1144:34;;;1174:1;1171;1164:12;1144:34;1219:7;1214:2;1205:6;1201:2;1197:15;1193:24;1190:37;1187:57;;;1240:1;1237;1230:12;1187:57;1271:2;1267;1263:11;1253:21;;1293:6;1283:16;;;;;215:1090;;;;;;;;;;;:::o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "83800",
                                "executionCost": "135",
                                "totalCost": "83935"
                            },
                            "external": {
                                "bridge()": "176",
                                "createRetryableTicketNoRefundAliasRewrite(address,uint256,uint256,address,address,uint256,uint256,bytes)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "bridge()": "e78cea92",
                            "createRetryableTicketNoRefundAliasRewrite(address,uint256,uint256,address,address,uint256,uint256,bytes)": "1b871c8d"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"l2CallValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSubmissionCost\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"excessFeeRefundAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"callValueRefundAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPriceBid\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"createRetryableTicketNoRefundAliasRewrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/test/Arbitrum_InboxMock.sol\":\"Arbitrum_InboxMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"@uma/core/contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\\\";\\nimport \\\"../interfaces/ParentMessengerInterface.sol\\\";\\nimport \\\"../interfaces/ParentMessengerConsumerInterface.sol\\\";\\nimport \\\"./ParentMessengerBase.sol\\\";\\nimport \\\"../../common/implementation/Lockable.sol\\\";\\n\\n/**\\n * @notice Sends cross chain messages from Ethereum L1 to Arbitrum L2 network.\\n * @dev This contract is ownable and should be owned by the DVM governor.\\n */\\ncontract Arbitrum_ParentMessenger is\\n    Arbitrum_CrossDomainEnabled,\\n    ParentMessengerInterface,\\n    ParentMessengerBase,\\n    Lockable\\n{\\n    event SetDefaultGasLimit(uint32 newDefaultGasLimit);\\n    event SetDefaultMaxSubmissionCost(uint256 newMaxSubmissionCost);\\n    event SetDefaultGasPrice(uint256 newDefaultGasPrice);\\n    event SetRefundL2Address(address newRefundL2Address);\\n    event MessageSentToChild(\\n        bytes data,\\n        address indexed targetSpoke,\\n        uint256 l1CallValue,\\n        uint32 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        address refundL2Address,\\n        address indexed childMessenger,\\n        uint256 sequenceNumber\\n    );\\n    event MessageReceivedFromChild(bytes data, address indexed childMessenger, address indexed targetHub);\\n\\n    // TODO: Can these default values be determined dynamically via L1 Arbitrum system contracts?\\n\\n    // Gas limit for immediate L2 execution attempt (can be estimated via NodeInterface.estimateRetryableTicket).\\n    // NodeInterface precompile interface exists at L2 address 0x00000000000000000000000000000000000000C8\\n    uint32 public defaultGasLimit = 5_000_000;\\n\\n    // Amount of ETH allocated to pay for the base submission fee. The base submission fee is a parameter unique to\\n    // retryable transactions; the user is charged the base submission fee to cover the storage costs of keeping their\\n    // ticket\\u2019s calldata in the retry buffer. (current base submission fee is queryable via\\n    // ArbRetryableTx.getSubmissionPrice). ArbRetryableTicket precompile interface exists at L2 address\\n    // 0x000000000000000000000000000000000000006E.\\n    uint256 public defaultMaxSubmissionCost = 0.1e18;\\n\\n    // L2 Gas price bid for immediate L2 execution attempt (queryable via standard eth*gasPrice RPC)\\n    uint256 public defaultGasPrice = 10e9; // 10 gWei\\n\\n    // This address on L2 receives extra ETH that is left over after relaying a message via the inbox.\\n    address public refundL2Address;\\n\\n    /**\\n     * @notice Construct the Optimism_ParentMessenger contract.\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     * @param _childChainId The chain id of the Optimism L2 network this messenger should connect to.\\n     **/\\n    constructor(address _inbox, uint256 _childChainId)\\n        Arbitrum_CrossDomainEnabled(_inbox)\\n        ParentMessengerBase(_childChainId)\\n    {\\n        refundL2Address = owner();\\n    }\\n\\n    /**\\n     * @notice Changes the refund address on L2 that receives excess gas or the full msg.value if the retryable\\n     * ticket reverts.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newRefundl2Address the new refund address to set.\\n     */\\n    function setRefundL2Address(address newRefundl2Address) public onlyOwner nonReentrant() {\\n        refundL2Address = newRefundl2Address;\\n        emit SetRefundL2Address(refundL2Address);\\n    }\\n\\n    /**\\n     * @notice Changes the default gas limit that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultGasLimit the new L2 gas limit to be set.\\n     */\\n    function setDefaultGasLimit(uint32 newDefaultGasLimit) public onlyOwner nonReentrant() {\\n        defaultGasLimit = newDefaultGasLimit;\\n        emit SetDefaultGasLimit(newDefaultGasLimit);\\n    }\\n\\n    /**\\n     * @notice Changes the default gas price that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultGasPrice the new L2 gas price to be set.\\n     */\\n    function setDefaultGasPrice(uint256 newDefaultGasPrice) public onlyOwner nonReentrant() {\\n        defaultGasPrice = newDefaultGasPrice;\\n        emit SetDefaultGasPrice(newDefaultGasPrice);\\n    }\\n\\n    /**\\n     * @notice Changes the default max submission cost that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultMaxSubmissionCost the new L2 max submission cost to be set.\\n     */\\n    function setDefaultMaxSubmissionCost(uint256 newDefaultMaxSubmissionCost) public onlyOwner nonReentrant() {\\n        defaultMaxSubmissionCost = newDefaultMaxSubmissionCost;\\n        emit SetDefaultMaxSubmissionCost(newDefaultMaxSubmissionCost);\\n    }\\n\\n    /**\\n     * @notice Changes the address of the oracle spoke on L2 via the child messenger.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param newOracleSpoke the new oracle spoke address set on L2.\\n     */\\n    function setChildOracleSpoke(address newOracleSpoke) public onlyOwner {\\n        bytes memory dataSentToChild = abi.encodeWithSignature(\\\"setOracleSpoke(address)\\\", newOracleSpoke);\\n        _sendMessageToChild(dataSentToChild, childMessenger);\\n    }\\n\\n    /**\\n     * @notice Changes the address of the parent messenger on L2 via the child messenger.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param newParentMessenger the new parent messenger contract to be set on L2.\\n     */\\n    function setChildParentMessenger(address newParentMessenger) public onlyOwner {\\n        bytes memory dataSentToChild = abi.encodeWithSignature(\\\"setParentMessenger(address)\\\", newParentMessenger);\\n        _sendMessageToChild(dataSentToChild, childMessenger);\\n    }\\n\\n    /**\\n     * @notice Sends a message to the child messenger via the canonical message bridge.\\n     * @dev The caller must be the either the OracleHub or the GovernorHub. This is to send either a\\n     * price or initiate a governance action to the OracleSpoke or GovernorSpoke on the child network.\\n     * @dev The recipient of this message is the child messenger. The messenger must implement processMessageFromParent\\n     * which then forwards the data to the target either the OracleSpoke or the governorSpoke depending on the caller.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param data data message sent to the child messenger. Should be an encoded function call or packed data.\\n     */\\n    function sendMessageToChild(bytes memory data) external override onlyHubContract() nonReentrant() {\\n        address target = msg.sender == oracleHub ? oracleSpoke : governorSpoke;\\n        bytes memory dataSentToChild =\\n            abi.encodeWithSignature(\\\"processMessageFromCrossChainParent(bytes,address)\\\", data, target);\\n        _sendMessageToChild(dataSentToChild, target);\\n    }\\n\\n    /**\\n     * @notice Process a received message from the child messenger via the canonical message bridge.\\n     * @dev The caller must be the the child messenger, sent over the canonical message bridge.\\n     * @dev Note that only the OracleHub can receive messages from the child messenger. Therefore we can always forward\\n     * these messages to this contract. The OracleHub must implement processMessageFromChild to handle this message.\\n     * @param data data message sent from the child messenger. Should be an encoded function call or packed data.\\n     */\\n    function processMessageFromCrossChainChild(bytes memory data)\\n        public\\n        onlyFromCrossDomainAccount(childMessenger)\\n        nonReentrant()\\n    {\\n        ParentMessengerConsumerInterface(oracleHub).processMessageFromChild(childChainId, data);\\n        emit MessageReceivedFromChild(data, childMessenger, oracleHub);\\n    }\\n\\n    /**\\n     * @notice This function is expected to be queried by Hub contracts that need to determine how much ETH\\n     * to include in msg.value when calling `sendMessageToChild`.\\n     * @return Amount of msg.value to include to send cross-chain message.\\n     */\\n    function getL1CallValue()\\n        public\\n        view\\n        override(ParentMessengerBase, ParentMessengerInterface)\\n        nonReentrantView()\\n        returns (uint256)\\n    {\\n        return _getL1CallValue();\\n    }\\n\\n    // We need to allow this contract to receive ETH, so that it can include some msg.value amount on external calls\\n    // to the `sendMessageToChild` function. We shouldn't expect the owner of this contract to send\\n    // ETH because the owner is intended to be a contract (e.g. the Governor) and we don't want to change the\\n    // Governor interface.\\n    fallback() external payable {}\\n\\n    // Used to determine how much ETH to include in msg.value when calling admin functions like\\n    // `setChildParentMessenger` and sending messages across the bridge.\\n    function _getL1CallValue() internal view returns (uint256) {\\n        // This could overflow if these values are set too high, but since they are configurable by trusted owner\\n        // we won't catch this case.\\n        return defaultMaxSubmissionCost + defaultGasPrice * defaultGasLimit;\\n    }\\n\\n    // This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n    function _sendMessageToChild(bytes memory data, address target) internal {\\n        uint256 requiredL1CallValue = _getL1CallValue();\\n        require(address(this).balance >= requiredL1CallValue, \\\"Insufficient ETH balance\\\");\\n\\n        uint256 seqNumber =\\n            sendTxToL2NoAliassing(\\n                childMessenger,\\n                refundL2Address,\\n                requiredL1CallValue,\\n                defaultMaxSubmissionCost,\\n                defaultGasLimit,\\n                defaultGasPrice,\\n                data\\n            );\\n        emit MessageSentToChild(\\n            data,\\n            target,\\n            requiredL1CallValue,\\n            defaultGasLimit,\\n            defaultGasPrice,\\n            defaultMaxSubmissionCost,\\n            refundL2Address,\\n            childMessenger,\\n            seqNumber\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x944c1d9fca50e1a41ea645b1b481a57a01d8dad3befb157d861e8364c2b4d844\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../interfaces/ParentMessengerInterface.sol\\\";\\n\\nabstract contract ParentMessengerBase is Ownable, ParentMessengerInterface {\\n    uint256 public childChainId;\\n\\n    address public childMessenger;\\n\\n    address public oracleHub;\\n    address public governorHub;\\n\\n    address public oracleSpoke;\\n    address public governorSpoke;\\n\\n    event SetChildMessenger(address indexed childMessenger);\\n    event SetOracleHub(address indexed oracleHub);\\n    event SetGovernorHub(address indexed governorHub);\\n    event SetOracleSpoke(address indexed oracleSpoke);\\n    event SetGovernorSpoke(address indexed governorSpoke);\\n\\n    modifier onlyHubContract() {\\n        require(msg.sender == oracleHub || msg.sender == governorHub, \\\"Only privileged caller\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the ParentMessengerBase contract.\\n     * @param _childChainId The chain id of the L2 network this messenger should connect to.\\n     **/\\n    constructor(uint256 _childChainId) {\\n        childChainId = _childChainId;\\n    }\\n\\n    /*******************\\n     *  OWNER METHODS  *\\n     *******************/\\n\\n    /**\\n     * @notice Changes the stored address of the child messenger, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newChildMessenger address of the new child messenger, deployed on L2.\\n     */\\n    function setChildMessenger(address newChildMessenger) public onlyOwner {\\n        childMessenger = newChildMessenger;\\n        emit SetChildMessenger(childMessenger);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Oracle hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleHub address of the new oracle hub, deployed on L1 Ethereum.\\n     */\\n    function setOracleHub(address newOracleHub) public onlyOwner {\\n        oracleHub = newOracleHub;\\n        emit SetOracleHub(oracleHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Governor hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorHub address of the new governor hub, deployed on L1 Ethereum.\\n     */\\n    function setGovernorHub(address newGovernorHub) public onlyOwner {\\n        governorHub = newGovernorHub;\\n        emit SetGovernorHub(governorHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the oracle spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleSpoke address of the new oracle spoke, deployed on L2.\\n     */\\n    function setOracleSpoke(address newOracleSpoke) public onlyOwner {\\n        oracleSpoke = newOracleSpoke;\\n        emit SetOracleSpoke(oracleSpoke);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the governor spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorSpoke address of the new governor spoke, deployed on L2.\\n     */\\n    function setGovernorSpoke(address newGovernorSpoke) public onlyOwner {\\n        governorSpoke = newGovernorSpoke;\\n        emit SetGovernorSpoke(governorSpoke);\\n    }\\n\\n    /**\\n     * @notice Returns the amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     * @return The amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     */\\n    function getL1CallValue() external view virtual override returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x6d23fec9f17279108b1e51871f4c751e3fb25923d2099053281ac249897ea81b\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerConsumerInterface {\\n    // Function called on Oracle hub to pass in data send from L2, with chain ID.\\n    function processMessageFromChild(uint256 chainId, bytes memory data) external;\\n}\\n\",\"keccak256\":\"0xcb13640f61cb5f5c880f23ca1c82514e46943c94837582bc699c69665fbc5cbb\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerInterface {\\n    // Should send cross-chain message to Child messenger contract or revert.\\n    function sendMessageToChild(bytes memory data) external;\\n\\n    // Informs Hub how much msg.value they need to include to call `sendMessageToChild`.\\n    function getL1CallValue() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x404de68facc63619239a94f5ff8457f47f0c4d098d36b320ef6a0dbf1d6ba568\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":{\"content\":\"// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\\n// with changes only to the solidity version.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n\\n/*\\n * Copyright 2021, Offchain Labs, Inc.\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *    http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\npragma solidity ^0.8.0;\\n\\ninterface iArbitrum_Outbox {\\n    function l2ToL1Sender() external view returns (address);\\n}\\n\",\"keccak256\":\"0x346d5d3a1bcdb29ef40bebbf0ca78fe3063e14176c20c96ea7854cbb4762cbd8\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol\\n// with a change to the solidity version.\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"../../external/avm/interfaces/iArbitrum_Outbox.sol\\\";\\n\\nabstract contract Arbitrum_CrossDomainEnabled {\\n    iArbitrum_Inbox public immutable inbox;\\n\\n    /**\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     */\\n    constructor(address _inbox) {\\n        inbox = iArbitrum_Inbox(_inbox);\\n    }\\n\\n    // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\\n    // This function will not apply aliassing to the `user` address on L2.\\n    // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the\\n    // inbox.\\n    function sendTxToL2NoAliassing(\\n        address target, // Address where transaction will initiate on L2.\\n        address user, // Address where excess gas is credited on L2.\\n        uint256 l1CallValue, // msg.value deposited to `user` on L2.\\n        uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this\\n        // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should\\n        // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`.\\n        uint256 maxGas, // Gas limit for immediate L2 execution attempt.\\n        uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt.\\n        bytes memory data // ABI encoded data to send to target.\\n    ) internal returns (uint256) {\\n        // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external\\n        // - address destAddr: destination L2 contract address\\n        // - uint256 l2CallValue: call value for retryable L2 message\\n        // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee\\n        // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2\\n        // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled\\n        // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution\\n        // - uint256 gasPriceBid: price bid for L2 execution\\n        // - bytes data: ABI encoded data of L2 message\\n        uint256 seqNum =\\n            inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }(\\n                target,\\n                0, // we always assume that l2CallValue = 0\\n                maxSubmissionCost,\\n                user,\\n                user,\\n                maxGas,\\n                gasPriceBid,\\n                data\\n            );\\n        return seqNum;\\n    }\\n\\n    // Copied mostly from: https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol#L31\\n    modifier onlyFromCrossDomainAccount(address l2Counterpart) {\\n        // a message coming from the counterpart gateway was executed by the bridge\\n        IBridge bridge = IBridge(inbox.bridge());\\n        require(msg.sender == address(bridge), \\\"NOT_FROM_BRIDGE\\\");\\n\\n        // and the outbox reports that the L2 address of the sender is the counterpart gateway\\n        address l2ToL1Sender = iArbitrum_Outbox(bridge.activeOutbox()).l2ToL1Sender();\\n        require(l2ToL1Sender == l2Counterpart, \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x8bfa42e9d6c7a927da893c0968213e2263c958414e727562b7e3a02397a962ce\"},\"contracts/insured-bridge/test/Arbitrum_InboxMock.sol\":{\"content\":\"pragma solidity ^0.8.0;\\nimport \\\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol\\\";\\n\\ncontract Arbitrum_OutboxMock {\\n    function l2ToL1Sender() external view returns (address) {\\n        // Function not called in tests, only smocked.\\n        return address(this);\\n    }\\n}\\n\\ncontract Arbitrum_BridgeMock {\\n    address public outbox;\\n\\n    function setOutbox(address _outbox) external {\\n        outbox = _outbox;\\n    }\\n\\n    function activeOutbox() external view returns (address) {\\n        return outbox;\\n    }\\n\\n    // This function can be called by an EOA to send a call to the parent messenger, which is important in tests\\n    // because `processMessageFromCrossChainChild` can only be called by the Bridge contract.\\n    function processMessageFromCrossChainChild(address payable messengerToCall, bytes memory data) external {\\n        Arbitrum_ParentMessenger(messengerToCall).processMessageFromCrossChainChild(data);\\n    }\\n}\\n\\ncontract Arbitrum_InboxMock is iArbitrum_Inbox {\\n    // We leave these unused function parameters named because this contract is used with smockit and makes testing\\n    // this function's call inputs easier.\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable override returns (uint256) {\\n        return 0;\\n    }\\n\\n    function bridge() external view returns (address) {\\n        // Function not called in tests, only smocked.\\n        return address(this);\\n    }\\n}\\n\",\"keccak256\":\"0xd6bd7caf7e322efb803494569b48d24b8e8540879e7edd5522bb88ea5053853d\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                },
                "Arbitrum_OutboxMock": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "l2ToL1Sender",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "6080604052348015600f57600080fd5b50607680601d6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806380648b0214602d575b600080fd5b6040805130815290519081900360200190f3fea264697066735822122013d23211607b81363da8775e99ad05166a1281d5e461628e62fc9cc04fb3bc0664736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x76 DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80648B02 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xD2 ORIGIN GT PUSH1 0x7B DUP2 CALLDATASIZE RETURNDATASIZE 0xA8 PUSH24 0x5E99AD05166A1281D5E461628E62FC9CC04FB3BC0664736F PUSH13 0x63430008090033000000000000 ",
                            "sourceMap": "192:185:56:-:0;;;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@l2ToL1Sender_9793": {
                                    "entryPoint": null,
                                    "id": 9793,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:242:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "182:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "190:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "178:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:226:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c806380648b0214602d575b600080fd5b6040805130815290519081900360200190f3fea264697066735822122013d23211607b81363da8775e99ad05166a1281d5e461628e62fc9cc04fb3bc0664736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80648B02 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xD2 ORIGIN GT PUSH1 0x7B DUP2 CALLDATASIZE RETURNDATASIZE 0xA8 PUSH24 0x5E99AD05166A1281D5E461628E62FC9CC04FB3BC0664736F PUSH13 0x63430008090033000000000000 ",
                            "sourceMap": "192:185:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;227:148;;;;363:4;160:74:66;;227:148:56;;;;;;148:2:66;227:148:56;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "23600",
                                "executionCost": "75",
                                "totalCost": "23675"
                            },
                            "external": {
                                "l2ToL1Sender()": "148"
                            }
                        },
                        "methodIdentifiers": {
                            "l2ToL1Sender()": "80648b02"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"l2ToL1Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/test/Arbitrum_InboxMock.sol\":\"Arbitrum_OutboxMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n    address private _owner;\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    /**\\n     * @dev Initializes the contract setting the deployer as the initial owner.\\n     */\\n    constructor () {\\n        address msgSender = _msgSender();\\n        _owner = msgSender;\\n        emit OwnershipTransferred(address(0), msgSender);\\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 called by any account other than the owner.\\n     */\\n    modifier onlyOwner() {\\n        require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @dev Leaves the contract without owner. It will not be possible to call\\n     * `onlyOwner` functions anymore. Can only be called by the current owner.\\n     *\\n     * NOTE: Renouncing ownership will leave the contract without an owner,\\n     * thereby removing any functionality that is only available to the owner.\\n     */\\n    function renounceOwnership() public virtual onlyOwner {\\n        emit OwnershipTransferred(_owner, address(0));\\n        _owner = address(0);\\n    }\\n\\n    /**\\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n     * Can only be called by the current owner.\\n     */\\n    function transferOwnership(address newOwner) public virtual onlyOwner {\\n        require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n        emit OwnershipTransferred(_owner, newOwner);\\n        _owner = newOwner;\\n    }\\n}\\n\",\"keccak256\":\"0x1cae4f85f114ff17b90414f5da67365b1d00337abb5bce9bf944eb78a2c0673c\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/*\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\"},\"@uma/core/contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\\\";\\nimport \\\"../interfaces/ParentMessengerInterface.sol\\\";\\nimport \\\"../interfaces/ParentMessengerConsumerInterface.sol\\\";\\nimport \\\"./ParentMessengerBase.sol\\\";\\nimport \\\"../../common/implementation/Lockable.sol\\\";\\n\\n/**\\n * @notice Sends cross chain messages from Ethereum L1 to Arbitrum L2 network.\\n * @dev This contract is ownable and should be owned by the DVM governor.\\n */\\ncontract Arbitrum_ParentMessenger is\\n    Arbitrum_CrossDomainEnabled,\\n    ParentMessengerInterface,\\n    ParentMessengerBase,\\n    Lockable\\n{\\n    event SetDefaultGasLimit(uint32 newDefaultGasLimit);\\n    event SetDefaultMaxSubmissionCost(uint256 newMaxSubmissionCost);\\n    event SetDefaultGasPrice(uint256 newDefaultGasPrice);\\n    event SetRefundL2Address(address newRefundL2Address);\\n    event MessageSentToChild(\\n        bytes data,\\n        address indexed targetSpoke,\\n        uint256 l1CallValue,\\n        uint32 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        address refundL2Address,\\n        address indexed childMessenger,\\n        uint256 sequenceNumber\\n    );\\n    event MessageReceivedFromChild(bytes data, address indexed childMessenger, address indexed targetHub);\\n\\n    // TODO: Can these default values be determined dynamically via L1 Arbitrum system contracts?\\n\\n    // Gas limit for immediate L2 execution attempt (can be estimated via NodeInterface.estimateRetryableTicket).\\n    // NodeInterface precompile interface exists at L2 address 0x00000000000000000000000000000000000000C8\\n    uint32 public defaultGasLimit = 5_000_000;\\n\\n    // Amount of ETH allocated to pay for the base submission fee. The base submission fee is a parameter unique to\\n    // retryable transactions; the user is charged the base submission fee to cover the storage costs of keeping their\\n    // ticket\\u2019s calldata in the retry buffer. (current base submission fee is queryable via\\n    // ArbRetryableTx.getSubmissionPrice). ArbRetryableTicket precompile interface exists at L2 address\\n    // 0x000000000000000000000000000000000000006E.\\n    uint256 public defaultMaxSubmissionCost = 0.1e18;\\n\\n    // L2 Gas price bid for immediate L2 execution attempt (queryable via standard eth*gasPrice RPC)\\n    uint256 public defaultGasPrice = 10e9; // 10 gWei\\n\\n    // This address on L2 receives extra ETH that is left over after relaying a message via the inbox.\\n    address public refundL2Address;\\n\\n    /**\\n     * @notice Construct the Optimism_ParentMessenger contract.\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     * @param _childChainId The chain id of the Optimism L2 network this messenger should connect to.\\n     **/\\n    constructor(address _inbox, uint256 _childChainId)\\n        Arbitrum_CrossDomainEnabled(_inbox)\\n        ParentMessengerBase(_childChainId)\\n    {\\n        refundL2Address = owner();\\n    }\\n\\n    /**\\n     * @notice Changes the refund address on L2 that receives excess gas or the full msg.value if the retryable\\n     * ticket reverts.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newRefundl2Address the new refund address to set.\\n     */\\n    function setRefundL2Address(address newRefundl2Address) public onlyOwner nonReentrant() {\\n        refundL2Address = newRefundl2Address;\\n        emit SetRefundL2Address(refundL2Address);\\n    }\\n\\n    /**\\n     * @notice Changes the default gas limit that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultGasLimit the new L2 gas limit to be set.\\n     */\\n    function setDefaultGasLimit(uint32 newDefaultGasLimit) public onlyOwner nonReentrant() {\\n        defaultGasLimit = newDefaultGasLimit;\\n        emit SetDefaultGasLimit(newDefaultGasLimit);\\n    }\\n\\n    /**\\n     * @notice Changes the default gas price that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultGasPrice the new L2 gas price to be set.\\n     */\\n    function setDefaultGasPrice(uint256 newDefaultGasPrice) public onlyOwner nonReentrant() {\\n        defaultGasPrice = newDefaultGasPrice;\\n        emit SetDefaultGasPrice(newDefaultGasPrice);\\n    }\\n\\n    /**\\n     * @notice Changes the default max submission cost that is sent along with transactions to Arbitrum.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newDefaultMaxSubmissionCost the new L2 max submission cost to be set.\\n     */\\n    function setDefaultMaxSubmissionCost(uint256 newDefaultMaxSubmissionCost) public onlyOwner nonReentrant() {\\n        defaultMaxSubmissionCost = newDefaultMaxSubmissionCost;\\n        emit SetDefaultMaxSubmissionCost(newDefaultMaxSubmissionCost);\\n    }\\n\\n    /**\\n     * @notice Changes the address of the oracle spoke on L2 via the child messenger.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param newOracleSpoke the new oracle spoke address set on L2.\\n     */\\n    function setChildOracleSpoke(address newOracleSpoke) public onlyOwner {\\n        bytes memory dataSentToChild = abi.encodeWithSignature(\\\"setOracleSpoke(address)\\\", newOracleSpoke);\\n        _sendMessageToChild(dataSentToChild, childMessenger);\\n    }\\n\\n    /**\\n     * @notice Changes the address of the parent messenger on L2 via the child messenger.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param newParentMessenger the new parent messenger contract to be set on L2.\\n     */\\n    function setChildParentMessenger(address newParentMessenger) public onlyOwner {\\n        bytes memory dataSentToChild = abi.encodeWithSignature(\\\"setParentMessenger(address)\\\", newParentMessenger);\\n        _sendMessageToChild(dataSentToChild, childMessenger);\\n    }\\n\\n    /**\\n     * @notice Sends a message to the child messenger via the canonical message bridge.\\n     * @dev The caller must be the either the OracleHub or the GovernorHub. This is to send either a\\n     * price or initiate a governance action to the OracleSpoke or GovernorSpoke on the child network.\\n     * @dev The recipient of this message is the child messenger. The messenger must implement processMessageFromParent\\n     * which then forwards the data to the target either the OracleSpoke or the governorSpoke depending on the caller.\\n     * @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n     * @param data data message sent to the child messenger. Should be an encoded function call or packed data.\\n     */\\n    function sendMessageToChild(bytes memory data) external override onlyHubContract() nonReentrant() {\\n        address target = msg.sender == oracleHub ? oracleSpoke : governorSpoke;\\n        bytes memory dataSentToChild =\\n            abi.encodeWithSignature(\\\"processMessageFromCrossChainParent(bytes,address)\\\", data, target);\\n        _sendMessageToChild(dataSentToChild, target);\\n    }\\n\\n    /**\\n     * @notice Process a received message from the child messenger via the canonical message bridge.\\n     * @dev The caller must be the the child messenger, sent over the canonical message bridge.\\n     * @dev Note that only the OracleHub can receive messages from the child messenger. Therefore we can always forward\\n     * these messages to this contract. The OracleHub must implement processMessageFromChild to handle this message.\\n     * @param data data message sent from the child messenger. Should be an encoded function call or packed data.\\n     */\\n    function processMessageFromCrossChainChild(bytes memory data)\\n        public\\n        onlyFromCrossDomainAccount(childMessenger)\\n        nonReentrant()\\n    {\\n        ParentMessengerConsumerInterface(oracleHub).processMessageFromChild(childChainId, data);\\n        emit MessageReceivedFromChild(data, childMessenger, oracleHub);\\n    }\\n\\n    /**\\n     * @notice This function is expected to be queried by Hub contracts that need to determine how much ETH\\n     * to include in msg.value when calling `sendMessageToChild`.\\n     * @return Amount of msg.value to include to send cross-chain message.\\n     */\\n    function getL1CallValue()\\n        public\\n        view\\n        override(ParentMessengerBase, ParentMessengerInterface)\\n        nonReentrantView()\\n        returns (uint256)\\n    {\\n        return _getL1CallValue();\\n    }\\n\\n    // We need to allow this contract to receive ETH, so that it can include some msg.value amount on external calls\\n    // to the `sendMessageToChild` function. We shouldn't expect the owner of this contract to send\\n    // ETH because the owner is intended to be a contract (e.g. the Governor) and we don't want to change the\\n    // Governor interface.\\n    fallback() external payable {}\\n\\n    // Used to determine how much ETH to include in msg.value when calling admin functions like\\n    // `setChildParentMessenger` and sending messages across the bridge.\\n    function _getL1CallValue() internal view returns (uint256) {\\n        // This could overflow if these values are set too high, but since they are configurable by trusted owner\\n        // we won't catch this case.\\n        return defaultMaxSubmissionCost + defaultGasPrice * defaultGasLimit;\\n    }\\n\\n    // This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\\n    function _sendMessageToChild(bytes memory data, address target) internal {\\n        uint256 requiredL1CallValue = _getL1CallValue();\\n        require(address(this).balance >= requiredL1CallValue, \\\"Insufficient ETH balance\\\");\\n\\n        uint256 seqNumber =\\n            sendTxToL2NoAliassing(\\n                childMessenger,\\n                refundL2Address,\\n                requiredL1CallValue,\\n                defaultMaxSubmissionCost,\\n                defaultGasLimit,\\n                defaultGasPrice,\\n                data\\n            );\\n        emit MessageSentToChild(\\n            data,\\n            target,\\n            requiredL1CallValue,\\n            defaultGasLimit,\\n            defaultGasPrice,\\n            defaultMaxSubmissionCost,\\n            refundL2Address,\\n            childMessenger,\\n            seqNumber\\n        );\\n    }\\n}\\n\",\"keccak256\":\"0x944c1d9fca50e1a41ea645b1b481a57a01d8dad3befb157d861e8364c2b4d844\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/access/Ownable.sol\\\";\\nimport \\\"../interfaces/ParentMessengerInterface.sol\\\";\\n\\nabstract contract ParentMessengerBase is Ownable, ParentMessengerInterface {\\n    uint256 public childChainId;\\n\\n    address public childMessenger;\\n\\n    address public oracleHub;\\n    address public governorHub;\\n\\n    address public oracleSpoke;\\n    address public governorSpoke;\\n\\n    event SetChildMessenger(address indexed childMessenger);\\n    event SetOracleHub(address indexed oracleHub);\\n    event SetGovernorHub(address indexed governorHub);\\n    event SetOracleSpoke(address indexed oracleSpoke);\\n    event SetGovernorSpoke(address indexed governorSpoke);\\n\\n    modifier onlyHubContract() {\\n        require(msg.sender == oracleHub || msg.sender == governorHub, \\\"Only privileged caller\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the ParentMessengerBase contract.\\n     * @param _childChainId The chain id of the L2 network this messenger should connect to.\\n     **/\\n    constructor(uint256 _childChainId) {\\n        childChainId = _childChainId;\\n    }\\n\\n    /*******************\\n     *  OWNER METHODS  *\\n     *******************/\\n\\n    /**\\n     * @notice Changes the stored address of the child messenger, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newChildMessenger address of the new child messenger, deployed on L2.\\n     */\\n    function setChildMessenger(address newChildMessenger) public onlyOwner {\\n        childMessenger = newChildMessenger;\\n        emit SetChildMessenger(childMessenger);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Oracle hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleHub address of the new oracle hub, deployed on L1 Ethereum.\\n     */\\n    function setOracleHub(address newOracleHub) public onlyOwner {\\n        oracleHub = newOracleHub;\\n        emit SetOracleHub(oracleHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the Governor hub, deployed on L1.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorHub address of the new governor hub, deployed on L1 Ethereum.\\n     */\\n    function setGovernorHub(address newGovernorHub) public onlyOwner {\\n        governorHub = newGovernorHub;\\n        emit SetGovernorHub(governorHub);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the oracle spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newOracleSpoke address of the new oracle spoke, deployed on L2.\\n     */\\n    function setOracleSpoke(address newOracleSpoke) public onlyOwner {\\n        oracleSpoke = newOracleSpoke;\\n        emit SetOracleSpoke(oracleSpoke);\\n    }\\n\\n    /**\\n     * @notice Changes the stored address of the governor spoke, deployed on L2.\\n     * @dev The caller of this function must be the owner. This should be set to the DVM governor.\\n     * @param newGovernorSpoke address of the new governor spoke, deployed on L2.\\n     */\\n    function setGovernorSpoke(address newGovernorSpoke) public onlyOwner {\\n        governorSpoke = newGovernorSpoke;\\n        emit SetGovernorSpoke(governorSpoke);\\n    }\\n\\n    /**\\n     * @notice Returns the amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     * @return The amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\\n     */\\n    function getL1CallValue() external view virtual override returns (uint256) {\\n        return 0;\\n    }\\n}\\n\",\"keccak256\":\"0x6d23fec9f17279108b1e51871f4c751e3fb25923d2099053281ac249897ea81b\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerConsumerInterface {\\n    // Function called on Oracle hub to pass in data send from L2, with chain ID.\\n    function processMessageFromChild(uint256 chainId, bytes memory data) external;\\n}\\n\",\"keccak256\":\"0xcb13640f61cb5f5c880f23ca1c82514e46943c94837582bc699c69665fbc5cbb\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\ninterface ParentMessengerInterface {\\n    // Should send cross-chain message to Child messenger contract or revert.\\n    function sendMessageToChild(bytes memory data) external;\\n\\n    // Informs Hub how much msg.value they need to include to call `sendMessageToChild`.\\n    function getL1CallValue() external view returns (uint256);\\n}\\n\",\"keccak256\":\"0x404de68facc63619239a94f5ff8457f47f0c4d098d36b320ef6a0dbf1d6ba568\",\"license\":\"AGPL-3.0-only\"},\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\":{\"content\":\"// SPDX-License-Identifier: Apache-2.0\\n\\npragma solidity ^0.8.0;\\n\\ninterface IBridge {\\n    function activeOutbox() external view returns (address);\\n}\\n\\ninterface iArbitrum_Inbox {\\n    // Retryable tickets are the Arbitrum protocol\\u2019s canonical method for passing generalized messages from Ethereum to\\n    // Arbitrum. A retryable ticket is an L2 message encoded and delivered by L1; if gas is provided, it will be executed\\n    // immediately. If no gas is provided or the execution reverts, it will be placed in the L2 retry buffer,\\n    // where any user can re-execute for some fixed period (roughly one week).\\n    // Retryable tickets are created by calling Inbox.createRetryableTicket.\\n    // More details here: https://developer.offchainlabs.com/docs/l1_l2_messages#ethereum-to-arbitrum-retryable-tickets\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable returns (uint256);\\n\\n    function bridge() external view returns (address);\\n}\\n\",\"keccak256\":\"0x45a76953120232b62f0fe304c880616d9efbe753687ca71876117a51db84961c\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol\":{\"content\":\"// Copied logic from https://github.com/OffchainLabs/arbitrum-tutorials/blob/4761fa1ba1f1eca95e8c03f24f1442ed5aecd8bd/packages/arb-shared-dependencies/contracts/Outbox.sol\\n// with changes only to the solidity version.\\n\\n// SPDX-License-Identifier: Apache-2.0\\n\\n/*\\n * Copyright 2021, Offchain Labs, Inc.\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *    http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\npragma solidity ^0.8.0;\\n\\ninterface iArbitrum_Outbox {\\n    function l2ToL1Sender() external view returns (address);\\n}\\n\",\"keccak256\":\"0x346d5d3a1bcdb29ef40bebbf0ca78fe3063e14176c20c96ea7854cbb4762cbd8\",\"license\":\"Apache-2.0\"},\"@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\":{\"content\":\"// Copied logic from https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol\\n// with a change to the solidity version.\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"../../external/avm/interfaces/iArbitrum_Outbox.sol\\\";\\n\\nabstract contract Arbitrum_CrossDomainEnabled {\\n    iArbitrum_Inbox public immutable inbox;\\n\\n    /**\\n     * @param _inbox Contract that sends generalized messages to the Arbitrum chain.\\n     */\\n    constructor(address _inbox) {\\n        inbox = iArbitrum_Inbox(_inbox);\\n    }\\n\\n    // More details about retryable ticket parameters here: https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\\n    // This function will not apply aliassing to the `user` address on L2.\\n    // Note: If `l1CallValue > 0`, then this contract must contain at least that much ETH to send as msg.value to the\\n    // inbox.\\n    function sendTxToL2NoAliassing(\\n        address target, // Address where transaction will initiate on L2.\\n        address user, // Address where excess gas is credited on L2.\\n        uint256 l1CallValue, // msg.value deposited to `user` on L2.\\n        uint256 maxSubmissionCost, // Amount of ETH allocated to pay for base submission fee. The user is charged this\\n        // fee to cover the storage costs of keeping their retryable ticket's calldata in the retry buffer. This should\\n        // also cover the `l2CallValue`, but we set that to 0. This amount is proportional to the size of `data`.\\n        uint256 maxGas, // Gas limit for immediate L2 execution attempt.\\n        uint256 gasPriceBid, // L2 gas price bid for immediate L2 execution attempt.\\n        bytes memory data // ABI encoded data to send to target.\\n    ) internal returns (uint256) {\\n        // createRetryableTicket API: https://developer.offchainlabs.com/docs/sol_contract_docs/md_docs/arb-bridge-eth/bridge/inbox#createretryableticketaddress-destaddr-uint256-l2callvalue-uint256-maxsubmissioncost-address-excessfeerefundaddress-address-callvaluerefundaddress-uint256-maxgas-uint256-gaspricebid-bytes-data-%E2%86%92-uint256-external\\n        // - address destAddr: destination L2 contract address\\n        // - uint256 l2CallValue: call value for retryable L2 message\\n        // - uint256 maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee\\n        // - address excessFeeRefundAddress: maxgas x gasprice - execution cost gets credited here on L2\\n        // - address callValueRefundAddress: l2CallValue gets credited here on L2 if retryable txn times out or gets cancelled\\n        // - uint256 maxGas: Max gas deducted from user's L2 balance to cover L2 execution\\n        // - uint256 gasPriceBid: price bid for L2 execution\\n        // - bytes data: ABI encoded data of L2 message\\n        uint256 seqNum =\\n            inbox.createRetryableTicketNoRefundAliasRewrite{ value: l1CallValue }(\\n                target,\\n                0, // we always assume that l2CallValue = 0\\n                maxSubmissionCost,\\n                user,\\n                user,\\n                maxGas,\\n                gasPriceBid,\\n                data\\n            );\\n        return seqNum;\\n    }\\n\\n    // Copied mostly from: https://github.com/makerdao/arbitrum-dai-bridge/blob/34acc39bc6f3a2da0a837ea3c5dbc634ec61c7de/contracts/l1/L1CrossDomainEnabled.sol#L31\\n    modifier onlyFromCrossDomainAccount(address l2Counterpart) {\\n        // a message coming from the counterpart gateway was executed by the bridge\\n        IBridge bridge = IBridge(inbox.bridge());\\n        require(msg.sender == address(bridge), \\\"NOT_FROM_BRIDGE\\\");\\n\\n        // and the outbox reports that the L2 address of the sender is the counterpart gateway\\n        address l2ToL1Sender = iArbitrum_Outbox(bridge.activeOutbox()).l2ToL1Sender();\\n        require(l2ToL1Sender == l2Counterpart, \\\"ONLY_COUNTERPART_GATEWAY\\\");\\n        _;\\n    }\\n}\\n\",\"keccak256\":\"0x8bfa42e9d6c7a927da893c0968213e2263c958414e727562b7e3a02397a962ce\"},\"contracts/insured-bridge/test/Arbitrum_InboxMock.sol\":{\"content\":\"pragma solidity ^0.8.0;\\nimport \\\"@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol\\\";\\nimport \\\"@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol\\\";\\n\\ncontract Arbitrum_OutboxMock {\\n    function l2ToL1Sender() external view returns (address) {\\n        // Function not called in tests, only smocked.\\n        return address(this);\\n    }\\n}\\n\\ncontract Arbitrum_BridgeMock {\\n    address public outbox;\\n\\n    function setOutbox(address _outbox) external {\\n        outbox = _outbox;\\n    }\\n\\n    function activeOutbox() external view returns (address) {\\n        return outbox;\\n    }\\n\\n    // This function can be called by an EOA to send a call to the parent messenger, which is important in tests\\n    // because `processMessageFromCrossChainChild` can only be called by the Bridge contract.\\n    function processMessageFromCrossChainChild(address payable messengerToCall, bytes memory data) external {\\n        Arbitrum_ParentMessenger(messengerToCall).processMessageFromCrossChainChild(data);\\n    }\\n}\\n\\ncontract Arbitrum_InboxMock is iArbitrum_Inbox {\\n    // We leave these unused function parameters named because this contract is used with smockit and makes testing\\n    // this function's call inputs easier.\\n    function createRetryableTicketNoRefundAliasRewrite(\\n        address destAddr,\\n        uint256 l2CallValue,\\n        uint256 maxSubmissionCost,\\n        address excessFeeRefundAddress,\\n        address callValueRefundAddress,\\n        uint256 maxGas,\\n        uint256 gasPriceBid,\\n        bytes calldata data\\n    ) external payable override returns (uint256) {\\n        return 0;\\n    }\\n\\n    function bridge() external view returns (address) {\\n        // Function not called in tests, only smocked.\\n        return address(this);\\n    }\\n}\\n\",\"keccak256\":\"0xd6bd7caf7e322efb803494569b48d24b8e8540879e7edd5522bb88ea5053853d\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/test/BridgeDepositBoxMock.sol": {
                "BridgeDepositBoxMock": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_bridgeAdmin",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "_minimumBridgingDelay",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_l1Weth",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "timerAddress",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "DepositsEnabled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "depositId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Sender",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "FundsDeposited",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "newBridgeAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "SetBridgeAdmin",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetMinimumBridgingDelay",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "numberOfTokensBridged",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "l1Gas",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "caller",
                                    "type": "address"
                                }
                            ],
                            "name": "TokensBridged",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "WhitelistToken",
                            "type": "event"
                        },
                        {
                            "inputs": [],
                            "name": "bridgeAdmin",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "l1Gas",
                                    "type": "uint32"
                                }
                            ],
                            "name": "bridgeTokens",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "canBridge",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "chainId",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Recipient",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "slowRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "instantRelayFeePct",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "quoteTimestamp",
                                    "type": "uint64"
                                }
                            ],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                }
                            ],
                            "name": "isWhitelistToken",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1Weth",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "minimumBridgingDelay",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "numberOfDeposits",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_bridgeAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "setCrossDomainAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "_depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "setEnableDeposits",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "_minimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setMinimumBridgingDelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "timerAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1BridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "whitelistToken",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "name": "whitelistedTokens",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "l1BridgePool",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "lastBridgeTime",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "bridgeTokens(address,uint32)": {
                                "details": "The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam      on L1 as the finalization of a L2->L1 tx is quite expensive.",
                                "params": {
                                    "l1Gas": "Unused by optimism, but included for potential forward compatibility considerations.",
                                    "l2Token": "L2 token to relay over the canonical bridge."
                                }
                            },
                            "canBridge(address)": {
                                "details": "This function is also public for caller convenience.",
                                "params": {
                                    "l2Token": "L2 token to check bridging status."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised and enough time has elapsed since the previous bridge."
                                }
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "details": "Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.",
                                "params": {
                                    "amount": "How many L2 tokens should be deposited.",
                                    "instantRelayFeePct": "Fraction of `amount` that the depositor is willing to pay as an instant relay fee.",
                                    "l1Recipient": "L1 address that should receive the tokens.",
                                    "l2Token": "L2 token to deposit.",
                                    "quoteTimestamp": "Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.",
                                    "slowRelayFeePct": "Max fraction of `amount` that the depositor is willing to pay as a slow relay fee."
                                }
                            },
                            "getCurrentTime()": {
                                "returns": {
                                    "_0": "uint for the current Testable timestamp."
                                }
                            },
                            "isWhitelistToken(address)": {
                                "details": "Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.",
                                "params": {
                                    "l2Token": "L2 token to check against the whitelist."
                                },
                                "returns": {
                                    "_0": "true if token is whitelised."
                                }
                            },
                            "setCrossDomainAdmin(address)": {
                                "details": "Only callable by the existing bridgeAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "_bridgeAdmin": "address of the new L1 admin contract."
                                }
                            },
                            "setCurrentTime(uint256)": {
                                "details": "Will revert if not running in test mode.",
                                "params": {
                                    "time": "timestamp to set current Testable time to."
                                }
                            },
                            "setEnableDeposits(address,bool)": {
                                "details": "Only callable by the existing bridgeAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "_depositsEnabled": "bool to set if the deposit box should accept/reject deposits.",
                                    "_l2Token": "address of L2 token to enable/disable deposits for."
                                }
                            },
                            "setMinimumBridgingDelay(uint64)": {
                                "details": "Only callable by the existing bridgeAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "_minimumBridgingDelay": "the new minimum delay."
                                }
                            },
                            "whitelistToken(address,address,address)": {
                                "details": "Only callable by the existing bridgeAdmin via the optimism cross domain messenger.",
                                "params": {
                                    "l1BridgePool": "Address of the L1 withdrawal pool linked to this L2+L1 token.",
                                    "l1Token": "Address of the canonical L1 token. This is the token users will receive on Ethereum.",
                                    "l2Token": "Address of the L2 token representation. This is the token users would deposit on optimism."
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_5389": {
                                    "entryPoint": null,
                                    "id": 5389,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_5541": {
                                    "entryPoint": null,
                                    "id": 5541,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_8374": {
                                    "entryPoint": null,
                                    "id": 8374,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@_9919": {
                                    "entryPoint": null,
                                    "id": 9919,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@_setBridgeAdmin_10072": {
                                    "entryPoint": 246,
                                    "id": 10072,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setMinimumBridgingDelay_8389": {
                                    "entryPoint": 161,
                                    "id": 8389,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_address_fromMemory": {
                                    "entryPoint": 436,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_uint64t_addresst_address_fromMemory": {
                                    "entryPoint": 465,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 4
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:1509:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "74:117:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "84:22:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "99:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "93:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "93:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "84:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "169:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "178:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "181:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "171:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "171:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "171:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "128:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "139:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "154:3:66",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "159:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "150:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "150:11:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "163:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "146:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "146:19:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "135:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "135:31:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "125:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "125:42:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "118:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "118:50:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "115:70:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "53:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "64:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "327:413:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "374:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "383:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "386:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "376:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "376:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "376:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "348:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "357:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "344:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "344:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "369:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "340:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "340:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "337:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "399:50:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "439:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "409:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "409:40:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "399:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "458:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "481:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "492:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "477:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "477:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "471:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "471:25:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "462:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "558:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "567:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "570:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "560:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "560:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "560:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "518:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "529:5:66"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "544:2:66",
                                                                                                        "type": "",
                                                                                                        "value": "64"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "548:1:66",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "540:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "540:10:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "552:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "536:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "536:18:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "525:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "525:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "515:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "515:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "508:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "508:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "505:69:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "583:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "593:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "583:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "607:59:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "651:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "662:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "647:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "647:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "617:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "617:49:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "607:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "675:59:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "719:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "730:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "715:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "715:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "685:29:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "685:49:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "675:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint64t_addresst_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "269:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "280:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "292:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "300:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "308:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "316:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "196:544:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "844:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "854:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "866:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "877:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "862:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "862:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "854:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "896:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "911:6:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "927:2:66",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "931:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "923:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "923:10:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "935:1:66",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "919:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "919:18:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "907:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "907:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "889:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "889:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "889:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "813:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "824:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "835:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "745:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1124:175:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1141:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1152:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1134:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1134:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1134:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1175:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1186:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1171:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1171:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1191:2:66",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1164:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1164:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1164:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1214:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1225:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1210:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1210:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4261642062726964676520726f757465722061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1230:27:66",
                                                                        "type": "",
                                                                        "value": "Bad bridge router address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1203:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1203:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1203:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1267:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1279:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1290:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1275:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1275:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1267:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1101:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1115:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "950:349:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1405:102:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1415:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1427:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1438:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1423:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1423:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1415:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1457:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1472:6:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1488:3:66",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1493:1:66",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1484:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1484:11:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1497:1:66",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1480:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1480:19:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1468:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1468:32:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1450:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1450:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1450:51:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1374:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1385:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1396:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1304:203:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint64t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        let value := mload(add(headStart, 32))\n        if iszero(eq(value, and(value, sub(shl(64, 1), 1)))) { revert(0, 0) }\n        value1 := value\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        value3 := abi_decode_address_fromMemory(add(headStart, 96))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Bad bridge router address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60806040523480156200001157600080fd5b5060405162002064380380620020648339810160408190526200003491620001d1565b600080546001600160a81b0319166001600160a01b03831617600160a01b17905582600a83836200006584620000a1565b50600191909155600280546001600160a01b0319166001600160a01b03909216919091179055506200009784620000f6565b505050506200023c565b600580546001600160401b0319166001600160401b0383169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f906020015b60405180910390a150565b6001600160a01b038116620001515760405162461bcd60e51b815260206004820152601960248201527f4261642062726964676520726f75746572206164647265737300000000000000604482015260640160405180910390fd5b60058054600160401b600160e01b031916680100000000000000006001600160a01b038481168202929092179283905560405192041681527f6d4b0c6c569e24db2326e7ec7e28a339d0e602b357a2930369b180065474c86190602001620000eb565b80516001600160a01b0381168114620001cc57600080fd5b919050565b60008060008060808587031215620001e857600080fd5b620001f385620001b4565b60208601519094506001600160401b03811681146200021157600080fd5b92506200022160408601620001b4565b91506200023160608601620001b4565b905092959194509250565b611e18806200024c6000396000f3fe60806040526004361061010e5760003560e01c80639a8a0592116100a5578063b2d6f4d411610074578063daf9c21011610059578063daf9c2101461033e578063de7eba781461041d578063fbb9fcf71461043d57600080fd5b8063b2d6f4d4146102f1578063c2d9dca91461032b57600080fd5b80639a8a05921461026c5780639bfd2cdc14610282578063a1244c67146102a2578063a6af2dfe146102b857600080fd5b80632ec35b31116100e15780632ec35b31146101dc5780634dedca28146101fc578063563c7f601461021c57806363635fd91461023c57600080fd5b8063146bf4b1146101135780631c39c38d1461016a57806322f8e5661461019757806329cb924d146101b9575b600080fd5b34801561011f57600080fd5b506002546101409073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561017657600080fd5b506000546101409073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a357600080fd5b506101b76101b2366004611abd565b6104a7565b005b3480156101c557600080fd5b506101ce610550565b604051908152602001610161565b3480156101e857600080fd5b506101b76101f7366004611af3565b610617565b34801561020857600080fd5b506101b7610217366004611b32565b6106b5565b34801561022857600080fd5b506101b7610237366004611b83565b610752565b34801561024857600080fd5b5061025c610257366004611bba565b6107ed565b6040519015158152602001610161565b34801561027857600080fd5b506101ce60015481565b34801561028e57600080fd5b506101b761029d366004611bd5565b610850565b3480156102ae57600080fd5b506101ce60035481565b3480156102c457600080fd5b506005546101409068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102fd57600080fd5b506005546103129067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610161565b6101b7610339366004611c0a565b610b56565b34801561034a57600080fd5b506103d4610359366004611bba565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff9091169183019190915215156060820152608001610161565b34801561042957600080fd5b506101b7610438366004611bba565b611100565b34801561044957600080fd5b5061025c610458366004611bba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff166104c957600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b15801561053557600080fd5b505af1158015610549573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16156106125760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105d557600080fd5b505afa1580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d9190611c77565b905090565b504290565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146106a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f74206272696467652061646d696e0000000000000000000000000000000060448201526064015b60405180910390fd5b6106b281611196565b50565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f74206272696467652061646d696e0000000000000000000000000000000060448201526064016106a0565b61074d838383611204565b505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f74206272696467652061646d696e0000000000000000000000000000000060448201526064016106a0565b6107e982826113dc565b5050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff161515801561084a575061084a8261148f565b92915050565b610858611506565b610885600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b1580156108ef57600080fd5b505af1158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190611c77565b905060008111610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e73000000000000000060448201526064016106a0565b61099c836107ed565b610a28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e74000000000000000000000000000000000060648201526084016106a0565b610a30610550565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600460205260409020600101805467ffffffffffffffff9490941674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff85168117909155610ab99391929081169116178361158c565b6040805182815263ffffffff84166020820152339173ffffffffffffffffffffffffffffffffffffffff8616917f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a3506107e9600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff16610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c656400000000000000000000000060448201526064016106a0565b610c12611506565b610c3f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c697374656400000060448201526064016106a0565b6703782dace9d900008467ffffffffffffffff161115610d6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d20323525000060448201526064016106a0565b6703782dace9d900008367ffffffffffffffff161115610e0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f250000000000000000000000000000000000000000000000000000000000000060648201526084016106a0565b610e1a61025883611cbf565b67ffffffffffffffff16610e2c610550565b10158015610e565750610e4182610258611ce8565b67ffffffffffffffff16610e53610550565b11155b610ebc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e650000000060448201526064016106a0565b60025473ffffffffffffffffffffffffffffffffffffffff87811660009081526004602052604090205481169116148015610ef75750600034115b15610fcb57843414610f65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e74000000000060448201526064016106a0565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fad57600080fd5b505af1158015610fc1573d6000803e3d6000fd5b5050505050610fed565b610fed73ffffffffffffffffffffffffffffffffffffffff8716333088611660565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a16001600360008282546110ad9190611d14565b909155506110f79050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f74206272696467652061646d696e0000000000000000000000000000000060448201526064016106a0565b6106b2816116c4565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f906020015b60405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200161124f610550565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd838361138e610550565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081206001015490916114ed9167ffffffffffffffff918216917401000000000000000000000000000000000000000090910416611ce8565b67ffffffffffffffff166114ff610550565b1192915050565b60005474010000000000000000000000000000000000000000900460ff1661158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a0565b565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261074d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526117c5565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526116be9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016115de565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4261642062726964676520726f7574657220616464726573730000000000000060448201526064016106a0565b600580547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8481168202929092179283905560405192041681527f6d4b0c6c569e24db2326e7ec7e28a339d0e602b357a2930369b180065474c861906020016111f9565b6000611827826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118d19092919063ffffffff16565b80519091501561074d57808060200190518101906118459190611d2c565b61074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106a0565b60606118e084846000856118ea565b90505b9392505050565b60608247101561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106a0565b843b6119e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a0565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611a0d9190611d75565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b5091509150611a5f828286611a6a565b979650505050505050565b60608315611a795750816118e3565b825115611a895782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a09190611d91565b600060208284031215611acf57600080fd5b5035919050565b803567ffffffffffffffff81168114611aee57600080fd5b919050565b600060208284031215611b0557600080fd5b6118e382611ad6565b803573ffffffffffffffffffffffffffffffffffffffff81168114611aee57600080fd5b600080600060608486031215611b4757600080fd5b611b5084611b0e565b9250611b5e60208501611b0e565b9150611b6c60408501611b0e565b90509250925092565b80151581146106b257600080fd5b60008060408385031215611b9657600080fd5b611b9f83611b0e565b91506020830135611baf81611b75565b809150509250929050565b600060208284031215611bcc57600080fd5b6118e382611b0e565b60008060408385031215611be857600080fd5b611bf183611b0e565b9150602083013563ffffffff81168114611baf57600080fd5b60008060008060008060c08789031215611c2357600080fd5b611c2c87611b0e565b9550611c3a60208801611b0e565b945060408701359350611c4f60608801611ad6565b9250611c5d60808801611ad6565b9150611c6b60a08801611ad6565b90509295509295509295565b600060208284031215611c8957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff83811690831681811015611ce057611ce0611c90565b039392505050565b600067ffffffffffffffff808316818516808303821115611d0b57611d0b611c90565b01949350505050565b60008219821115611d2757611d27611c90565b500190565b600060208284031215611d3e57600080fd5b81516118e381611b75565b60005b83811015611d64578181015183820152602001611d4c565b838111156116be5750506000910152565b60008251611d87818460208701611d49565b9190910192915050565b6020815260008251806020840152611db0816040850160208701611d49565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220537901ffda0020b56713c34db82e6fda1c6bf59f7e94c51d4abd8448edddab0e64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x2064 CODESIZE SUB DUP1 PUSH3 0x2064 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1D1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE DUP3 PUSH1 0xA DUP4 DUP4 PUSH3 0x65 DUP5 PUSH3 0xA1 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x97 DUP5 PUSH3 0xF6 JUMP JUMPDEST POP POP POP POP PUSH3 0x23C JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x151 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4261642062726964676520726F75746572206164647265737300000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH9 0x10000000000000000 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND DUP2 MSTORE PUSH32 0x6D4B0C6C569E24DB2326E7EC7E28A339D0E602B357A2930369B180065474C861 SWAP1 PUSH1 0x20 ADD PUSH3 0xEB JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1F3 DUP6 PUSH3 0x1B4 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP PUSH3 0x221 PUSH1 0x40 DUP7 ADD PUSH3 0x1B4 JUMP JUMPDEST SWAP2 POP PUSH3 0x231 PUSH1 0x60 DUP7 ADD PUSH3 0x1B4 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x1E18 DUP1 PUSH3 0x24C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9A8A0592 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xB2D6F4D4 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDAF9C210 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDAF9C210 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0xDE7EBA78 EQ PUSH2 0x41D JUMPI DUP1 PUSH4 0xFBB9FCF7 EQ PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB2D6F4D4 EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0xC2D9DCA9 EQ PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x9BFD2CDC EQ PUSH2 0x282 JUMPI DUP1 PUSH4 0xA1244C67 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xA6AF2DFE EQ PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x2EC35B31 EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x4DEDCA28 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x563C7F60 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x63635FD9 EQ PUSH2 0x23C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x146BF4B1 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x140 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x140 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ABD JUMP JUMPDEST PUSH2 0x4A7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CE PUSH2 0x550 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AF3 JUMP JUMPDEST PUSH2 0x617 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B32 JUMP JUMPDEST PUSH2 0x6B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x237 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B83 JUMP JUMPDEST PUSH2 0x752 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25C PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BBA JUMP JUMPDEST PUSH2 0x7ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CE PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x850 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CE PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x140 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x312 SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x161 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C0A JUMP JUMPDEST PUSH2 0xB56 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D4 PUSH2 0x359 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BBA JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 DUP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x438 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BBA JUMP JUMPDEST PUSH2 0x1100 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25C PUSH2 0x458 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BBA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x22F8E56600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x549 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x60D SWAP2 SWAP1 PUSH2 0x1C77 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x6A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206272696467652061646D696E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6B2 DUP2 PUSH2 0x1196 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x742 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206272696467652061646D696E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x74D DUP4 DUP4 DUP4 PUSH2 0x1204 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x7DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206272696467652061646D696E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x7E9 DUP3 DUP3 PUSH2 0x13DC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 ISZERO PUSH2 0x84A JUMPI POP PUSH2 0x84A DUP3 PUSH2 0x148F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x858 PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x885 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x903 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x927 SWAP2 SWAP1 PUSH2 0x1C77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x993 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x63616E277420627269646765207A65726F20746F6B656E730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x99C DUP4 PUSH2 0x7ED JUMP JUMPDEST PUSH2 0xA28 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F6E2D77686974656C697374656420746F6B656E206F72206C617374206272 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964676520746F6F20726563656E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0xA30 PUSH2 0x550 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0xAB9 SWAP4 SWAP2 SWAP3 SWAP1 DUP2 AND SWAP2 AND OR DUP4 PUSH2 0x158C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH32 0x95B5EC953BD38FBAA6F859725352BF73202C155A6809E5622C95CEEF331EAC6C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x7E9 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP6 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742069732064697361626C6564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0xC12 PUSH2 0x1506 JUMP JUMPDEST PUSH2 0xC3F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xCF0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F73697420746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xD6C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6F7752656C6179466565506374206D757374206265203C3D203235250000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xE0E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E7374616E7452656C6179466565506374206D757374206265203C3D203235 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0xE1A PUSH2 0x258 DUP4 PUSH2 0x1CBF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xE2C PUSH2 0x550 JUMP JUMPDEST LT ISZERO DUP1 ISZERO PUSH2 0xE56 JUMPI POP PUSH2 0xE41 DUP3 PUSH2 0x258 PUSH2 0x1CE8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xE53 PUSH2 0x550 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0xEBC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F736974206D696E656420616674657220646561646C696E6500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP2 AND EQ DUP1 ISZERO PUSH2 0xEF7 JUMPI POP PUSH1 0x0 CALLVALUE GT JUMPDEST ISZERO PUSH2 0xFCB JUMPI DUP5 CALLVALUE EQ PUSH2 0xF65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206D757374206D6174636820616D6F756E740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFC1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0xFED JUMP JUMPDEST PUSH2 0xFED PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP9 PUSH2 0x1660 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP7 DUP8 MSTORE SWAP1 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP12 DUP4 AND SWAP1 DUP6 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP1 DUP6 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH32 0xAB77617F2B9BDBB101FC328E585470FB3C845C92B25C4B080CB7B66F7163CF72 SWAP1 PUSH2 0x140 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x10AD SWAP2 SWAP1 PUSH2 0x1D14 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x10F7 SWAP1 POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x118D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206272696467652061646D696E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x6B2 DUP2 PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124F PUSH2 0x550 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP6 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 DUP5 AND OR DUP2 SSTORE SWAP5 DUP7 ADD MLOAD SWAP5 SWAP1 SWAP3 ADD DUP1 SLOAD SWAP3 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP1 SWAP2 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH21 0x10000000000000000000000000000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH32 0x93F23ADD56B90352EA2EF3BC2123262792AF300DC6060C99F6EE06A7026863BD DUP4 DUP4 PUSH2 0x138E PUSH2 0x550 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP7 ISZERO ISZERO SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF84482204FF927822D3068D71E16E14B51CB1B2ADAFA7D6E11EDC1B8DFD8C0DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 PUSH2 0x14ED SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x1CE8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x14FF PUSH2 0x550 JUMP JUMPDEST GT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x158A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x74D SWAP1 DUP5 SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x16BE SWAP1 DUP6 SWAP1 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD PUSH2 0x15DE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1741 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4261642062726964676520726F75746572206164647265737300000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND DUP2 MSTORE PUSH32 0x6D4B0C6C569E24DB2326E7EC7E28A339D0E602B357A2930369B180065474C861 SWAP1 PUSH1 0x20 ADD PUSH2 0x11F9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1827 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18D1 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x74D JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1845 SWAP2 SWAP1 PUSH2 0x1D2C JUMP JUMPDEST PUSH2 0x74D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x18E0 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x18EA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x197C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6A0 JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x19E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1A0D SWAP2 SWAP1 PUSH2 0x1D75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1A4A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1A4F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1A5F DUP3 DUP3 DUP7 PUSH2 0x1A6A JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1A79 JUMPI POP DUP2 PUSH2 0x18E3 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1A89 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6A0 SWAP2 SWAP1 PUSH2 0x1D91 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18E3 DUP3 PUSH2 0x1AD6 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1B47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B50 DUP5 PUSH2 0x1B0E JUMP JUMPDEST SWAP3 POP PUSH2 0x1B5E PUSH1 0x20 DUP6 ADD PUSH2 0x1B0E JUMP JUMPDEST SWAP2 POP PUSH2 0x1B6C PUSH1 0x40 DUP6 ADD PUSH2 0x1B0E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B9F DUP4 PUSH2 0x1B0E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1BAF DUP2 PUSH2 0x1B75 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18E3 DUP3 PUSH2 0x1B0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BF1 DUP4 PUSH2 0x1B0E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1BAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1C23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C2C DUP8 PUSH2 0x1B0E JUMP JUMPDEST SWAP6 POP PUSH2 0x1C3A PUSH1 0x20 DUP9 ADD PUSH2 0x1B0E JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1C4F PUSH1 0x60 DUP9 ADD PUSH2 0x1AD6 JUMP JUMPDEST SWAP3 POP PUSH2 0x1C5D PUSH1 0x80 DUP9 ADD PUSH2 0x1AD6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C6B PUSH1 0xA0 DUP9 ADD PUSH2 0x1AD6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x1CE0 JUMPI PUSH2 0x1CE0 PUSH2 0x1C90 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1D0B JUMPI PUSH2 0x1D0B PUSH2 0x1C90 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1D27 JUMPI PUSH2 0x1D27 PUSH2 0x1C90 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x18E3 DUP2 PUSH2 0x1B75 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D64 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D4C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x16BE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1D87 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1D49 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1DB0 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1D49 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 PUSH26 0x1FFDA0020B56713C34DB82E6FDA1C6BF59F7E94C51D4ABD8448 0xED 0xDD 0xAB 0xE PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "102:4700:57:-:0;;;613:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;728:12:30;:28;;-1:-1:-1;;;;;;874:18:28;-1:-1:-1;;;;;728:28:30;;874:18:28;-1:-1:-1;;;874:18:28;;;771:21:57;794:2;798:7;807:12;3589:47:44::1;771:21:57::0;3589:24:44::1;:47::i;:::-;-1:-1:-1::0;3646:7:44::1;:18:::0;;;;3674:6:::1;:16:::0;;-1:-1:-1;;;;;;3674:16:44::1;-1:-1:-1::0;;;;;3674:16:44;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;831:29:57::1;847:12:::0;831:15:::1;:29::i;:::-;613:254:::0;;;;102:4700;;4015:198:44;4100:20;:46;;-1:-1:-1;;;;;;4100:46:44;-1:-1:-1;;;;;4100:46:44;;;;;;;;4161:45;;889:50:66;;;4161:45:44;;877:2:66;862:18;4161:45:44;;;;;;;;4015:198;:::o;4579:221:57:-;-1:-1:-1;;;;;4655:28:57;;4647:66;;;;-1:-1:-1;;;4647:66:57;;1152:2:66;4647:66:57;;;1134:21:66;1191:2;1171:18;;;1164:30;1230:27;1210:18;;;1203:55;1275:18;;4647:66:57;;;;;;;;4723:11;:28;;-1:-1:-1;;;;;;;;4723:28:57;;-1:-1:-1;;;;;4723:28:57;;;;;;;;;;;;;4766:27;;4781:11;;;1450:51:66;;4766:27:57;;1438:2:66;1423:18;4766:27:57;1304:203:66;14:177;93:13;;-1:-1:-1;;;;;135:31:66;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:544::-;292:6;300;308;316;369:3;357:9;348:7;344:23;340:33;337:53;;;386:1;383;376:12;337:53;409:40;439:9;409:40;:::i;:::-;492:2;477:18;;471:25;399:50;;-1:-1:-1;;;;;;525:30:66;;515:41;;505:69;;570:1;567;560:12;505:69;593:5;-1:-1:-1;617:49:66;662:2;647:18;;617:49;:::i;:::-;607:59;;685:49;730:2;719:9;715:18;685:49;:::i;:::-;675:59;;196:544;;;;;;;:::o;1304:203::-;102:4700:57;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_callOptionalReturn_1654": {
                                    "entryPoint": 6085,
                                    "id": 1654,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_hasEnoughTimeElapsedToBridge_8615": {
                                    "entryPoint": 5263,
                                    "id": 8615,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_postEntranceReset_5436": {
                                    "entryPoint": null,
                                    "id": 5436,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_5420": {
                                    "entryPoint": 5382,
                                    "id": 5420,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_5428": {
                                    "entryPoint": null,
                                    "id": 5428,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_setBridgeAdmin_10072": {
                                    "entryPoint": 5828,
                                    "id": 10072,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_setEnableDeposits_8447": {
                                    "entryPoint": 5084,
                                    "id": 8447,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_setMinimumBridgingDelay_8389": {
                                    "entryPoint": 4502,
                                    "id": 8389,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_verifyCallResult_1950": {
                                    "entryPoint": 6762,
                                    "id": 1950,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@_whitelistToken_8426": {
                                    "entryPoint": 4612,
                                    "id": 8426,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@bridgeAdmin_9880": {
                                    "entryPoint": null,
                                    "id": 9880,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@bridgeTokens_10048": {
                                    "entryPoint": 2128,
                                    "id": 10048,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@canBridge_8632": {
                                    "entryPoint": 2029,
                                    "id": 8632,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@chainId_8260": {
                                    "entryPoint": null,
                                    "id": 8260,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@deposit_8581": {
                                    "entryPoint": 2902,
                                    "id": 8581,
                                    "parameterSlots": 6,
                                    "returnSlots": 0
                                },
                                "@functionCallWithValue_1816": {
                                    "entryPoint": 6378,
                                    "id": 1816,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "@functionCall_1746": {
                                    "entryPoint": 6353,
                                    "id": 1746,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@getCurrentTime_5596": {
                                    "entryPoint": 1360,
                                    "id": 5596,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@isContract_1675": {
                                    "entryPoint": null,
                                    "id": 1675,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@isWhitelistToken_8597": {
                                    "entryPoint": null,
                                    "id": 8597,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@l1Weth_8262": {
                                    "entryPoint": null,
                                    "id": 8262,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@minimumBridgingDelay_8280": {
                                    "entryPoint": null,
                                    "id": 8280,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@numberOfDeposits_8264": {
                                    "entryPoint": null,
                                    "id": 8264,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@safeTransferFrom_1488": {
                                    "entryPoint": 5728,
                                    "id": 1488,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@safeTransfer_1462": {
                                    "entryPoint": 5516,
                                    "id": 1462,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@setCrossDomainAdmin_9932": {
                                    "entryPoint": 4352,
                                    "id": 9932,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setCurrentTime_5571": {
                                    "entryPoint": 1191,
                                    "id": 5571,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setEnableDeposits_9980": {
                                    "entryPoint": 1874,
                                    "id": 9980,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@setMinimumBridgingDelay_9945": {
                                    "entryPoint": 1559,
                                    "id": 9945,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@timerAddress_5530": {
                                    "entryPoint": null,
                                    "id": 5530,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@whitelistToken_9964": {
                                    "entryPoint": 1717,
                                    "id": 9964,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@whitelistedTokens_8278": {
                                    "entryPoint": null,
                                    "id": 8278,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_address": {
                                    "entryPoint": 6926,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 7098,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_addresst_address": {
                                    "entryPoint": 6962,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64": {
                                    "entryPoint": 7178,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 6
                                },
                                "abi_decode_tuple_t_addresst_bool": {
                                    "entryPoint": 7043,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_uint32": {
                                    "entryPoint": 7125,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_bool_fromMemory": {
                                    "entryPoint": 7468,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 6845,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": 7287,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64": {
                                    "entryPoint": 6899,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint64": {
                                    "entryPoint": 6870,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 7541,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 7569,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_82c5f7a57aac208f3a4b4ad4bbe53e5acd7ca3f72815d14132e2ac103f35b32e__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 11,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 7444,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint64": {
                                    "entryPoint": 7400,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_uint64": {
                                    "entryPoint": 7359,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 7497,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 7312,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_bool": {
                                    "entryPoint": 7029,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:14146:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "115:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "125:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "137:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "148:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "133:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "125:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "167:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "182:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "190:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "178:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "160:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "160:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "160:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "84:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "95:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "106:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:226:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "315:110:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "361:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "370:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "373:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "363:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "363:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "363:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "336:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "345:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "332:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "332:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "357:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "328:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "328:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "325:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "386:33:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "409:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "396:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "396:23:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "386:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "281:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "292:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "304:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "245:180:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "531:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "541:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "553:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "564:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "549:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "549:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "541:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "583:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "594:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "576:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "576:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "576:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "500:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "511:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "522:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "430:177:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "660:123:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "670:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "692:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "679:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "679:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "670:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "761:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "770:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "773:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "763:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "763:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "763:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "721:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "732:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "739:18:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "728:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "728:30:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "718:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "718:41:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "711:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "711:49:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "708:69:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "639:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "650:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "612:171:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "857:115:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "903:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "912:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "915:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "905:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "905:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "905:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "878:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "887:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "874:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "874:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "899:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "870:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "870:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "867:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "928:38:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "956:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "938:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "938:28:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "928:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "823:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "834:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "846:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "788:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1026:147:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1036:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1058:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1045:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1045:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1036:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1151:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1160:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1163:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1153:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1153:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1153:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1087:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1098:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1105:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1094:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1094:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1084:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1084:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1077:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1077:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1074:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1005:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1016:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "977:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1282:230:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1328:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1337:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1340:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1330:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1330:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1330:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1303:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1312:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1299:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1299:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1324:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1295:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1295:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1292:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1353:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1382:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1363:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1363:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1353:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1401:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1434:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1445:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1430:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1430:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1411:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1411:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1401:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1458:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1491:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1502:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1487:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1487:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1468:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1468:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1458:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1232:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1243:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1255:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1263:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1271:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1178:334:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1559:76:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1613:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1622:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1625:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1615:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1615:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1615:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1582:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1603:5:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1596:6:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1596:13:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1589:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1589:21:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1579:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1579:32:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1572:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1572:40:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1569:60:66"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1548:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1517:118:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1724:231:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1770:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1779:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1782:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1772:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1772:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1772:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1745:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1754:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1741:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1741:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1766:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1737:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1737:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1734:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1795:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1824:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1805:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1805:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1795:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1843:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1873:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1884:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1869:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1869:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1856:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1856:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1847:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1919:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1897:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1897:28:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1897:28:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1934:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1944:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1934:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1682:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1693:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1705:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1713:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1640:315:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2030:116:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2076:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2085:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2088:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2078:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2078:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2078:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2051:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2060:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2047:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2047:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2072:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2043:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2043:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2040:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2101:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2130:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2111:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2111:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2101:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1996:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2007:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2019:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1960:186:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2246:92:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2256:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2268:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2279:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2264:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2264:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2256:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2298:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2323:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2316:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2316:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2309:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2309:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2291:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2291:41:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2291:41:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2215:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2226:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2237:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2151:187:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2429:264:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2475:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2484:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2487:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2477:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2477:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2477:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2450:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2459:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2446:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2446:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2471:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2442:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2442:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2439:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2500:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2529:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2510:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2510:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2500:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2548:45:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2578:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2589:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2574:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2574:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2561:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2561:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2552:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2647:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2656:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2659:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2649:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2649:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2649:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2615:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2626:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2633:10:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2622:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2622:22:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2612:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2612:33:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2605:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2605:41:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2602:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2672:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2682:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2672:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2387:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2398:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2410:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2418:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2343:350:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2797:101:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2807:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2819:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2830:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2815:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2815:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2807:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2849:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2864:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2872:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2860:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2860:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2842:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2842:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2842:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2766:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2777:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2788:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2698:200:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3055:395:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3102:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3111:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3114:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3104:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3104:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3104:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3076:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3085:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3072:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3072:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3097:3:66",
                                                                        "type": "",
                                                                        "value": "192"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3068:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3068:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3065:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3127:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3156:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3137:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3137:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3127:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3175:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3208:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3219:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3204:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3204:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3185:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3185:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3175:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3232:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3259:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3270:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3255:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3255:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3242:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3242:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3232:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3283:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3315:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3326:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3311:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3311:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3293:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3293:37:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3283:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3339:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3371:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3382:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3367:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3367:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3349:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3349:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3339:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3396:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3428:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3439:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3424:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3424:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3406:17:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3406:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3396:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2981:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2992:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3004:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3012:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3020:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3028:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3036:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3044:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2903:547:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3632:326:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3642:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3654:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3665:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3650:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3650:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3642:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3678:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3688:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3682:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3746:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3761:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3769:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3757:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3757:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3739:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3739:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3739:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3793:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3804:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3789:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3789:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3813:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3821:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3809:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3809:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3782:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3782:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3782:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3845:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3856:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3841:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3841:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3865:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3873:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3861:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3861:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3834:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3834:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3834:59:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3913:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3924:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3909:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3909:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3943:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3936:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3936:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3929:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3929:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3902:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3902:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3902:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3577:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3588:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3596:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3604:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3612:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3623:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3455:503:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4044:103:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4090:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4099:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4102:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4092:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4092:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4092:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4065:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4074:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4061:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4061:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4086:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4057:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4057:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4054:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4115:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4131:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4125:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4125:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4115:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4010:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4021:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4033:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3963:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4326:166:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4343:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4354:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4336:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4336:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4336:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4377:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4388:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4373:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4373:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4393:2:66",
                                                                        "type": "",
                                                                        "value": "16"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4366:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4366:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4366:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4416:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4427:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4412:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4412:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4e6f74206272696467652061646d696e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4432:18:66",
                                                                        "type": "",
                                                                        "value": "Not bridge admin"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4405:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4405:46:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4405:46:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4460:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4472:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4483:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4468:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4468:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4460:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_82c5f7a57aac208f3a4b4ad4bbe53e5acd7ca3f72815d14132e2ac103f35b32e__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4303:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4317:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4152:340:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4671:174:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4688:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4699:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4681:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4681:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4681:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4722:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4733:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4718:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4718:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4738:2:66",
                                                                        "type": "",
                                                                        "value": "24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4711:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4711:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4711:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4761:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4772:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4757:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4757:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "63616e277420627269646765207a65726f20746f6b656e73",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4777:26:66",
                                                                        "type": "",
                                                                        "value": "can't bridge zero tokens"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4750:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4750:54:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4750:54:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4813:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4825:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4836:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4821:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4821:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4813:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4648:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4662:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4497:348:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5024:237:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5041:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5052:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5034:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5034:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5034:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5075:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5086:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5071:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5071:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5091:2:66",
                                                                        "type": "",
                                                                        "value": "47"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5064:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5064:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5064:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5114:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5125:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5110:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5110:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6e6f6e2d77686974656c697374656420746f6b656e206f72206c617374206272",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5130:34:66",
                                                                        "type": "",
                                                                        "value": "non-whitelisted token or last br"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5103:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5103:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5103:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5185:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5196:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5181:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5181:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6964676520746f6f20726563656e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5201:17:66",
                                                                        "type": "",
                                                                        "value": "idge too recent"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5174:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5174:45:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5174:45:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5228:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5240:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5251:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5236:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5236:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5228:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5001:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5015:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4850:411:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5394:136:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5404:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5416:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5427:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5412:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5412:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5404:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5446:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5457:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5439:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5439:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5439:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5484:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5495:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5480:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5480:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5504:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5512:10:66",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5500:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5500:23:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5473:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5473:51:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5473:51:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5355:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5366:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5374:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5385:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5266:264:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5709:170:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5726:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5737:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5719:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5719:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5719:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5760:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5771:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5756:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5756:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5776:2:66",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5749:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5749:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5749:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5799:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5810:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5795:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5795:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "436f6e74726163742069732064697361626c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5815:22:66",
                                                                        "type": "",
                                                                        "value": "Contract is disabled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5788:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5788:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5788:50:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5847:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5859:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5870:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5855:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5855:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5847:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5686:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5700:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5535:344:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6058:179:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6075:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6086:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6068:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6068:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6068:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6109:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6120:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6105:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6105:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6125:2:66",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6098:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6098:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6098:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6148:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6159:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6144:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6144:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6465706f73697420746f6b656e206e6f742077686974656c6973746564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6164:31:66",
                                                                        "type": "",
                                                                        "value": "deposit token not whitelisted"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6137:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6137:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6137:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6205:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6217:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6228:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6213:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6213:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6205:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6035:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6049:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5884:353:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6416:180:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6433:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6444:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6426:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6426:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6426:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6467:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6478:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6463:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6463:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6483:2:66",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6456:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6456:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6456:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6506:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6517:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6502:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6502:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "736c6f7752656c6179466565506374206d757374206265203c3d20323525",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6522:32:66",
                                                                        "type": "",
                                                                        "value": "slowRelayFeePct must be <= 25%"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6495:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6495:60:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6495:60:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6564:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6576:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6587:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6572:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6572:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6564:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6393:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6407:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6242:354:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6775:223:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6792:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6803:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6785:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6785:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6785:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6826:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6837:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6822:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6822:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6842:2:66",
                                                                        "type": "",
                                                                        "value": "33"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6815:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6815:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6815:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6865:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6876:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6861:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6861:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "696e7374616e7452656c6179466565506374206d757374206265203c3d203235",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6881:34:66",
                                                                        "type": "",
                                                                        "value": "instantRelayFeePct must be <= 25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6854:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6854:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6854:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6936:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6947:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6932:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6932:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "25",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6952:3:66",
                                                                        "type": "",
                                                                        "value": "%"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6925:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6925:31:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6925:31:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6965:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6977:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6988:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6973:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6973:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6965:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6752:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6766:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6601:397:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7035:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7052:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7055:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7045:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7045:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7045:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7149:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7152:4:66",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7142:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7142:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7142:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7173:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7176:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7166:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7166:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7166:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "7003:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7240:181:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7250:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "7260:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7254:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7287:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7302:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7305:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7298:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7298:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7291:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7317:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7332:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7335:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7328:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7328:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7321:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7363:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7365:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7365:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7365:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7353:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7358:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7350:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7350:12:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7347:38:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7394:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7406:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7411:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7402:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7402:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7394:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7222:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7225:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7231:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7192:229:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7473:189:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7483:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "7493:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7487:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7520:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7535:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7538:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7531:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7531:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7524:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7550:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7565:1:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7568:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7561:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7561:10:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7554:3:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7605:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7607:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7607:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7607:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7586:3:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7595:2:66"
                                                                            },
                                                                            {
                                                                                "name": "y_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7599:3:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7591:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7591:12:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7583:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7583:21:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7580:47:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7636:20:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7647:3:66"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7652:3:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7643:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7643:13:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7636:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7456:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7459:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7465:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7426:236:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7841:178:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7858:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7869:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7851:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7851:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7851:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7892:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7903:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7888:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7888:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7908:2:66",
                                                                        "type": "",
                                                                        "value": "28"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7881:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7881:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7881:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7931:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7942:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7927:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7927:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6465706f736974206d696e656420616674657220646561646c696e65",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7947:30:66",
                                                                        "type": "",
                                                                        "value": "deposit mined after deadline"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7920:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7920:58:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7920:58:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7987:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7999:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8010:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7995:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7995:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7987:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7818:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7832:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7667:352:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8198:177:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8215:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8226:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8208:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8208:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8208:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8249:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8260:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8245:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8245:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8265:2:66",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8238:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8238:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8238:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8288:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8299:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8284:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8284:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6d73672e76616c7565206d757374206d6174636820616d6f756e74",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8304:29:66",
                                                                        "type": "",
                                                                        "value": "msg.value must match amount"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8277:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8277:57:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8277:57:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8343:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8355:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8366:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8351:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8351:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8343:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8175:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8189:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8024:351:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8727:631:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8737:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8749:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8760:3:66",
                                                                        "type": "",
                                                                        "value": "320"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8745:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8745:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8737:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8780:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8791:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8773:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8773:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8773:25:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8818:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8829:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8814:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8814:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8834:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8807:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8807:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8807:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8850:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "8860:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8854:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8922:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8933:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8918:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8918:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8942:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8950:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8938:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8938:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8911:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8911:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8911:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8974:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8985:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8970:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8970:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8994:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9002:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8990:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8990:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8963:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8963:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8963:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9026:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9037:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9022:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9022:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9047:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9055:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9043:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9043:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9015:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9015:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9015:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9079:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9090:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9075:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9075:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value5",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9100:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9108:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9096:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9096:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9068:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9068:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9068:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9132:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9143:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9128:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9128:19:66"
                                                                    },
                                                                    {
                                                                        "name": "value6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9149:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9121:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9121:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9121:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9165:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9175:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9169:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9213:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9224:3:66",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9209:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9209:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value7",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9234:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9242:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9230:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9230:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9202:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9202:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9202:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9266:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9277:3:66",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9262:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9262:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value8",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9287:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9295:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9283:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9283:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9255:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9255:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9255:44:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9319:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9330:3:66",
                                                                                "type": "",
                                                                                "value": "288"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9315:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9315:19:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value9",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9340:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9348:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9336:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9336:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9308:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9308:44:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9308:44:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8624:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value9",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8635:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value8",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8643:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8651:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8659:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8667:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8675:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8683:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8691:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8699:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8707:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8718:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8380:978:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9411:80:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9438:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9440:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9440:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9440:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9427:1:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9434:1:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9430:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9430:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9424:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9424:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9421:39:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9469:16:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9480:1:66"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9483:1:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9476:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9476:9:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9469:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9394:1:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9397:1:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9403:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9363:128:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9679:319:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9689:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9701:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9712:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9697:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9697:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9689:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9725:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9735:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9729:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9793:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9808:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9816:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9804:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9804:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9786:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9786:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9786:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9840:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9851:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9836:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9836:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9860:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9868:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9856:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9856:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9829:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9829:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9829:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9892:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9903:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9888:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9888:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9912:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9920:18:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9908:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9908:31:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9881:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9881:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9881:59:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9960:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9971:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9956:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9956:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9980:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9988:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9976:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9976:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9949:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9949:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9949:43:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9624:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9635:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9643:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9651:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9659:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9670:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9496:502:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10126:184:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10136:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10148:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10159:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10144:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10144:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10136:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10178:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10193:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10201:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10189:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10189:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10171:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10171:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10171:74:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10265:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10276:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10261:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10261:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "10295:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10288:6:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "10288:14:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10281:6:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10281:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10254:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10254:50:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10254:50:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10087:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10098:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10106:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10117:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10003:307:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10489:181:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10506:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10517:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10499:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10499:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10499:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10540:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10551:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10536:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10536:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10556:2:66",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10529:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10529:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10529:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10579:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10590:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10575:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10575:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10595:33:66",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10568:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10568:61:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10568:61:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10638:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10650:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10661:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10646:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10646:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10638:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10466:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10480:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10315:355:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10804:168:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10814:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10826:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10837:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10822:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10822:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10814:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10856:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10871:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10879:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10867:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10867:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10849:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10849:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10849:74:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10943:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "10954:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10939:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10939:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10959:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10932:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10932:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10932:34:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10765:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10776:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10784:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10795:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10675:297:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11134:241:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11144:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11156:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11167:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11152:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11152:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11144:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11179:52:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "11189:42:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11183:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11247:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11262:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11270:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11258:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11258:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11240:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11240:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11240:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11294:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11305:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11290:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11290:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11314:6:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11322:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11310:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11310:15:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11283:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11283:43:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11283:43:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11346:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11357:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11342:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11342:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11362:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11335:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11335:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11335:34:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11087:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11098:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11106:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11114:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11125:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10977:398:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11554:175:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11571:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11582:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11564:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11564:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11564:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11605:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11616:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11601:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11601:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11621:2:66",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11594:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11594:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11594:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11644:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11655:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11640:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11640:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "4261642062726964676520726f757465722061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11660:27:66",
                                                                        "type": "",
                                                                        "value": "Bad bridge router address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11633:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11633:55:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11633:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11697:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11709:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11720:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11705:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11705:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11697:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11531:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11545:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11380:349:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11812:167:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "11858:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "11867:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "11870:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11860:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "11860:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "11860:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11833:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11842:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11829:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11829:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11854:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11825:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11825:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11822:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11883:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11902:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11896:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11896:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11887:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11943:5:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11921:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11921:28:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11921:28:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11958:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11968:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11958:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11778:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11789:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11801:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11734:245:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12158:232:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12175:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12186:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12168:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12168:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12168:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12209:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12220:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12205:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12205:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12225:2:66",
                                                                        "type": "",
                                                                        "value": "42"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12198:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12198:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12198:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12248:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12259:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12244:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12244:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12264:34:66",
                                                                        "type": "",
                                                                        "value": "SafeERC20: ERC20 operation did n"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12237:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12237:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12237:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12319:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12330:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12315:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12315:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "6f742073756363656564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12335:12:66",
                                                                        "type": "",
                                                                        "value": "ot succeed"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12308:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12308:40:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12308:40:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12357:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12369:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12380:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12365:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12365:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12357:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12135:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12149:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11984:406:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12569:228:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12586:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12597:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12579:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12579:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12579:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12620:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12631:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12616:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12616:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12636:2:66",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12609:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12609:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12609:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12659:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12670:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12655:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12655:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12675:34:66",
                                                                        "type": "",
                                                                        "value": "Address: insufficient balance fo"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12648:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12648:62:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12648:62:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12730:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12741:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12726:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12726:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "722063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12746:8:66",
                                                                        "type": "",
                                                                        "value": "r call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12719:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12719:36:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12719:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12764:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12776:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12787:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12772:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12772:19:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12764:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12546:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12560:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12395:402:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12976:179:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12993:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13004:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12986:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12986:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12986:21:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13027:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13038:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13023:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13023:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13043:2:66",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13016:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13016:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13016:30:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13066:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13077:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13062:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13062:18:66"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13082:31:66",
                                                                        "type": "",
                                                                        "value": "Address: call to non-contract"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13055:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13055:59:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13055:59:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13123:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13135:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13146:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13131:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13131:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13123:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12953:9:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12967:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12802:353:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13213:205:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13223:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "13232:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13227:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "13292:63:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "13317:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "13322:1:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "13313:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "13313:11:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "13336:3:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "13341:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "13332:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "13332:11:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "13326:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "13326:18:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13306:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "13306:39:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "13306:39:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13253:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13256:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13250:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13250:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "13264:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "13266:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "13275:1:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "13278:2:66",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13271:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "13271:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13266:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "13246:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "13242:113:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "13381:31:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "13394:3:66"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "13399:6:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "13390:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "13390:16:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "13408:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13383:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "13383:27:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "13383:27:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13370:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13373:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13367:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13367:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "13364:48:66"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13191:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13196:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13201:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13160:258:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13560:137:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13570:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13590:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13584:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13584:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13574:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13632:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13640:4:66",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13628:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13628:17:66"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13647:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13652:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13606:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13606:53:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13606:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13668:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13679:3:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13684:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13675:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13675:16:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13668:3:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13536:3:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13541:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13552:3:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13423:274:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13823:321:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13840:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13851:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13833:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13833:21:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13833:21:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13863:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13883:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13877:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13877:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13867:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13910:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13921:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13906:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13906:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13926:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13899:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13899:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13899:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13968:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13976:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13964:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13964:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13985:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13996:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13981:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13981:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14001:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13942:21:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13942:66:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13942:66:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14017:121:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14033:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "14052:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "14060:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "14048:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "14048:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "14065:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "14044:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "14044:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14029:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14029:104:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14135:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14025:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14025:113:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14017:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13792:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13803:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13814:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13702:442:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint64(headStart)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := abi_decode_address(add(headStart, 64))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_decode_tuple_t_addresst_uint32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint64t_uint64t_uint64(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint64(add(headStart, 96))\n        value4 := abi_decode_uint64(add(headStart, 128))\n        value5 := abi_decode_uint64(add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint64_t_bool__to_t_address_t_address_t_uint64_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_82c5f7a57aac208f3a4b4ad4bbe53e5acd7ca3f72815d14132e2ac103f35b32e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Not bridge admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"can't bridge zero tokens\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"non-whitelisted token or last br\")\n        mstore(add(headStart, 96), \"idge too recent\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256_t_uint32__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Contract is disabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"deposit token not whitelisted\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"slowRelayFeePct must be <= 25%\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"instantRelayFeePct must be <= 25\")\n        mstore(add(headStart, 96), \"%\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint64(x, y) -> diff\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function checked_add_t_uint64(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"deposit mined after deadline\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"msg.value must match amount\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__to_t_uint256_t_uint256_t_address_t_address_t_address_t_address_t_uint256_t_uint64_t_uint64_t_uint64__fromStack_reversed(headStart, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 320)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), and(value5, _1))\n        mstore(add(headStart, 192), value6)\n        let _2 := 0xffffffffffffffff\n        mstore(add(headStart, 224), and(value7, _2))\n        mstore(add(headStart, 256), and(value8, _2))\n        mstore(add(headStart, 288), and(value9, _2))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint64_t_address__to_t_address_t_address_t_uint64_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 96), and(value3, _1))\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Bad bridge router address\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n        mstore(add(headStart, 96), \"ot succeed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r call\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "60806040526004361061010e5760003560e01c80639a8a0592116100a5578063b2d6f4d411610074578063daf9c21011610059578063daf9c2101461033e578063de7eba781461041d578063fbb9fcf71461043d57600080fd5b8063b2d6f4d4146102f1578063c2d9dca91461032b57600080fd5b80639a8a05921461026c5780639bfd2cdc14610282578063a1244c67146102a2578063a6af2dfe146102b857600080fd5b80632ec35b31116100e15780632ec35b31146101dc5780634dedca28146101fc578063563c7f601461021c57806363635fd91461023c57600080fd5b8063146bf4b1146101135780631c39c38d1461016a57806322f8e5661461019757806329cb924d146101b9575b600080fd5b34801561011f57600080fd5b506002546101409073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561017657600080fd5b506000546101409073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101a357600080fd5b506101b76101b2366004611abd565b6104a7565b005b3480156101c557600080fd5b506101ce610550565b604051908152602001610161565b3480156101e857600080fd5b506101b76101f7366004611af3565b610617565b34801561020857600080fd5b506101b7610217366004611b32565b6106b5565b34801561022857600080fd5b506101b7610237366004611b83565b610752565b34801561024857600080fd5b5061025c610257366004611bba565b6107ed565b6040519015158152602001610161565b34801561027857600080fd5b506101ce60015481565b34801561028e57600080fd5b506101b761029d366004611bd5565b610850565b3480156102ae57600080fd5b506101ce60035481565b3480156102c457600080fd5b506005546101409068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102fd57600080fd5b506005546103129067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610161565b6101b7610339366004611c0a565b610b56565b34801561034a57600080fd5b506103d4610359366004611bba565b6004602052600090815260409020805460019091015473ffffffffffffffffffffffffffffffffffffffff9182169181169074010000000000000000000000000000000000000000810467ffffffffffffffff16907c0100000000000000000000000000000000000000000000000000000000900460ff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815294909316602085015267ffffffffffffffff9091169183019190915215156060820152608001610161565b34801561042957600080fd5b506101b7610438366004611bba565b611100565b34801561044957600080fd5b5061025c610458366004611bba565b73ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16151590565b60005473ffffffffffffffffffffffffffffffffffffffff166104c957600080fd5b6000546040517f22f8e5660000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906322f8e56690602401600060405180830381600087803b15801561053557600080fd5b505af1158015610549573d6000803e3d6000fd5b5050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16156106125760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105d557600080fd5b505afa1580156105e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060d9190611c77565b905090565b504290565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146106a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f74206272696467652061646d696e0000000000000000000000000000000060448201526064015b60405180910390fd5b6106b281611196565b50565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f74206272696467652061646d696e0000000000000000000000000000000060448201526064016106a0565b61074d838383611204565b505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146107df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f74206272696467652061646d696e0000000000000000000000000000000060448201526064016106a0565b6107e982826113dc565b5050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081206001015474010000000000000000000000000000000000000000900467ffffffffffffffff161515801561084a575061084a8261148f565b92915050565b610858611506565b610885600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381600087803b1580156108ef57600080fd5b505af1158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190611c77565b905060008111610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f63616e277420627269646765207a65726f20746f6b656e73000000000000000060448201526064016106a0565b61099c836107ed565b610a28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f6e6f6e2d77686974656c697374656420746f6b656e206f72206c61737420627260448201527f6964676520746f6f20726563656e74000000000000000000000000000000000060648201526084016106a0565b610a30610550565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600460205260409020600101805467ffffffffffffffff9490941674010000000000000000000000000000000000000000027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff85168117909155610ab99391929081169116178361158c565b6040805182815263ffffffff84166020820152339173ffffffffffffffffffffffffffffffffffffffff8616917f95b5ec953bd38fbaa6f859725352bf73202c155a6809e5622c95ceef331eac6c910160405180910390a3506107e9600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090206001015485907c0100000000000000000000000000000000000000000000000000000000900460ff16610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f436f6e74726163742069732064697361626c656400000000000000000000000060448201526064016106a0565b610c12611506565b610c3f600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090206001015474010000000000000000000000000000000000000000900467ffffffffffffffff16610cf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6465706f73697420746f6b656e206e6f742077686974656c697374656400000060448201526064016106a0565b6703782dace9d900008467ffffffffffffffff161115610d6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f736c6f7752656c6179466565506374206d757374206265203c3d20323525000060448201526064016106a0565b6703782dace9d900008367ffffffffffffffff161115610e0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f696e7374616e7452656c6179466565506374206d757374206265203c3d20323560448201527f250000000000000000000000000000000000000000000000000000000000000060648201526084016106a0565b610e1a61025883611cbf565b67ffffffffffffffff16610e2c610550565b10158015610e565750610e4182610258611ce8565b67ffffffffffffffff16610e53610550565b11155b610ebc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6465706f736974206d696e656420616674657220646561646c696e650000000060448201526064016106a0565b60025473ffffffffffffffffffffffffffffffffffffffff87811660009081526004602052604090205481169116148015610ef75750600034115b15610fcb57843414610f65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d73672e76616c7565206d757374206d6174636820616d6f756e74000000000060448201526064016106a0565b8573ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fad57600080fd5b505af1158015610fc1573d6000803e3d6000fd5b5050505050610fed565b610fed73ffffffffffffffffffffffffffffffffffffffff8716333088611660565b60015460035473ffffffffffffffffffffffffffffffffffffffff888116600081815260046020908152604091829020548251968752908601949094528b8316908501523360608501529116608083015260a082015260c0810186905267ffffffffffffffff80861660e083015280851661010083015283166101208201527fab77617f2b9bdbb101fc328e585470fb3c845c92b25c4b080cb7b66f7163cf72906101400160405180910390a16001600360008282546110ad9190611d14565b909155506110f79050600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055565b50505050505050565b60055468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4e6f74206272696467652061646d696e0000000000000000000000000000000060448201526064016106a0565b6106b2816116c4565b600580547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff83169081179091556040519081527f3f27163d4f4fe7a27a9d79683adf471b236f49fe9e8808717b3cc3c05a27611f906020015b60405180910390a150565b60405180608001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200161124f610550565b67ffffffffffffffff90811682526001602092830181905273ffffffffffffffffffffffffffffffffffffffff868116600090815260048552604090819020865181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169084161781559486015194909201805492860151606090960151949091167fffffffff0000000000000000000000000000000000000000000000000000000090921691909117740100000000000000000000000000000000000000009490921693909302177fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000911515919091021790557f93f23add56b90352ea2ef3bc2123262792af300dc6060c99f6ee06a7026863bd838361138e610550565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015267ffffffffffffffff90911690820152908316606082015260800160405180910390a1505050565b73ffffffffffffffffffffffffffffffffffffffff821660008181526004602090815260409182902060010180547fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c0100000000000000000000000000000000000000000000000000000000861515908102919091179091558251938452908301527ff84482204ff927822d3068d71e16e14b51cb1b2adafa7d6e11edc1b8dfd8c0db910160405180910390a15050565b60055473ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081206001015490916114ed9167ffffffffffffffff918216917401000000000000000000000000000000000000000090910416611ce8565b67ffffffffffffffff166114ff610550565b1192915050565b60005474010000000000000000000000000000000000000000900460ff1661158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106a0565b565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261074d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526117c5565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526116be9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016115de565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116611741576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4261642062726964676520726f7574657220616464726573730000000000000060448201526064016106a0565b600580547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8481168202929092179283905560405192041681527f6d4b0c6c569e24db2326e7ec7e28a339d0e602b357a2930369b180065474c861906020016111f9565b6000611827826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118d19092919063ffffffff16565b80519091501561074d57808060200190518101906118459190611d2c565b61074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106a0565b60606118e084846000856118ea565b90505b9392505050565b60608247101561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106a0565b843b6119e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106a0565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611a0d9190611d75565b60006040518083038185875af1925050503d8060008114611a4a576040519150601f19603f3d011682016040523d82523d6000602084013e611a4f565b606091505b5091509150611a5f828286611a6a565b979650505050505050565b60608315611a795750816118e3565b825115611a895782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a09190611d91565b600060208284031215611acf57600080fd5b5035919050565b803567ffffffffffffffff81168114611aee57600080fd5b919050565b600060208284031215611b0557600080fd5b6118e382611ad6565b803573ffffffffffffffffffffffffffffffffffffffff81168114611aee57600080fd5b600080600060608486031215611b4757600080fd5b611b5084611b0e565b9250611b5e60208501611b0e565b9150611b6c60408501611b0e565b90509250925092565b80151581146106b257600080fd5b60008060408385031215611b9657600080fd5b611b9f83611b0e565b91506020830135611baf81611b75565b809150509250929050565b600060208284031215611bcc57600080fd5b6118e382611b0e565b60008060408385031215611be857600080fd5b611bf183611b0e565b9150602083013563ffffffff81168114611baf57600080fd5b60008060008060008060c08789031215611c2357600080fd5b611c2c87611b0e565b9550611c3a60208801611b0e565b945060408701359350611c4f60608801611ad6565b9250611c5d60808801611ad6565b9150611c6b60a08801611ad6565b90509295509295509295565b600060208284031215611c8957600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff83811690831681811015611ce057611ce0611c90565b039392505050565b600067ffffffffffffffff808316818516808303821115611d0b57611d0b611c90565b01949350505050565b60008219821115611d2757611d27611c90565b500190565b600060208284031215611d3e57600080fd5b81516118e381611b75565b60005b83811015611d64578181015183820152602001611d4c565b838111156116be5750506000910152565b60008251611d87818460208701611d49565b9190910192915050565b6020815260008251806020840152611db0816040850160208701611d49565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220537901ffda0020b56713c34db82e6fda1c6bf59f7e94c51d4abd8448edddab0e64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9A8A0592 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xB2D6F4D4 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDAF9C210 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDAF9C210 EQ PUSH2 0x33E JUMPI DUP1 PUSH4 0xDE7EBA78 EQ PUSH2 0x41D JUMPI DUP1 PUSH4 0xFBB9FCF7 EQ PUSH2 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB2D6F4D4 EQ PUSH2 0x2F1 JUMPI DUP1 PUSH4 0xC2D9DCA9 EQ PUSH2 0x32B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9A8A0592 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x9BFD2CDC EQ PUSH2 0x282 JUMPI DUP1 PUSH4 0xA1244C67 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0xA6AF2DFE EQ PUSH2 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2EC35B31 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0x2EC35B31 EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x4DEDCA28 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x563C7F60 EQ PUSH2 0x21C JUMPI DUP1 PUSH4 0x63635FD9 EQ PUSH2 0x23C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x146BF4B1 EQ PUSH2 0x113 JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD PUSH2 0x140 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x140 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x1B2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ABD JUMP JUMPDEST PUSH2 0x4A7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CE PUSH2 0x550 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1AF3 JUMP JUMPDEST PUSH2 0x617 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x217 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B32 JUMP JUMPDEST PUSH2 0x6B5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x237 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B83 JUMP JUMPDEST PUSH2 0x752 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25C PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BBA JUMP JUMPDEST PUSH2 0x7ED JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CE PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0x1BD5 JUMP JUMPDEST PUSH2 0x850 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CE PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x140 SWAP1 PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x5 SLOAD PUSH2 0x312 SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x161 JUMP JUMPDEST PUSH2 0x1B7 PUSH2 0x339 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C0A JUMP JUMPDEST PUSH2 0xB56 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D4 PUSH2 0x359 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BBA JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 DUP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x161 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x429 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B7 PUSH2 0x438 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BBA JUMP JUMPDEST PUSH2 0x1100 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25C PUSH2 0x458 CALLDATASIZE PUSH1 0x4 PUSH2 0x1BBA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x22F8E56600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x549 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x612 JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x60D SWAP2 SWAP1 PUSH2 0x1C77 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x6A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206272696467652061646D696E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6B2 DUP2 PUSH2 0x1196 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x742 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206272696467652061646D696E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x74D DUP4 DUP4 DUP4 PUSH2 0x1204 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x7DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206272696467652061646D696E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x7E9 DUP3 DUP3 PUSH2 0x13DC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 ISZERO PUSH2 0x84A JUMPI POP PUSH2 0x84A DUP3 PUSH2 0x148F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x858 PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x885 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x903 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x927 SWAP2 SWAP1 PUSH2 0x1C77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x993 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x63616E277420627269646765207A65726F20746F6B656E730000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x99C DUP4 PUSH2 0x7ED JUMP JUMPDEST PUSH2 0xA28 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6E6F6E2D77686974656C697374656420746F6B656E206F72206C617374206272 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6964676520746F6F20726563656E740000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0xA30 PUSH2 0x550 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0xAB9 SWAP4 SWAP2 SWAP3 SWAP1 DUP2 AND SWAP2 AND OR DUP4 PUSH2 0x158C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH4 0xFFFFFFFF DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH32 0x95B5EC953BD38FBAA6F859725352BF73202C155A6809E5622C95CEEF331EAC6C SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH2 0x7E9 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD DUP6 SWAP1 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xC0A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x436F6E74726163742069732064697361626C6564000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0xC12 PUSH2 0x1506 JUMP JUMPDEST PUSH2 0xC3F PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xCF0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F73697420746F6B656E206E6F742077686974656C6973746564000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xD6C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x736C6F7752656C6179466565506374206D757374206265203C3D203235250000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0xE0E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x696E7374616E7452656C6179466565506374206D757374206265203C3D203235 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2500000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0xE1A PUSH2 0x258 DUP4 PUSH2 0x1CBF JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xE2C PUSH2 0x550 JUMP JUMPDEST LT ISZERO DUP1 ISZERO PUSH2 0xE56 JUMPI POP PUSH2 0xE41 DUP3 PUSH2 0x258 PUSH2 0x1CE8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0xE53 PUSH2 0x550 JUMP JUMPDEST GT ISZERO JUMPDEST PUSH2 0xEBC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6465706F736974206D696E656420616674657220646561646C696E6500000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 AND SWAP2 AND EQ DUP1 ISZERO PUSH2 0xEF7 JUMPI POP PUSH1 0x0 CALLVALUE GT JUMPDEST ISZERO PUSH2 0xFCB JUMPI DUP5 CALLVALUE EQ PUSH2 0xF65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6D73672E76616C7565206D757374206D6174636820616D6F756E740000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 CALLVALUE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFC1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0xFED JUMP JUMPDEST PUSH2 0xFED PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND CALLER ADDRESS DUP9 PUSH2 0x1660 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD DUP3 MLOAD SWAP7 DUP8 MSTORE SWAP1 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP12 DUP4 AND SWAP1 DUP6 ADD MSTORE CALLER PUSH1 0x60 DUP6 ADD MSTORE SWAP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP7 SWAP1 MSTORE PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0xE0 DUP4 ADD MSTORE DUP1 DUP6 AND PUSH2 0x100 DUP4 ADD MSTORE DUP4 AND PUSH2 0x120 DUP3 ADD MSTORE PUSH32 0xAB77617F2B9BDBB101FC328E585470FB3C845C92B25C4B080CB7B66F7163CF72 SWAP1 PUSH2 0x140 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x10AD SWAP2 SWAP1 PUSH2 0x1D14 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x10F7 SWAP1 POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x118D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F74206272696467652061646D696E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH2 0x6B2 DUP2 PUSH2 0x16C4 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0x3F27163D4F4FE7A27A9D79683ADF471B236F49FE9E8808717B3CC3C05A27611F SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x124F PUSH2 0x550 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP3 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 DUP6 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP7 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 DUP5 AND OR DUP2 SSTORE SWAP5 DUP7 ADD MLOAD SWAP5 SWAP1 SWAP3 ADD DUP1 SLOAD SWAP3 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP1 SWAP2 AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH21 0x10000000000000000000000000000000000000000 SWAP5 SWAP1 SWAP3 AND SWAP4 SWAP1 SWAP4 MUL OR PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH32 0x93F23ADD56B90352EA2EF3BC2123262792AF300DC6060C99F6EE06A7026863BD DUP4 DUP4 PUSH2 0x138E PUSH2 0x550 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH32 0xFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 DUP7 ISZERO ISZERO SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xF84482204FF927822D3068D71E16E14B51CB1B2ADAFA7D6E11EDC1B8DFD8C0DB SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 PUSH2 0x14ED SWAP2 PUSH8 0xFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND PUSH2 0x1CE8 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH2 0x14FF PUSH2 0x550 JUMP JUMPDEST GT SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x158A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x74D SWAP1 DUP5 SWAP1 PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x16BE SWAP1 DUP6 SWAP1 PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD PUSH2 0x15DE JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1741 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4261642062726964676520726F75746572206164647265737300000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND DUP2 MSTORE PUSH32 0x6D4B0C6C569E24DB2326E7EC7E28A339D0E602B357A2930369B180065474C861 SWAP1 PUSH1 0x20 ADD PUSH2 0x11F9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1827 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18D1 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x74D JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1845 SWAP2 SWAP1 PUSH2 0x1D2C JUMP JUMPDEST PUSH2 0x74D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F74207375636365656400000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x18E0 DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x18EA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x197C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x722063616C6C0000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x6A0 JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x19E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6A0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1A0D SWAP2 SWAP1 PUSH2 0x1D75 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1A4A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1A4F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1A5F DUP3 DUP3 DUP7 PUSH2 0x1A6A JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x1A79 JUMPI POP DUP2 PUSH2 0x18E3 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x1A89 JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6A0 SWAP2 SWAP1 PUSH2 0x1D91 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1ACF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1B05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18E3 DUP3 PUSH2 0x1AD6 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1AEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1B47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B50 DUP5 PUSH2 0x1B0E JUMP JUMPDEST SWAP3 POP PUSH2 0x1B5E PUSH1 0x20 DUP6 ADD PUSH2 0x1B0E JUMP JUMPDEST SWAP2 POP PUSH2 0x1B6C PUSH1 0x40 DUP6 ADD PUSH2 0x1B0E JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x6B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1B9F DUP4 PUSH2 0x1B0E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x1BAF DUP2 PUSH2 0x1B75 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x18E3 DUP3 PUSH2 0x1B0E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1BE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BF1 DUP4 PUSH2 0x1B0E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1BAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1C23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C2C DUP8 PUSH2 0x1B0E JUMP JUMPDEST SWAP6 POP PUSH2 0x1C3A PUSH1 0x20 DUP9 ADD PUSH2 0x1B0E JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x1C4F PUSH1 0x60 DUP9 ADD PUSH2 0x1AD6 JUMP JUMPDEST SWAP3 POP PUSH2 0x1C5D PUSH1 0x80 DUP9 ADD PUSH2 0x1AD6 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C6B PUSH1 0xA0 DUP9 ADD PUSH2 0x1AD6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x1CE0 JUMPI PUSH2 0x1CE0 PUSH2 0x1C90 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1D0B JUMPI PUSH2 0x1D0B PUSH2 0x1C90 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1D27 JUMPI PUSH2 0x1D27 PUSH2 0x1C90 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x18E3 DUP2 PUSH2 0x1B75 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D64 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D4C JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x16BE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1D87 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x1D49 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1DB0 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x1D49 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 PUSH26 0x1FFDA0020B56713C34DB82E6FDA1C6BF59F7E94C51D4ABD8448 0xED 0xDD 0xAB 0xE PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "102:4700:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1076:21:44;;;;;;;;;;-1:-1:-1;1076:21:44;;;;;;;;;;;190:42:66;178:55;;;160:74;;148:2;133:18;1076:21:44;;;;;;;;391:27:30;;;;;;;;;;-1:-1:-1;391:27:30;;;;;;;;1097:115;;;;;;;;;;-1:-1:-1;1097:115:30;;;;;:::i;:::-;;:::i;:::-;;1457:276;;;;;;;;;;;;;:::i;:::-;;;576:25:66;;;564:2;549:18;1457:276:30;430:177:66;1669:152:57;;;;;;;;;;-1:-1:-1;1669:152:57;;;;;:::i;:::-;;:::i;2335:199::-;;;;;;;;;;-1:-1:-1;2335:199:57;;;;;:::i;:::-;;:::i;2896:156::-;;;;;;;;;;-1:-1:-1;2896:156:57;;;;;:::i;:::-;;:::i;10863:154:44:-;;;;;;;;;;-1:-1:-1;10863:154:44;;;;;:::i;:::-;;:::i;:::-;;;2316:14:66;;2309:22;2291:41;;2279:2;2264:18;10863:154:44;2151:187:66;929:22:44;;;;;;;;;;;;;;;;3745:694:57;;;;;;;;;;-1:-1:-1;3745:694:57;;;;;:::i;:::-;;:::i;1198:31:44:-;;;;;;;;;;;;;;;;276:26:57;;;;;;;;;;-1:-1:-1;276:26:57;;;;;;;;;;;1795:34:44;;;;;;;;;;-1:-1:-1;1795:34:44;;;;;;;;;;;2872:18:66;2860:31;;;2842:50;;2830:2;2815:18;1795:34:44;2698:200:66;6672:2809:44;;;;;;:::i;:::-;;:::i;1602:65::-;;;;;;;;;;-1:-1:-1;1602:65:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3688:42:66;3757:15;;;3739:34;;3809:15;;;;3804:2;3789:18;;3782:43;3873:18;3861:31;;;3841:18;;;3834:59;;;;3936:14;3929:22;3924:2;3909:18;;3902:50;3665:3;3650:19;1602:65:44;3455:503:66;1272:122:57;;;;;;;;;;-1:-1:-1;1272:122:57;;;;;:::i;:::-;;:::i;9947:140:44:-;;;;;;;;;;-1:-1:-1;9947:140:44;;;;;:::i;:::-;10034:26;;10011:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;:46;;;9947:140;1097:115:30;899:3;875:12;:28;:12;867:37;;;;;;1171:12:::1;::::0;1165:40:::1;::::0;;;;::::1;::::0;::::1;576:25:66::0;;;1171:12:30::1;::::0;;::::1;::::0;1165:34:::1;::::0;549:18:66;;1165:40:30::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1097:115:::0;:::o;1457:276::-;1512:7;1535:12;;:28;:12;:28;1531:196;;1592:12;;;;;;;;;;1586:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1579:43;;1457:276;:::o;1531:196::-;-1:-1:-1;1660:15:30;;1457:276::o;1669:152:57:-;419:11;;;;;;;405:10;:25;397:54;;;;;;;4354:2:66;397:54:57;;;4336:21:66;4393:2;4373:18;;;4366:30;4432:18;4412;;;4405:46;4468:18;;397:54:57;;;;;;;;;1767:47:::1;1792:21;1767:24;:47::i;:::-;1669:152:::0;:::o;2335:199::-;419:11;;;;;;;405:10;:25;397:54;;;;;;;4354:2:66;397:54:57;;;4336:21:66;4393:2;4373:18;;;4366:30;4432:18;4412;;;4405:46;4468:18;;397:54:57;4152:340:66;397:54:57;2480:47:::1;2496:7;2505;2514:12;2480:15;:47::i;:::-;2335:199:::0;;;:::o;2896:156::-;419:11;;;;;;;405:10;:25;397:54;;;;;;;4354:2:66;397:54:57;;;4336:21:66;4393:2;4373:18;;;4366:30;4432:18;4412;;;4405:46;4468:18;;397:54:57;4152:340:66;397:54:57;2999:46:::1;3018:8;3028:16;2999:18;:46::i;:::-;2896:156:::0;;:::o;10863:154:44:-;10034:26;;;10920:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;:46;;10943:67;;;;;10972:38;11002:7;10972:29;:38::i;:::-;10936:74;10863:154;-1:-1:-1;;10863:154:44:o;3745:694:57:-;1317:19:28;:17;:19::i;:::-;1346:17;2459:5;2445:19;;;;;;2335:136;1346:17;3873:43:57::1;::::0;;;;3910:4:::1;3873:43;::::0;::::1;160:74:66::0;3839:31:57::1;::::0;3873:28:::1;::::0;::::1;::::0;::::1;::::0;133:18:66;;3873:43:57::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3839:77;;3960:1;3934:23;:27;3926:64;;;::::0;::::1;::::0;;4699:2:66;3926:64:57::1;::::0;::::1;4681:21:66::0;4738:2;4718:18;;;4711:30;4777:26;4757:18;;;4750:54;4821:18;;3926:64:57::1;4497:348:66::0;3926:64:57::1;4008:18;4018:7;4008:9;:18::i;:::-;4000:78;;;::::0;::::1;::::0;;5052:2:66;4000:78:57::1;::::0;::::1;5034:21:66::0;5091:2;5071:18;;;5064:30;5130:34;5110:18;;;5103:62;5201:17;5181:18;;;5174:45;5236:19;;4000:78:57::1;4850:411:66::0;4000:78:57::1;4140:16;:14;:16::i;:::-;4089:26;::::0;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:41:::1;;:68:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;4256:94:::1;::::0;4089:26;;4285:39;;;;;;4326:23;4256:28:::1;:94::i;:::-;4366:66;::::0;;5439:25:66;;;5512:10;5500:23;;5495:2;5480:18;;5473:51;4421:10:57::1;::::0;4366:66:::1;::::0;::::1;::::0;::::1;::::0;5412:18:66;4366:66:57::1;;;;;;;3829:610;1384:20:28::0;2658:11;:18;;;;;;;;2477:206;6672:2809:44;2850:26;;;;;;;:17;:26;;;;;:42;;;:26;;:42;;;;;2842:75;;;;;;;5737:2:66;2842:75:44;;;5719:21:66;5776:2;5756:18;;;5749:30;5815:22;5795:18;;;5788:50;5855:18;;2842:75:44;5535:344:66;2842:75:44;1317:19:28::1;:17;:19::i;:::-;1346:17;2459:5:::0;2445:19;;;;;;2335:136;1346:17:::1;10034:26:44::0;;;10011:4;10034:26;;;:17;:26;;;;;:41;;;;;;;;6942:67:::2;;;::::0;::::2;::::0;;6086:2:66;6942:67:44::2;::::0;::::2;6068:21:66::0;6125:2;6105:18;;;6098:30;6164:31;6144:18;;;6137:59;6213:18;;6942:67:44::2;5884:353:66::0;6942:67:44::2;7276:7;7257:15;:26;;;;7249:69;;;::::0;::::2;::::0;;6444:2:66;7249:69:44::2;::::0;::::2;6426:21:66::0;6483:2;6463:18;;;6456:30;6522:32;6502:18;;;6495:60;6572:18;;7249:69:44::2;6242:354:66::0;7249:69:44::2;7358:7;7336:18;:29;;;;7328:75;;;::::0;::::2;::::0;;6803:2:66;7328:75:44::2;::::0;::::2;6785:21:66::0;6842:2;6822:18;;;6815:30;6881:34;6861:18;;;6854:62;6952:3;6932:18;;;6925:31;6973:19;;7328:75:44::2;6601:397:66::0;7328:75:44::2;8061:27;8078:10;8061:14:::0;:27:::2;:::i;:::-;8041:47;;:16;:14;:16::i;:::-;:47;;:98;;;;-1:-1:-1::0;8112:27:44::2;:14:::0;8129:10:::2;8112:27;:::i;:::-;8092:47;;:16;:14;:16::i;:::-;:47;;8041:98;8020:173;;;::::0;::::2;::::0;;7869:2:66;8020:173:44::2;::::0;::::2;7851:21:66::0;7908:2;7888:18;;;7881:30;7947;7927:18;;;7920:58;7995:18;;8020:173:44::2;7667:352:66::0;8020:173:44::2;8468:6;::::0;::::2;8430:26:::0;;::::2;8468:6;8430:26:::0;;;:17:::2;:26;::::0;;;;:34;;::::2;8468:6:::0;::::2;8430:44;:61:::0;::::2;;;;8490:1;8478:9;:13;8430:61;8426:623;;;8528:6;8515:9;:19;8507:59;;;::::0;::::2;::::0;;8226:2:66;8507:59:44::2;::::0;::::2;8208:21:66::0;8265:2;8245:18;;;8238:30;8304:29;8284:18;;;8277:57;8351:18;;8507:59:44::2;8024:351:66::0;8507:59:44::2;8598:7;8580:35;;;8624:9;8580:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;8426:623;;;8982:67;:32;::::0;::::2;9015:10;9035:4;9042:6:::0;8982:32:::2;:67::i;:::-;9093:7;::::0;9114:16:::2;::::0;9268:26:::2;::::0;;::::2;;::::0;;;:17:::2;:26;::::0;;;;;;;;:34;9065:377;;8773:25:66;;;8814:18;;;8807:34;;;;8938:15;;;8918:18;;;8911:43;9244:10:44::2;8985:2:66::0;8970:18;;8963:43;9268:34:44;::::2;9037:3:66::0;9022:19;;9015:44;9090:3;9075:19;;9068:44;9143:3;9128:19;;9121:35;;;9175:18;9230:15;;;9224:3;9209:19;;9202:44;9283:15;;;9277:3;9262:19;;9255:44;9336:15;;9330:3;9315:19;;9308:44;9065:377:44::2;::::0;8760:3:66;8745:19;9065:377:44::2;;;;;;;9473:1;9453:16;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;1384:20:28::1;::::0;-1:-1:-1;2658:11:28;:18;;;;;;;;2477:206;1384:20:::1;6672:2809:44::0;;;;;;;:::o;1272:122:57:-;419:11;;;;;;;405:10;:25;397:54;;;;;;;4354:2:66;397:54:57;;;4336:21:66;4393:2;4373:18;;;4366:30;4432:18;4412;;;4405:46;4468:18;;397:54:57;4152:340:66;397:54:57;1358:29:::1;1374:12;1358:15;:29::i;4015:198:44:-:0;4100:20;:46;;;;;;;;;;;;;4161:45;;2842:50:66;;;4161:45:44;;2830:2:66;2815:18;4161:45:44;;;;;;;;4015:198;:::o;4632:445::-;4791:191;;;;;;;;4835:7;4791:191;;;;;;4870:12;4791:191;;;;;;4919:16;:14;:16::i;:::-;4791:191;;;;;;4967:4;4791:191;;;;;;;4762:26;;;;-1:-1:-1;4762:26:44;;;:17;:26;;;;;;;:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4998:72;5013:7;4762:26;5038:16;:14;:16::i;:::-;4998:72;;;9735:42:66;9804:15;;;9786:34;;9856:15;;;9851:2;9836:18;;9829:43;9920:18;9908:31;;;9888:18;;;9881:59;9976:15;;;9971:2;9956:18;;9949:43;9712:3;9697:19;4998:72:44;;;;;;;4632:445;;;:::o;5342:209::-;5428:26;;;;;;;:17;:26;;;;;;;;;:42;;:60;;;;;;;;;;;;;;;;;;5503:41;;10171:74:66;;;10261:18;;;10254:50;5503:41:44;;10144:18:66;5503:41:44;;;;;;;5342:209;;:::o;10093:192::-;10258:20;;10214:26;;;10172:4;10214:26;;;:17;:26;;;;;10258:20;10214:41;;10172:4;;10214:64;;10258:20;;;;;10214:41;;;;;:64;:::i;:::-;10195:83;;:16;:14;:16::i;:::-;:83;;10093:192;-1:-1:-1;;10093:192:44:o;2143:186:28:-;2275:11;;;;;;;2267:55;;;;;;;10517:2:66;2267:55:28;;;10499:21:66;10556:2;10536:18;;;10529:30;10595:33;10575:18;;;10568:61;10646:18;;2267:55:28;10315:355:66;2267:55:28;2143:186::o;634:175:10:-;743:58;;10879:42:66;10867:55;;743:58:10;;;10849:74:66;10939:18;;;10932:34;;;716:86:10;;736:5;;766:23;;10822:18:66;;743:58:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:19;:86::i;815:203::-;942:68;;11189:42:66;11258:15;;;942:68:10;;;11240:34:66;11310:15;;11290:18;;;11283:43;11342:18;;;11335:34;;;915:96:10;;935:5;;965:27;;11152:18:66;;942:68:10;10977:398:66;915:96:10;815:203;;;;:::o;4579:221:57:-;4655:28;;;4647:66;;;;;;;11582:2:66;4647:66:57;;;11564:21:66;11621:2;11601:18;;;11594:30;11660:27;11640:18;;;11633:55;11705:18;;4647:66:57;11380:349:66;4647:66:57;4723:11;:28;;;;;;;;;;;;;;;;;;;4766:27;;4781:11;;;160:74:66;;4766:27:57;;148:2:66;133:18;4766:27:57;14:226:66;3022:751:10;3441:23;3467:69;3495:4;3467:69;;;;;;;;;;;;;;;;;3475:5;3467:27;;;;:69;;;;;:::i;:::-;3550:17;;3441:95;;-1:-1:-1;3550:21:10;3546:221;;3690:10;3679:30;;;;;;;;;;;;:::i;:::-;3671:85;;;;;;;12186:2:66;3671:85:10;;;12168:21:66;12225:2;12205:18;;;12198:30;12264:34;12244:18;;;12237:62;12335:12;12315:18;;;12308:40;12365:19;;3671:85:10;11984:406:66;3573:193:11;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;:::-;3700:59;;3573:193;;;;;;:::o;4600:523::-;4727:12;4784:5;4759:21;:30;;4751:81;;;;;;;12597:2:66;4751:81:11;;;12579:21:66;12636:2;12616:18;;;12609:30;12675:34;12655:18;;;12648:62;12746:8;12726:18;;;12719:36;12772:19;;4751:81:11;12395:402:66;4751:81:11;1078:20;;4842:60;;;;;;;13004:2:66;4842:60:11;;;12986:21:66;13043:2;13023:18;;;13016:30;13082:31;13062:18;;;13055:59;13131:18;;4842:60:11;12802:353:66;4842:60:11;4973:12;4987:23;5014:6;:11;;5034:5;5042:4;5014:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:11:o;7083:725::-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:11;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7363:429;7764:12;7757:20;;;;;;;;;;;:::i;245:180:66:-;304:6;357:2;345:9;336:7;332:23;328:32;325:52;;;373:1;370;363:12;325:52;-1:-1:-1;396:23:66;;245:180;-1:-1:-1;245:180:66:o;612:171::-;679:20;;739:18;728:30;;718:41;;708:69;;773:1;770;763:12;708:69;612:171;;;:::o;788:184::-;846:6;899:2;887:9;878:7;874:23;870:32;867:52;;;915:1;912;905:12;867:52;938:28;956:9;938:28;:::i;977:196::-;1045:20;;1105:42;1094:54;;1084:65;;1074:93;;1163:1;1160;1153:12;1178:334;1255:6;1263;1271;1324:2;1312:9;1303:7;1299:23;1295:32;1292:52;;;1340:1;1337;1330:12;1292:52;1363:29;1382:9;1363:29;:::i;:::-;1353:39;;1411:38;1445:2;1434:9;1430:18;1411:38;:::i;:::-;1401:48;;1468:38;1502:2;1491:9;1487:18;1468:38;:::i;:::-;1458:48;;1178:334;;;;;:::o;1517:118::-;1603:5;1596:13;1589:21;1582:5;1579:32;1569:60;;1625:1;1622;1615:12;1640:315;1705:6;1713;1766:2;1754:9;1745:7;1741:23;1737:32;1734:52;;;1782:1;1779;1772:12;1734:52;1805:29;1824:9;1805:29;:::i;:::-;1795:39;;1884:2;1873:9;1869:18;1856:32;1897:28;1919:5;1897:28;:::i;:::-;1944:5;1934:15;;;1640:315;;;;;:::o;1960:186::-;2019:6;2072:2;2060:9;2051:7;2047:23;2043:32;2040:52;;;2088:1;2085;2078:12;2040:52;2111:29;2130:9;2111:29;:::i;2343:350::-;2410:6;2418;2471:2;2459:9;2450:7;2446:23;2442:32;2439:52;;;2487:1;2484;2477:12;2439:52;2510:29;2529:9;2510:29;:::i;:::-;2500:39;;2589:2;2578:9;2574:18;2561:32;2633:10;2626:5;2622:22;2615:5;2612:33;2602:61;;2659:1;2656;2649:12;2903:547;3004:6;3012;3020;3028;3036;3044;3097:3;3085:9;3076:7;3072:23;3068:33;3065:53;;;3114:1;3111;3104:12;3065:53;3137:29;3156:9;3137:29;:::i;:::-;3127:39;;3185:38;3219:2;3208:9;3204:18;3185:38;:::i;:::-;3175:48;;3270:2;3259:9;3255:18;3242:32;3232:42;;3293:37;3326:2;3315:9;3311:18;3293:37;:::i;:::-;3283:47;;3349:38;3382:3;3371:9;3367:19;3349:38;:::i;:::-;3339:48;;3406:38;3439:3;3428:9;3424:19;3406:38;:::i;:::-;3396:48;;2903:547;;;;;;;;:::o;3963:184::-;4033:6;4086:2;4074:9;4065:7;4061:23;4057:32;4054:52;;;4102:1;4099;4092:12;4054:52;-1:-1:-1;4125:16:66;;3963:184;-1:-1:-1;3963:184:66:o;7003:::-;7055:77;7052:1;7045:88;7152:4;7149:1;7142:15;7176:4;7173:1;7166:15;7192:229;7231:4;7260:18;7328:10;;;;7298;;7350:12;;;7347:38;;;7365:18;;:::i;:::-;7402:13;;7192:229;-1:-1:-1;;;7192:229:66:o;7426:236::-;7465:3;7493:18;7538:2;7535:1;7531:10;7568:2;7565:1;7561:10;7599:3;7595:2;7591:12;7586:3;7583:21;7580:47;;;7607:18;;:::i;:::-;7643:13;;7426:236;-1:-1:-1;;;;7426:236:66:o;9363:128::-;9403:3;9434:1;9430:6;9427:1;9424:13;9421:39;;;9440:18;;:::i;:::-;-1:-1:-1;9476:9:66;;9363:128::o;11734:245::-;11801:6;11854:2;11842:9;11833:7;11829:23;11825:32;11822:52;;;11870:1;11867;11860:12;11822:52;11902:9;11896:16;11921:28;11943:5;11921:28;:::i;13160:258::-;13232:1;13242:113;13256:6;13253:1;13250:13;13242:113;;;13332:11;;;13326:18;13313:11;;;13306:39;13278:2;13271:10;13242:113;;;13373:6;13370:1;13367:13;13364:48;;;-1:-1:-1;;13408:1:66;13390:16;;13383:27;13160:258::o;13423:274::-;13552:3;13590:6;13584:13;13606:53;13652:6;13647:3;13640:4;13632:6;13628:17;13606:53;:::i;:::-;13675:16;;;;;13423:274;-1:-1:-1;;13423:274:66:o;13702:442::-;13851:2;13840:9;13833:21;13814:4;13883:6;13877:13;13926:6;13921:2;13910:9;13906:18;13899:34;13942:66;14001:6;13996:2;13985:9;13981:18;13976:2;13968:6;13964:15;13942:66;:::i;:::-;14060:2;14048:15;14065:66;14044:88;14029:104;;;;14135:2;14025:113;;13702:442;-1:-1:-1;;13702:442:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "1540800",
                                "executionCost": "infinite",
                                "totalCost": "infinite"
                            },
                            "external": {
                                "bridgeAdmin()": "2402",
                                "bridgeTokens(address,uint32)": "infinite",
                                "canBridge(address)": "infinite",
                                "chainId()": "2318",
                                "deposit(address,address,uint256,uint64,uint64,uint64)": "infinite",
                                "getCurrentTime()": "infinite",
                                "isWhitelistToken(address)": "2636",
                                "l1Weth()": "2326",
                                "minimumBridgingDelay()": "2358",
                                "numberOfDeposits()": "2362",
                                "setCrossDomainAdmin(address)": "27882",
                                "setCurrentTime(uint256)": "infinite",
                                "setEnableDeposits(address,bool)": "28294",
                                "setMinimumBridgingDelay(uint64)": "27777",
                                "timerAddress()": "2348",
                                "whitelistToken(address,address,address)": "infinite",
                                "whitelistedTokens(address)": "4823"
                            },
                            "internal": {
                                "_setBridgeAdmin(address)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "bridgeAdmin()": "a6af2dfe",
                            "bridgeTokens(address,uint32)": "9bfd2cdc",
                            "canBridge(address)": "63635fd9",
                            "chainId()": "9a8a0592",
                            "deposit(address,address,uint256,uint64,uint64,uint64)": "c2d9dca9",
                            "getCurrentTime()": "29cb924d",
                            "isWhitelistToken(address)": "fbb9fcf7",
                            "l1Weth()": "146bf4b1",
                            "minimumBridgingDelay()": "b2d6f4d4",
                            "numberOfDeposits()": "a1244c67",
                            "setCrossDomainAdmin(address)": "de7eba78",
                            "setCurrentTime(uint256)": "22f8e566",
                            "setEnableDeposits(address,bool)": "563c7f60",
                            "setMinimumBridgingDelay(uint64)": "2ec35b31",
                            "timerAddress()": "1c39c38d",
                            "whitelistToken(address,address,address)": "4dedca28",
                            "whitelistedTokens(address)": "daf9c210"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridgeAdmin\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_minimumBridgingDelay\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"_l1Weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"timerAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"DepositsEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"FundsDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBridgeAdmin\",\"type\":\"address\"}],\"name\":\"SetBridgeAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"SetMinimumBridgingDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numberOfTokensBridged\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"l1Gas\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"TokensBridged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"name\":\"WhitelistToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bridgeAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"l1Gas\",\"type\":\"uint32\"}],\"name\":\"bridgeTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"canBridge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"quoteTimestamp\",\"type\":\"uint64\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"}],\"name\":\"isWhitelistToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Weth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumBridgingDelay\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridgeAdmin\",\"type\":\"address\"}],\"name\":\"setCrossDomainAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_depositsEnabled\",\"type\":\"bool\"}],\"name\":\"setEnableDeposits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_minimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"setMinimumBridgingDelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l1BridgePool\",\"type\":\"address\"}],\"name\":\"whitelistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l1BridgePool\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"lastBridgeTime\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"bridgeTokens(address,uint32)\":{\"details\":\"The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam      on L1 as the finalization of a L2->L1 tx is quite expensive.\",\"params\":{\"l1Gas\":\"Unused by optimism, but included for potential forward compatibility considerations.\",\"l2Token\":\"L2 token to relay over the canonical bridge.\"}},\"canBridge(address)\":{\"details\":\"This function is also public for caller convenience.\",\"params\":{\"l2Token\":\"L2 token to check bridging status.\"},\"returns\":{\"_0\":\"true if token is whitelised and enough time has elapsed since the previous bridge.\"}},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"details\":\"Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.The caller must first approve this contract to spend `amount` of `l2Token`.\",\"params\":{\"amount\":\"How many L2 tokens should be deposited.\",\"instantRelayFeePct\":\"Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\",\"l1Recipient\":\"L1 address that should receive the tokens.\",\"l2Token\":\"L2 token to deposit.\",\"quoteTimestamp\":\"Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\",\"slowRelayFeePct\":\"Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current Testable timestamp.\"}},\"isWhitelistToken(address)\":{\"details\":\"Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once the token has been whitelisted.\",\"params\":{\"l2Token\":\"L2 token to check against the whitelist.\"},\"returns\":{\"_0\":\"true if token is whitelised.\"}},\"setCrossDomainAdmin(address)\":{\"details\":\"Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\",\"params\":{\"_bridgeAdmin\":\"address of the new L1 admin contract.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set current Testable time to.\"}},\"setEnableDeposits(address,bool)\":{\"details\":\"Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\",\"params\":{\"_depositsEnabled\":\"bool to set if the deposit box should accept/reject deposits.\",\"_l2Token\":\"address of L2 token to enable/disable deposits for.\"}},\"setMinimumBridgingDelay(uint64)\":{\"details\":\"Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\",\"params\":{\"_minimumBridgingDelay\":\"the new minimum delay.\"}},\"whitelistToken(address,address,address)\":{\"details\":\"Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\",\"params\":{\"l1BridgePool\":\"Address of the L1 withdrawal pool linked to this L2+L1 token.\",\"l1Token\":\"Address of the canonical L1 token. This is the token users will receive on Ethereum.\",\"l2Token\":\"Address of the L2 token representation. This is the token users would deposit on optimism.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"bridgeTokens(address,uint32)\":{\"notice\":\"Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical      token bridge, to the L1 Withdraw box.\"},\"canBridge(address)\":{\"notice\":\"Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\"},\"constructor\":{\"notice\":\"Ownable bridge deposit box. Used for testing environments that don't have specific l1/l2 messaging logic.\"},\"deposit(address,address,uint256,uint64,uint64,uint64)\":{\"notice\":\"Called by L2 user to bridge funds between L2 and L1.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp.\"},\"isWhitelistToken(address)\":{\"notice\":\"Checks if a given L2 token is whitelisted.\"},\"setCrossDomainAdmin(address)\":{\"notice\":\"Changes the L1 administrator associated with this L2 deposit deposit box.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"},\"setEnableDeposits(address,bool)\":{\"notice\":\"L1 owner can enable/disable deposits for a whitelisted token.\"},\"setMinimumBridgingDelay(uint64)\":{\"notice\":\"Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\"},\"whitelistToken(address,address,address)\":{\"notice\":\"Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/test/BridgeDepositBoxMock.sol\":\"BridgeDepositBoxMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\nimport \\\"../../../utils/Address.sol\\\";\\n\\n/**\\n * @title SafeERC20\\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\\n * contract returns false). Tokens that return no value (and instead revert or\\n * throw on failure) are also supported, non-reverting calls are assumed to be\\n * successful.\\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\\n */\\nlibrary SafeERC20 {\\n    using Address for address;\\n\\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\\n    }\\n\\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\\n    }\\n\\n    /**\\n     * @dev Deprecated. This function has issues similar to the ones found in\\n     * {IERC20-approve}, and its usage is discouraged.\\n     *\\n     * Whenever possible, use {safeIncreaseAllowance} and\\n     * {safeDecreaseAllowance} instead.\\n     */\\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\\n        // safeApprove should only be called when setting an initial allowance,\\n        // or when resetting it to zero. To increase and decrease it, use\\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\\n        // solhint-disable-next-line max-line-length\\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\\n            \\\"SafeERC20: approve from non-zero to non-zero allowance\\\"\\n        );\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\\n    }\\n\\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n    }\\n\\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\\n        unchecked {\\n            uint256 oldAllowance = token.allowance(address(this), spender);\\n            require(oldAllowance >= value, \\\"SafeERC20: decreased allowance below zero\\\");\\n            uint256 newAllowance = oldAllowance - value;\\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\\n        }\\n    }\\n\\n    /**\\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\\n     * @param token The token targeted by the call.\\n     * @param data The call data (encoded using abi.encode or one of its variants).\\n     */\\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\\n        // the target address contains contract code and also asserts for success in the low-level call.\\n\\n        bytes memory returndata = address(token).functionCall(data, \\\"SafeERC20: low-level call failed\\\");\\n        if (returndata.length > 0) { // Return data is optional\\n            // solhint-disable-next-line max-line-length\\n            require(abi.decode(returndata, (bool)), \\\"SafeERC20: ERC20 operation did not succeed\\\");\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n    /**\\n     * @dev Returns true if `account` is a contract.\\n     *\\n     * [IMPORTANT]\\n     * ====\\n     * It is unsafe to assume that an address for which this function returns\\n     * false is an externally-owned account (EOA) and not a contract.\\n     *\\n     * Among others, `isContract` will return false for the following\\n     * types of addresses:\\n     *\\n     *  - an externally-owned account\\n     *  - a contract in construction\\n     *  - an address where a contract will be created\\n     *  - an address where a contract lived, but was destroyed\\n     * ====\\n     */\\n    function isContract(address account) internal view returns (bool) {\\n        // This method relies on extcodesize, which returns 0 for contracts in\\n        // construction, since the code is only stored at the end of the\\n        // constructor execution.\\n\\n        uint256 size;\\n        // solhint-disable-next-line no-inline-assembly\\n        assembly { size := extcodesize(account) }\\n        return size > 0;\\n    }\\n\\n    /**\\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n     * `recipient`, forwarding all available gas and reverting on errors.\\n     *\\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n     * imposed by `transfer`, making them unable to receive funds via\\n     * `transfer`. {sendValue} removes this limitation.\\n     *\\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n     *\\n     * IMPORTANT: because control is transferred to `recipient`, care must be\\n     * taken to not create reentrancy vulnerabilities. Consider using\\n     * {ReentrancyGuard} or the\\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n     */\\n    function sendValue(address payable recipient, uint256 amount) internal {\\n        require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\\n        (bool success, ) = recipient.call{ value: amount }(\\\"\\\");\\n        require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n    }\\n\\n    /**\\n     * @dev Performs a Solidity function call using a low level `call`. A\\n     * plain`call` is an unsafe replacement for a function call: use this\\n     * function instead.\\n     *\\n     * If `target` reverts with a revert reason, it is bubbled up by this\\n     * function (like regular Solidity function calls).\\n     *\\n     * Returns the raw returned data. To convert to the expected return value,\\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n     *\\n     * Requirements:\\n     *\\n     * - `target` must be a contract.\\n     * - calling `target` with `data` must not revert.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n      return functionCall(target, data, \\\"Address: low-level call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n     * `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, 0, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but also transferring `value` wei to `target`.\\n     *\\n     * Requirements:\\n     *\\n     * - the calling contract must have an ETH balance of at least `value`.\\n     * - the called Solidity function must be `payable`.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n        return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\\n     *\\n     * _Available since v3.1._\\n     */\\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\\n        require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n        require(isContract(target), \\\"Address: call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n        return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a static call.\\n     *\\n     * _Available since v3.3._\\n     */\\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\\n        require(isContract(target), \\\"Address: static call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.staticcall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n        return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n    }\\n\\n    /**\\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n     * but performing a delegate call.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\\n        require(isContract(target), \\\"Address: delegate call to non-contract\\\");\\n\\n        // solhint-disable-next-line avoid-low-level-calls\\n        (bool success, bytes memory returndata) = target.delegatecall(data);\\n        return _verifyCallResult(success, returndata, errorMessage);\\n    }\\n\\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\\n        if (success) {\\n            return returndata;\\n        } else {\\n            // Look for revert reason and bubble it up if present\\n            if (returndata.length > 0) {\\n                // The easiest way to bubble the revert reason is using memory via assembly\\n\\n                // solhint-disable-next-line no-inline-assembly\\n                assembly {\\n                    let returndata_size := mload(returndata)\\n                    revert(add(32, returndata), returndata_size)\\n                }\\n            } else {\\n                revert(errorMessage);\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\"},\"contracts/common/implementation/Lockable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\\n */\\ncontract Lockable {\\n    bool private _notEntered;\\n\\n    constructor() {\\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\\n        // refund coming into effect.\\n        _notEntered = true;\\n    }\\n\\n    /**\\n     * @dev Prevents a contract from calling itself, directly or indirectly.\\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\\n     * function that does the actual state modification.\\n     */\\n    modifier nonReentrant() {\\n        _preEntranceCheck();\\n        _preEntranceSet();\\n        _;\\n        _postEntranceReset();\\n    }\\n\\n    /**\\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\\n     */\\n    modifier nonReentrantView() {\\n        _preEntranceCheck();\\n        _;\\n    }\\n\\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\\n    // then call `_postEntranceReset()`.\\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\\n    function _preEntranceCheck() internal view {\\n        // On the first call to nonReentrant, _notEntered will be true\\n        require(_notEntered, \\\"ReentrancyGuard: reentrant call\\\");\\n    }\\n\\n    function _preEntranceSet() internal {\\n        // Any calls to nonReentrant after this point will fail\\n        _notEntered = false;\\n    }\\n\\n    function _postEntranceReset() internal {\\n        // By storing the original value once again, a refund is triggered (see\\n        // https://eips.ethereum.org/EIPS/eip-2200)\\n        _notEntered = true;\\n    }\\n}\\n\",\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Testable.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"./Timer.sol\\\";\\n\\n/**\\n * @title Base class that provides time overrides, but only if being run in test mode.\\n */\\nabstract contract Testable {\\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\\n    // Note: this variable should be set on construction and never modified.\\n    address public timerAddress;\\n\\n    /**\\n     * @notice Constructs the Testable contract. Called by child contracts.\\n     * @param _timerAddress Contract that stores the current time in a testing environment.\\n     * Must be set to 0x0 for production environments that use live time.\\n     */\\n    constructor(address _timerAddress) {\\n        timerAddress = _timerAddress;\\n    }\\n\\n    /**\\n     * @notice Reverts if not running in test mode.\\n     */\\n    modifier onlyIfTest {\\n        require(timerAddress != address(0x0));\\n        _;\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set current Testable time to.\\n     */\\n    function setCurrentTime(uint256 time) external onlyIfTest {\\n        Timer(timerAddress).setCurrentTime(time);\\n    }\\n\\n    /**\\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\\n     * Otherwise, it will return the block timestamp.\\n     * @return uint for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view virtual returns (uint256) {\\n        if (timerAddress != address(0x0)) {\\n            return Timer(timerAddress).getCurrentTime();\\n        } else {\\n            return block.timestamp; // solhint-disable-line not-rely-on-time\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\"},\"contracts/common/implementation/Timer.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Universal store of current contract time for testing environments.\\n */\\ncontract Timer {\\n    uint256 private currentTime;\\n\\n    constructor() {\\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\\n    }\\n\\n    /**\\n     * @notice Sets the current time.\\n     * @dev Will revert if not running in test mode.\\n     * @param time timestamp to set `currentTime` to.\\n     */\\n    function setCurrentTime(uint256 time) external {\\n        currentTime = time;\\n    }\\n\\n    /**\\n     * @notice Gets the currentTime variable set in the Timer.\\n     * @return uint256 for the current Testable timestamp.\\n     */\\n    function getCurrentTime() public view returns (uint256) {\\n        return currentTime;\\n    }\\n}\\n\",\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/BridgeDepositBox.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../common/implementation/Testable.sol\\\";\\nimport \\\"../common/implementation/Lockable.sol\\\";\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\\\";\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\ninterface TokenLike {\\n    function balanceOf(address guy) external returns (uint256 wad);\\n}\\n\\ninterface WETH9Like {\\n    function deposit() external payable;\\n\\n    function withdraw(uint256 wad) external;\\n}\\n\\n/**\\n * @title OVM Bridge Deposit Box.\\n * @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system.\\n */\\n\\nabstract contract BridgeDepositBox is Testable, Lockable {\\n    using SafeERC20 for IERC20;\\n    /*************************************\\n     *  OVM DEPOSIT BOX DATA STRUCTURES  *\\n     *************************************/\\n\\n    // ChainID of the L2 this deposit box is deployed on.\\n    uint256 public chainId;\\n\\n    // Address of WETH on L1. If the deposited token maps to this L1 token then wrap ETH to WETH on the users behalf.\\n    address public l1Weth;\\n\\n    // Track the total number of deposits. Used as a unique identifier for bridged transfers.\\n    uint256 public numberOfDeposits;\\n\\n    struct L2TokenRelationships {\\n        address l1Token;\\n        address l1BridgePool;\\n        uint64 lastBridgeTime;\\n        bool depositsEnabled;\\n    }\\n\\n    // Mapping of whitelisted L2Token to L2TokenRelationships. Contains L1 TokenAddress and the last time this token\\n    // type was bridged. Used to rate limit bridging actions to rate limit withdraws to L1.\\n    mapping(address => L2TokenRelationships) public whitelistedTokens;\\n\\n    // Minimum time that must elapse between bridging actions for a given token. Used to rate limit bridging back to L1.\\n    uint64 public minimumBridgingDelay;\\n\\n    /****************************************\\n     *                EVENTS                *\\n     ****************************************/\\n\\n    event SetMinimumBridgingDelay(uint64 newMinimumBridgingDelay);\\n    event WhitelistToken(address l1Token, address l2Token, uint64 lastBridgeTime, address bridgePool);\\n    event DepositsEnabled(address l2Token, bool depositsEnabled);\\n    event FundsDeposited(\\n        uint256 chainId,\\n        uint256 depositId,\\n        address l1Recipient,\\n        address l2Sender,\\n        address l1Token,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    );\\n    event TokensBridged(address indexed l2Token, uint256 numberOfTokensBridged, uint256 l1Gas, address indexed caller);\\n\\n    /****************************************\\n     *               MODIFIERS              *\\n     ****************************************/\\n\\n    modifier onlyIfDepositsEnabled(address l2Token) {\\n        require(whitelistedTokens[l2Token].depositsEnabled, \\\"Contract is disabled\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Construct the Bridge Deposit Box\\n     * @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\\n     * @param _chainId Chain identifier for the Bridge deposit box.\\n     * @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\\n     * @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production.\\n     */\\n    constructor(\\n        uint64 _minimumBridgingDelay,\\n        uint256 _chainId,\\n        address _l1Weth,\\n        address timerAddress\\n    ) Testable(timerAddress) {\\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\\n        chainId = _chainId;\\n        l1Weth = _l1Weth;\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\\n     * @param newMinimumBridgingDelay the new minimum delay.\\n     */\\n    function _setMinimumBridgingDelay(uint64 newMinimumBridgingDelay) internal {\\n        minimumBridgingDelay = newMinimumBridgingDelay;\\n        emit SetMinimumBridgingDelay(minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function _whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) internal {\\n        whitelistedTokens[l2Token] = L2TokenRelationships({\\n            l1Token: l1Token,\\n            l1BridgePool: l1BridgePool,\\n            lastBridgeTime: uint64(getCurrentTime()),\\n            depositsEnabled: true\\n        });\\n\\n        emit WhitelistToken(l1Token, l2Token, uint64(getCurrentTime()), l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @param l2Token address of L2 token to enable/disable deposits for.\\n     * @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function _setEnableDeposits(address l2Token, bool depositsEnabled) internal {\\n        whitelistedTokens[l2Token].depositsEnabled = depositsEnabled;\\n        emit DepositsEnabled(l2Token, depositsEnabled);\\n    }\\n\\n    function bridgeTokens(address l2Token, uint32 l2Gas) public virtual;\\n\\n    /**************************************\\n     *         DEPOSITOR FUNCTIONS        *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by L2 user to bridge funds between L2 and L1.\\n     * @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\\n     * @dev The caller must first approve this contract to spend `amount` of `l2Token`.\\n     * @param l1Recipient L1 address that should receive the tokens.\\n     * @param l2Token L2 token to deposit.\\n     * @param amount How many L2 tokens should be deposited.\\n     * @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\\n     * @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\\n     * @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\\n     *    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time.\\n     */\\n    function deposit(\\n        address l1Recipient,\\n        address l2Token,\\n        uint256 amount,\\n        uint64 slowRelayFeePct,\\n        uint64 instantRelayFeePct,\\n        uint64 quoteTimestamp\\n    ) public payable onlyIfDepositsEnabled(l2Token) nonReentrant() {\\n        require(isWhitelistToken(l2Token), \\\"deposit token not whitelisted\\\");\\n        // We limit the sum of slow and instant relay fees to 50% to prevent the user spending all their funds on fees.\\n        // The realizedLPFeePct on L1 is limited to 50% so the total spent on fees does not ever exceed 100%.\\n        require(slowRelayFeePct <= 0.25e18, \\\"slowRelayFeePct must be <= 25%\\\");\\n        require(instantRelayFeePct <= 0.25e18, \\\"instantRelayFeePct must be <= 25%\\\");\\n\\n        // Note that the OVM's notion of `block.timestamp` is different to the main ethereum L1 EVM. The OVM timestamp\\n        // corresponds to the L1 timestamp of the last confirmed L1 \\u21d2 L2 transaction. The quoteTime must be within 10\\n        // mins of the current time to allow for this variance.\\n        // Note also that `quoteTimestamp` cannot be less than 10 minutes otherwise the following arithmetic can result\\n        // in underflow. This isn't a problem as the deposit will revert, but the error might be unexpected for clients.\\n        // Consider requiring `quoteTimestamp >= 10 minutes`.\\n        require(\\n            getCurrentTime() >= quoteTimestamp - 10 minutes && getCurrentTime() <= quoteTimestamp + 10 minutes,\\n            \\\"deposit mined after deadline\\\"\\n        );\\n        // If the address of the L1 token is the l1Weth and there is a msg.value with the transaction then the user\\n        // is sending ETH. In this case, the ETH should be deposited to WETH, which is then bridged to L1.\\n        if (whitelistedTokens[l2Token].l1Token == l1Weth && msg.value > 0) {\\n            require(msg.value == amount, \\\"msg.value must match amount\\\");\\n            WETH9Like(address(l2Token)).deposit{ value: msg.value }();\\n        }\\n        // Else, it is a normal ERC20. In this case pull the token from the users wallet as per normal.\\n        // Note: this includes the case where the L2 user has WETH (already wrapped ETH) and wants to bridge them. In\\n        // this case the msg.value will be set to 0, indicating a \\\"normal\\\" ERC20 bridging action.\\n        else IERC20(l2Token).safeTransferFrom(msg.sender, address(this), amount);\\n\\n        emit FundsDeposited(\\n            chainId,\\n            numberOfDeposits, // depositId: the current number of deposits acts as a deposit ID (nonce).\\n            l1Recipient,\\n            msg.sender,\\n            whitelistedTokens[l2Token].l1Token,\\n            l2Token,\\n            amount,\\n            slowRelayFeePct,\\n            instantRelayFeePct,\\n            quoteTimestamp\\n        );\\n\\n        numberOfDeposits += 1;\\n    }\\n\\n    /**************************************\\n     *           VIEW FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Checks if a given L2 token is whitelisted.\\n     * @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\\n     * the token has been whitelisted.\\n     * @param l2Token L2 token to check against the whitelist.\\n     * @return true if token is whitelised.\\n     */\\n    function isWhitelistToken(address l2Token) public view returns (bool) {\\n        return whitelistedTokens[l2Token].lastBridgeTime != 0;\\n    }\\n\\n    function _hasEnoughTimeElapsedToBridge(address l2Token) internal view returns (bool) {\\n        return getCurrentTime() > whitelistedTokens[l2Token].lastBridgeTime + minimumBridgingDelay;\\n    }\\n\\n    /**\\n     * @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\\n     * balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\\n     * and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\\n     * @dev This function is also public for caller convenience.\\n     * @param l2Token L2 token to check bridging status.\\n     * @return true if token is whitelised and enough time has elapsed since the previous bridge.\\n     */\\n    function canBridge(address l2Token) public view returns (bool) {\\n        return isWhitelistToken(l2Token) && _hasEnoughTimeElapsedToBridge(l2Token);\\n    }\\n}\\n\",\"keccak256\":\"0x4ee97e2948d55ffd8a44769e452ee5e8de4fcb073388aef12a4c4e53bc99af21\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/test/BridgeDepositBoxMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../BridgeDepositBox.sol\\\";\\n\\ncontract BridgeDepositBoxMock is BridgeDepositBox {\\n    using SafeERC20 for IERC20;\\n\\n    // Address of the L1 contract that acts as the owner of this Bridge deposit box.\\n    address public bridgeAdmin;\\n\\n    event SetBridgeAdmin(address newBridgeAdmin);\\n\\n    modifier onlyBridgeAdmin() {\\n        require(msg.sender == bridgeAdmin, \\\"Not bridge admin\\\");\\n        _;\\n    }\\n\\n    /**\\n     * @notice Ownable bridge deposit box. Used for testing environments that don't have specific l1/l2 messaging logic.\\n     */\\n\\n    constructor(\\n        address _bridgeAdmin,\\n        uint64 _minimumBridgingDelay,\\n        address _l1Weth,\\n        address timerAddress\\n    ) BridgeDepositBox(_minimumBridgingDelay, 10, _l1Weth, timerAddress) {\\n        _setBridgeAdmin(_bridgeAdmin);\\n    }\\n\\n    /**************************************\\n     *          ADMIN FUNCTIONS           *\\n     **************************************/\\n\\n    /**\\n     * @notice Changes the L1 administrator associated with this L2 deposit deposit box.\\n     * @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\\n     * @param _bridgeAdmin address of the new L1 admin contract.\\n     */\\n    function setCrossDomainAdmin(address _bridgeAdmin) public onlyBridgeAdmin() {\\n        _setBridgeAdmin(_bridgeAdmin);\\n    }\\n\\n    /**\\n     * @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\\n     * @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\\n     * @param _minimumBridgingDelay the new minimum delay.\\n     */\\n    function setMinimumBridgingDelay(uint64 _minimumBridgingDelay) public onlyBridgeAdmin() {\\n        _setMinimumBridgingDelay(_minimumBridgingDelay);\\n    }\\n\\n    /**\\n     * @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\\n     * @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\\n     * @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\\n     * @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\\n     * @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token.\\n     */\\n    function whitelistToken(\\n        address l1Token,\\n        address l2Token,\\n        address l1BridgePool\\n    ) public onlyBridgeAdmin() {\\n        _whitelistToken(l1Token, l2Token, l1BridgePool);\\n    }\\n\\n    /**\\n     * @notice L1 owner can enable/disable deposits for a whitelisted token.\\n     * @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\\n     * @param _l2Token address of L2 token to enable/disable deposits for.\\n     * @param _depositsEnabled bool to set if the deposit box should accept/reject deposits.\\n     */\\n    function setEnableDeposits(address _l2Token, bool _depositsEnabled) public onlyBridgeAdmin() {\\n        _setEnableDeposits(_l2Token, _depositsEnabled);\\n    }\\n\\n    /**************************************\\n     *          RELAYER FUNCTIONS         *\\n     **************************************/\\n\\n    /**\\n     * @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\\n     *      token bridge, to the L1 Withdraw box.\\n     * @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\\n     *      on L1 as the finalization of a L2->L1 tx is quite expensive.\\n     * @param l2Token L2 token to relay over the canonical bridge.\\n     * @param l1Gas Unused by optimism, but included for potential forward compatibility considerations.\\n     */\\n    function bridgeTokens(address l2Token, uint32 l1Gas) public override nonReentrant() {\\n        uint256 bridgeDepositBoxBalance = TokenLike(l2Token).balanceOf(address(this));\\n        require(bridgeDepositBoxBalance > 0, \\\"can't bridge zero tokens\\\");\\n        require(canBridge(l2Token), \\\"non-whitelisted token or last bridge too recent\\\");\\n\\n        whitelistedTokens[l2Token].lastBridgeTime = uint64(getCurrentTime());\\n\\n        // Note in this test contract we simply send the l2 tokens to the l1BridgePool.\\n        IERC20(l2Token).safeTransfer(whitelistedTokens[l2Token].l1BridgePool, bridgeDepositBoxBalance);\\n\\n        emit TokensBridged(l2Token, bridgeDepositBoxBalance, l1Gas, msg.sender);\\n    }\\n\\n    /**************************************\\n     *         INTERNAL FUNCTIONS         *\\n     **************************************/\\n\\n    function _setBridgeAdmin(address _l1BridgeAdmin) internal {\\n        require(_l1BridgeAdmin != address(0), \\\"Bad bridge router address\\\");\\n        bridgeAdmin = _l1BridgeAdmin;\\n        emit SetBridgeAdmin(bridgeAdmin);\\n    }\\n}\\n\",\"keccak256\":\"0xa775001eef52bd3bf671558b96476edc448a5793c7ab1a1039ce46c418f96283\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [
                            {
                                "astId": 5530,
                                "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                "label": "timerAddress",
                                "offset": 0,
                                "slot": "0",
                                "type": "t_address"
                            },
                            {
                                "astId": 5381,
                                "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                "label": "_notEntered",
                                "offset": 20,
                                "slot": "0",
                                "type": "t_bool"
                            },
                            {
                                "astId": 8260,
                                "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                "label": "chainId",
                                "offset": 0,
                                "slot": "1",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8262,
                                "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                "label": "l1Weth",
                                "offset": 0,
                                "slot": "2",
                                "type": "t_address"
                            },
                            {
                                "astId": 8264,
                                "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                "label": "numberOfDeposits",
                                "offset": 0,
                                "slot": "3",
                                "type": "t_uint256"
                            },
                            {
                                "astId": 8278,
                                "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                "label": "whitelistedTokens",
                                "offset": 0,
                                "slot": "4",
                                "type": "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)"
                            },
                            {
                                "astId": 8280,
                                "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                "label": "minimumBridgingDelay",
                                "offset": 0,
                                "slot": "5",
                                "type": "t_uint64"
                            },
                            {
                                "astId": 9880,
                                "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                "label": "bridgeAdmin",
                                "offset": 8,
                                "slot": "5",
                                "type": "t_address"
                            }
                        ],
                        "types": {
                            "t_address": {
                                "encoding": "inplace",
                                "label": "address",
                                "numberOfBytes": "20"
                            },
                            "t_bool": {
                                "encoding": "inplace",
                                "label": "bool",
                                "numberOfBytes": "1"
                            },
                            "t_mapping(t_address,t_struct(L2TokenRelationships)8273_storage)": {
                                "encoding": "mapping",
                                "key": "t_address",
                                "label": "mapping(address => struct BridgeDepositBox.L2TokenRelationships)",
                                "numberOfBytes": "32",
                                "value": "t_struct(L2TokenRelationships)8273_storage"
                            },
                            "t_struct(L2TokenRelationships)8273_storage": {
                                "encoding": "inplace",
                                "label": "struct BridgeDepositBox.L2TokenRelationships",
                                "members": [
                                    {
                                        "astId": 8266,
                                        "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                        "label": "l1Token",
                                        "offset": 0,
                                        "slot": "0",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8268,
                                        "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                        "label": "l1BridgePool",
                                        "offset": 0,
                                        "slot": "1",
                                        "type": "t_address"
                                    },
                                    {
                                        "astId": 8270,
                                        "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                        "label": "lastBridgeTime",
                                        "offset": 20,
                                        "slot": "1",
                                        "type": "t_uint64"
                                    },
                                    {
                                        "astId": 8272,
                                        "contract": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol:BridgeDepositBoxMock",
                                        "label": "depositsEnabled",
                                        "offset": 28,
                                        "slot": "1",
                                        "type": "t_bool"
                                    }
                                ],
                                "numberOfBytes": "64"
                            },
                            "t_uint256": {
                                "encoding": "inplace",
                                "label": "uint256",
                                "numberOfBytes": "32"
                            },
                            "t_uint64": {
                                "encoding": "inplace",
                                "label": "uint64",
                                "numberOfBytes": "8"
                            }
                        }
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "bridgeTokens(address,uint32)": {
                                "notice": "Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical      token bridge, to the L1 Withdraw box."
                            },
                            "canBridge(address)": {
                                "notice": "Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted)."
                            },
                            "constructor": {
                                "notice": "Ownable bridge deposit box. Used for testing environments that don't have specific l1/l2 messaging logic."
                            },
                            "deposit(address,address,uint256,uint64,uint64,uint64)": {
                                "notice": "Called by L2 user to bridge funds between L2 and L1."
                            },
                            "getCurrentTime()": {
                                "notice": "Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp."
                            },
                            "isWhitelistToken(address)": {
                                "notice": "Checks if a given L2 token is whitelisted."
                            },
                            "setCrossDomainAdmin(address)": {
                                "notice": "Changes the L1 administrator associated with this L2 deposit deposit box."
                            },
                            "setCurrentTime(uint256)": {
                                "notice": "Sets the current time."
                            },
                            "setEnableDeposits(address,bool)": {
                                "notice": "L1 owner can enable/disable deposits for a whitelisted token."
                            },
                            "setMinimumBridgingDelay(uint64)": {
                                "notice": "Changes the minimum time in seconds that must elapse between withdraws from L2->L1."
                            },
                            "whitelistToken(address,address,address)": {
                                "notice": "Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/test/MessengerMock.sol": {
                "MessengerMock": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "target",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "gasLimit",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "gasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "message",
                                    "type": "bytes"
                                }
                            ],
                            "name": "RelayedMessage",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "target",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasLimit",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "gasPrice",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "message",
                                    "type": "bytes"
                                }
                            ],
                            "name": "relayMessage",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": {
                                "params": {
                                    "gasLimit": "The gasLimit for the receipt of the message on L2.",
                                    "gasPrice": "Gas price bid for L2 transaction.",
                                    "message": "The data to send to the target (usually calldata to a function with  `onlyFromCrossDomainAccount()`)",
                                    "target": "The intended recipient on L2."
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b506102ba806100206000396000f3fe60806040526004361061001e5760003560e01c80639e353c7014610023575b600080fd5b6100366100313660046100eb565b610038565b005b8673ffffffffffffffffffffffffffffffffffffffff167f8ebab515032263ff7c9518ea7e5ed848d0331a7a46c999129f393bb28e8fa52c85858460405161008293929190610202565b60405180910390a250505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146100b757600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080600080600060e0888a03121561010657600080fd5b61010f88610093565b965061011d60208901610093565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff8082111561015657600080fd5b818a0191508a601f83011261016a57600080fd5b81358181111561017c5761017c6100bc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101c2576101c26100bc565b816040528281528d60208487010111156101db57600080fd5b82602086016020830137600060208483010152809550505050505092959891949750929550565b83815260006020848184015260606040840152835180606085015260005b8181101561023c57858101830151858201608001528201610220565b8181111561024e576000608083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016080019594505050505056fea2646970667358221220c20ec9944343b6e2485505386c2e29d12abbdf467208756b2f696fcf4314d30064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BA DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E353C70 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0xEB JUMP JUMPDEST PUSH2 0x38 JUMP JUMPDEST STOP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8EBAB515032263FF7C9518EA7E5ED848D0331A7A46C999129F393BB28E8FA52C DUP6 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x82 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x202 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x106 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10F DUP9 PUSH2 0x93 JUMP JUMPDEST SWAP7 POP PUSH2 0x11D PUSH1 0x20 DUP10 ADD PUSH2 0x93 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x17C JUMPI PUSH2 0x17C PUSH2 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1C2 JUMPI PUSH2 0x1C2 PUSH2 0xBC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP14 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP5 DUP2 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x23C JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x80 ADD MSTORE DUP3 ADD PUSH2 0x220 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x80 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 0xE 0xC9 SWAP5 NUMBER NUMBER 0xB6 0xE2 BASEFEE SSTORE SDIV CODESIZE PUSH13 0x2E29D12ABBDF467208756B2F69 PUSH16 0xCF4314D30064736F6C63430008090033 ",
                            "sourceMap": "257:819:58:-:0;;;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@relayMessage_10116": {
                                    "entryPoint": 56,
                                    "id": 10116,
                                    "parameterSlots": 7,
                                    "returnSlots": 0
                                },
                                "abi_decode_address": {
                                    "entryPoint": 147,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr": {
                                    "entryPoint": 235,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 7
                                },
                                "abi_encode_tuple_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 514,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 188,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:2614:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "63:147:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "73:29:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "95:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "82:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "82:20:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "73:5:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "188:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "197:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "200:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "190:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "190:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "190:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "124:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "135:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "142:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "131:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "131:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "121:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "121:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "114:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "114:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "111:93:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "42:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "53:5:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:196:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "247:152:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "264:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "267:77:66",
                                                                        "type": "",
                                                                        "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "257:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "257:88:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "257:88:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "361:1:66",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "364:4:66",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "354:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "354:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "354:15:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "385:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "388:4:66",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "378:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "378:15:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "378:15:66"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "215:184:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "585:1223:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "632:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "641:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "644:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "634:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "634:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "634:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "606:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "615:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "602:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "602:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "627:3:66",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "598:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "598:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "595:53:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "657:39:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "686:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "667:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "667:29:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "657:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "705:48:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "738:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "749:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "734:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "734:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "715:18:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "715:38:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "705:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "762:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "789:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "800:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "785:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "785:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "772:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "772:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "762:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "813:42:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "840:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "851:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "836:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "836:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "823:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "823:32:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "813:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "864:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "891:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "902:3:66",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "887:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "887:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "874:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "874:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "864:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "916:43:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "943:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "954:3:66",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "939:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "939:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "926:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "926:33:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "916:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "968:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "999:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1010:3:66",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "995:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "995:19:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "982:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "982:33:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "972:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1024:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1034:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1028:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1079:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1088:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1091:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1081:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1081:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1081:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1067:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1075:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1064:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1064:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1061:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1104:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1118:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1129:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1114:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1114:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1108:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1184:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1193:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1196:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1186:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1186:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1186:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1163:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1167:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1159:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1159:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1174:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1155:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1155:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1148:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1148:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1145:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1209:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1232:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1219:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1219:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1213:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1258:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1260:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1260:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1260:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1250:2:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1254:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1247:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1247:10:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1244:36:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1289:76:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1299:66:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1293:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1374:23:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1394:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1388:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1388:9:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1378:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1406:71:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1428:6:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "1452:2:66"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1456:4:66",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1448:3:66"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1448:13:66"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1463:2:66"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1444:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1444:22:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1468:2:66",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1440:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1440:31:66"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1473:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1436:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1436:40:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1424:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1424:53:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1410:10:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1536:22:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1538:16:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1538:18:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1538:18:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1495:10:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1507:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1492:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1492:18:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1515:10:66"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1527:6:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1512:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1512:22:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1489:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1489:46:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1486:72:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1574:2:66",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1578:10:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1567:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1567:22:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1567:22:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1605:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1613:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1598:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1598:18:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1598:18:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1662:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1671:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1674:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1664:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1664:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1664:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1639:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1643:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1635:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1635:11:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1648:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1631:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1631:20:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1653:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1628:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1628:33:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1625:53:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1704:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1712:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1700:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1700:15:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1721:2:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1725:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1717:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1717:11:66"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1730:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1687:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1687:46:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1687:46:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "memPtr",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1757:6:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1765:2:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1753:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1753:15:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1770:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1749:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1749:24:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1775:1:66",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1742:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1742:35:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1742:35:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1786:16:66",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1796:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1786:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "503:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "514:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "526:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "534:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "542:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "550:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "558:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "566:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "574:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "404:1404:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1988:624:66",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2005:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2016:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1998:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1998:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1998:25:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2032:12:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2042:2:66",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2036:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2064:9:66"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2075:2:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2060:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2060:18:66"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2080:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2053:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2053:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2053:34:66"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2107:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2118:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2103:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2103:18:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2123:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2096:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2096:30:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2096:30:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2135:27:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2155:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2149:5:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2149:13:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2139:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2182:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2193:2:66",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2178:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2178:18:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2198:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2171:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2171:34:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2171:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2214:10:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "2223:1:66",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2218:1:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2283:91:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2312:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2323:1:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2308:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2308:17:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "2327:3:66",
                                                                                            "type": "",
                                                                                            "value": "128"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2304:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2304:27:66"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "value2",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "2347:6:66"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "2355:1:66"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "2343:3:66"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "2343:14:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2359:2:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2339:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2339:23:66"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2333:5:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2333:30:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2297:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2297:67:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2297:67:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2244:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2247:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2241:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2241:13:66"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2255:19:66",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2257:15:66",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2266:1:66"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2269:2:66"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2262:3:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2262:10:66"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2257:1:66"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2237:3:66",
                                                                "statements": []
                                                            },
                                                            "src": "2233:141:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2408:67:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2437:9:66"
                                                                                                },
                                                                                                {
                                                                                                    "name": "length",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2448:6:66"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2433:3:66"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "2433:22:66"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "2457:3:66",
                                                                                            "type": "",
                                                                                            "value": "128"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2429:3:66"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2429:32:66"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2463:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2422:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2422:43:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2422:43:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2389:1:66"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2392:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2386:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2386:13:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2383:92:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2484:122:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2500:9:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2519:6:66"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "2527:2:66",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2515:3:66"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2515:15:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2532:66:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2511:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2511:88:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2496:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2496:104:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2602:3:66",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2492:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2492:114:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2484:4:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1941:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1952:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1960:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1968:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1979:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1813:799:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        let offset := calldataload(add(headStart, 192))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value6 := memPtr\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        let _1 := 32\n        mstore(add(headStart, _1), value1)\n        mstore(add(headStart, 64), 96)\n        let length := mload(value2)\n        mstore(add(headStart, 96), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 128), mload(add(add(value2, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 128), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 128)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "60806040526004361061001e5760003560e01c80639e353c7014610023575b600080fd5b6100366100313660046100eb565b610038565b005b8673ffffffffffffffffffffffffffffffffffffffff167f8ebab515032263ff7c9518ea7e5ed848d0331a7a46c999129f393bb28e8fa52c85858460405161008293929190610202565b60405180910390a250505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146100b757600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080600080600060e0888a03121561010657600080fd5b61010f88610093565b965061011d60208901610093565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff8082111561015657600080fd5b818a0191508a601f83011261016a57600080fd5b81358181111561017c5761017c6100bc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101c2576101c26100bc565b816040528281528d60208487010111156101db57600080fd5b82602086016020830137600060208483010152809550505050505092959891949750929550565b83815260006020848184015260606040840152835180606085015260005b8181101561023c57858101830151858201608001528201610220565b8181111561024e576000608083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016080019594505050505056fea2646970667358221220c20ec9944343b6e2485505386c2e29d12abbdf467208756b2f696fcf4314d30064736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E353C70 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0xEB JUMP JUMPDEST PUSH2 0x38 JUMP JUMPDEST STOP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8EBAB515032263FF7C9518EA7E5ED848D0331A7A46C999129F393BB28E8FA52C DUP6 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0x82 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x202 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x106 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10F DUP9 PUSH2 0x93 JUMP JUMPDEST SWAP7 POP PUSH2 0x11D PUSH1 0x20 DUP10 ADD PUSH2 0x93 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP DUP11 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x16A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x17C JUMPI PUSH2 0x17C PUSH2 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x1C2 JUMPI PUSH2 0x1C2 PUSH2 0xBC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP14 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP5 DUP2 DUP5 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP5 ADD MSTORE DUP4 MLOAD DUP1 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x23C JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x80 ADD MSTORE DUP3 ADD PUSH2 0x220 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 PUSH1 0x80 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x80 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC2 0xE 0xC9 SWAP5 NUMBER NUMBER 0xB6 0xE2 BASEFEE SSTORE SDIV CODESIZE PUSH13 0x2E29D12ABBDF467208756B2F69 PUSH16 0xCF4314D30064736F6C63430008090033 ",
                            "sourceMap": "257:819:58:-:0;;;;;;;;;;;;;;;;;;;;;790:284;;;;;;:::i;:::-;;:::i;:::-;;;1031:6;1016:51;;;1039:8;1049;1059:7;1016:51;;;;;;;;:::i;:::-;;;;;;;;790:284;;;;;;;:::o;14:196:66:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:184::-;267:77;264:1;257:88;364:4;361:1;354:15;388:4;385:1;378:15;404:1404;526:6;534;542;550;558;566;574;627:3;615:9;606:7;602:23;598:33;595:53;;;644:1;641;634:12;595:53;667:29;686:9;667:29;:::i;:::-;657:39;;715:38;749:2;738:9;734:18;715:38;:::i;:::-;705:48;;800:2;789:9;785:18;772:32;762:42;;851:2;840:9;836:18;823:32;813:42;;902:3;891:9;887:19;874:33;864:43;;954:3;943:9;939:19;926:33;916:43;;1010:3;999:9;995:19;982:33;1034:18;1075:2;1067:6;1064:14;1061:34;;;1091:1;1088;1081:12;1061:34;1129:6;1118:9;1114:22;1104:32;;1174:7;1167:4;1163:2;1159:13;1155:27;1145:55;;1196:1;1193;1186:12;1145:55;1232:2;1219:16;1254:2;1250;1247:10;1244:36;;;1260:18;;:::i;:::-;1394:2;1388:9;1456:4;1448:13;;1299:66;1444:22;;;1468:2;1440:31;1436:40;1424:53;;;1492:18;;;1512:22;;;1489:46;1486:72;;;1538:18;;:::i;:::-;1578:10;1574:2;1567:22;1613:2;1605:6;1598:18;1653:7;1648:2;1643;1639;1635:11;1631:20;1628:33;1625:53;;;1674:1;1671;1664:12;1625:53;1730:2;1725;1721;1717:11;1712:2;1704:6;1700:15;1687:46;1775:1;1770:2;1765;1757:6;1753:15;1749:24;1742:35;1796:6;1786:16;;;;;;;404:1404;;;;;;;;;;:::o;1813:799::-;2016:6;2005:9;1998:25;1979:4;2042:2;2080:6;2075:2;2064:9;2060:18;2053:34;2123:2;2118;2107:9;2103:18;2096:30;2155:6;2149:13;2198:6;2193:2;2182:9;2178:18;2171:34;2223:1;2233:141;2247:6;2244:1;2241:13;2233:141;;;2343:14;;;2339:23;;2333:30;2308:17;;;2327:3;2304:27;2297:67;2262:10;;2233:141;;;2392:6;2389:1;2386:13;2383:92;;;2463:1;2457:3;2448:6;2437:9;2433:22;2429:32;2422:43;2383:92;-1:-1:-1;2527:2:66;2515:15;2532:66;2511:88;2496:104;;;;2602:3;2492:114;;1813:799;-1:-1:-1;;;;;1813:799:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "139600",
                                "executionCost": "183",
                                "totalCost": "139783"
                            },
                            "external": {
                                "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": "infinite"
                            }
                        },
                        "methodIdentifiers": {
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": "9e353c70"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"RelayedMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"gasLimit\":\"The gasLimit for the receipt of the message on L2.\",\"gasPrice\":\"Gas price bid for L2 transaction.\",\"message\":\"The data to send to the target (usually calldata to a function with  `onlyFromCrossDomainAccount()`)\",\"target\":\"The intended recipient on L2.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Sends a message to an account on L2.\"}},\"notice\":\"Implements the `relayMessage` trivially so that we can test whether the BridgeAdmin correctly calls into this contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/test/MessengerMock.sol\":\"MessengerMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/insured-bridge/interfaces/MessengerInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @notice Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will\\n * differ for each L2.\\n */\\ninterface MessengerInterface {\\n    function relayMessage(\\n        address target,\\n        address userToRefund,\\n        uint256 l1CallValue,\\n        uint256 gasLimit,\\n        uint256 gasPrice,\\n        uint256 maxSubmissionCost,\\n        bytes memory message\\n    ) external payable;\\n}\\n\",\"keccak256\":\"0xa20bf4ed8f80d1ddd3cc81b1a49bb2bcd8dd4ed00e1c7ade3fd4edaf5b4f13b2\",\"license\":\"AGPL-3.0-only\"},\"contracts/insured-bridge/test/MessengerMock.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"../interfaces/MessengerInterface.sol\\\";\\n\\n/**\\n * @notice Implements the `relayMessage` trivially so that we can test whether the BridgeAdmin correctly calls into this\\n * contract.\\n */\\ncontract MessengerMock is MessengerInterface {\\n    event RelayedMessage(address indexed target, uint256 gasLimit, uint256 gasPrice, bytes message);\\n\\n    /**\\n     * @notice Sends a message to an account on L2.\\n     * @param target The intended recipient on L2.\\n     * @param gasLimit The gasLimit for the receipt of the message on L2.\\n     * @param gasPrice Gas price bid for L2 transaction.\\n     * @param message The data to send to the target (usually calldata to a function with\\n     *  `onlyFromCrossDomainAccount()`)\\n     */\\n    function relayMessage(\\n        address target,\\n        address,\\n        uint256,\\n        uint256 gasLimit,\\n        uint256 gasPrice,\\n        uint256,\\n        bytes memory message\\n    ) external payable override {\\n        emit RelayedMessage(target, gasLimit, gasPrice, message);\\n    }\\n}\\n\",\"keccak256\":\"0xf7df5b25c08f74f0c8f9107ec21ba9f2526467b7fcf0b3bf490e7ea53c423412\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "relayMessage(address,address,uint256,uint256,uint256,uint256,bytes)": {
                                "notice": "Sends a message to an account on L2."
                            }
                        },
                        "notice": "Implements the `relayMessage` trivially so that we can test whether the BridgeAdmin correctly calls into this contract.",
                        "version": 1
                    }
                }
            },
            "contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol": {
                "OVM_L1CrossDomainMessengerMock": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "msgHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "FailedRelayedMessage",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "msgHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "RelayedMessage",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "target",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "sender",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes",
                                    "name": "message",
                                    "type": "bytes"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "messageNonce",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "gasLimit",
                                    "type": "uint256"
                                }
                            ],
                            "name": "SentMessage",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_target",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "_message",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "_gasLimit",
                                    "type": "uint32"
                                }
                            ],
                            "name": "sendMessage",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "xDomainMessageSender",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "sendMessage(address,bytes,uint32)": {
                                "params": {
                                    "_gasLimit": "Gas limit for the provided message.",
                                    "_message": "Message to send to the target.",
                                    "_target": "Target contract address."
                                }
                            }
                        },
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b50610154806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80633dbb202b1461003b5780636e296e4514610051575b600080fd5b61004f610049366004610064565b50505050565b005b6040805130815290519081900360200190f35b6000806000806060858703121561007a57600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461009e57600080fd5b9350602085013567ffffffffffffffff808211156100bb57600080fd5b818701915087601f8301126100cf57600080fd5b8135818111156100de57600080fd5b8860208285010111156100f057600080fd5b602083019550809450505050604085013563ffffffff8116811461011357600080fd5b93969295509093505056fea264697066735822122018cca4abecb288f169ab2d1be5f9e06f6b26532eaa560fbbee430dcff6348a1464736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x154 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3DBB202B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x6E296E45 EQ PUSH2 0x51 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x64 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP6 POP DUP1 SWAP5 POP POP POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xCC LOG4 0xAB 0xEC 0xB2 DUP9 CALL PUSH10 0xAB2D1BE5F9E06F6B2653 0x2E 0xAA JUMP 0xF 0xBB 0xEE NUMBER 0xD 0xCF 0xF6 CALLVALUE DUP11 EQ PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "102:390:59:-:0;;;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@sendMessage_10145": {
                                    "entryPoint": null,
                                    "id": 10145,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@xDomainMessageSender_10134": {
                                    "entryPoint": null,
                                    "id": 10134,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint32": {
                                    "entryPoint": 100,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 4
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:1207:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "136:838:66",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "182:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "191:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "194:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "184:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "184:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "184:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "157:7:66"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "166:9:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "153:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "153:23:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "178:2:66",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "149:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "149:32:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "146:52:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "207:36:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "233:9:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "220:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "220:23:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "211:5:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "329:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "338:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "341:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "331:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "331:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "331:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "265:5:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "276:5:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "283:42:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "272:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "272:54:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "262:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "262:65:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "255:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "255:73:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "252:93:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "354:15:66",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "364:5:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "354:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "378:46:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "409:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "420:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "405:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "405:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "392:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "392:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "382:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "433:28:66",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "443:18:66",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "437:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "488:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "497:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "500:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "490:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "490:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "490:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "476:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "484:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "473:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "473:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "470:34:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "513:32:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "527:9:66"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "538:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "523:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "523:22:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "517:2:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "593:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "602:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "605:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "595:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "595:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "595:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "572:2:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "576:4:66",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "568:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "568:13:66"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "583:7:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "564:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "564:27:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "557:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "557:35:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "554:55:66"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "618:30:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "645:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "632:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "632:16:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "622:6:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "675:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "684:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "687:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "677:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "677:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "677:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "663:6:66"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "671:2:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "660:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "660:14:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "657:34:66"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "741:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "750:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "753:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "743:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "743:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "743:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "714:2:66"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "718:6:66"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "710:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "710:15:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "727:2:66",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "706:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "706:24:66"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "732:7:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "703:2:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "703:37:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "700:57:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "766:21:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "780:2:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "784:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "776:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "776:11:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "766:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "796:16:66",
                                                            "value": {
                                                                "name": "length",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "806:6:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "796:6:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "821:47:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "853:9:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "864:2:66",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "849:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "849:18:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "836:12:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "836:32:66"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "825:7:66",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "926:16:66",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "935:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "938:1:66",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "928:6:66"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "928:12:66"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "928:12:66"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "890:7:66"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "903:7:66"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "912:10:66",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "899:3:66"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "899:24:66"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "887:2:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "887:37:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "880:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "880:45:66"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "877:65:66"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "951:17:66",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "961:7:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "951:6:66"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "78:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "89:7:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "101:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "109:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "117:6:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "125:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:960:66"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1080:125:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1090:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1102:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1113:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1098:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1098:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1090:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1132:9:66"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1147:6:66"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1155:42:66",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1143:3:66"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1143:55:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1125:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1125:74:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1125:74:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1049:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1060:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1071:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "979:226:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_uint32(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n        let value_1 := calldataload(add(headStart, 64))\n        if iszero(eq(value_1, and(value_1, 0xffffffff))) { revert(0, 0) }\n        value3 := value_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80633dbb202b1461003b5780636e296e4514610051575b600080fd5b61004f610049366004610064565b50505050565b005b6040805130815290519081900360200190f35b6000806000806060858703121561007a57600080fd5b843573ffffffffffffffffffffffffffffffffffffffff8116811461009e57600080fd5b9350602085013567ffffffffffffffff808211156100bb57600080fd5b818701915087601f8301126100cf57600080fd5b8135818111156100de57600080fd5b8860208285010111156100f057600080fd5b602083019550809450505050604085013563ffffffff8116811461011357600080fd5b93969295509093505056fea264697066735822122018cca4abecb288f169ab2d1be5f9e06f6b26532eaa560fbbee430dcff6348a1464736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3DBB202B EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x6E296E45 EQ PUSH2 0x51 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x64 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS DUP2 MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP6 POP DUP1 SWAP5 POP POP POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x113 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xCC LOG4 0xAB 0xEC 0xB2 DUP9 CALL PUSH10 0xAB2D1BE5F9E06F6B2653 0x2E 0xAA JUMP 0xF 0xBB 0xEE NUMBER 0xD 0xCF 0xF6 CALLVALUE DUP11 EQ PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "102:390:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;340:131;;;;;;:::i;:::-;;;;;;;;173:161;;;;322:4;1125:74:66;;173:161:59;;;;;;1113:2:66;173:161:59;;;14:960:66;101:6;109;117;125;178:2;166:9;157:7;153:23;149:32;146:52;;;194:1;191;184:12;146:52;233:9;220:23;283:42;276:5;272:54;265:5;262:65;252:93;;341:1;338;331:12;252:93;364:5;-1:-1:-1;420:2:66;405:18;;392:32;443:18;473:14;;;470:34;;;500:1;497;490:12;470:34;538:6;527:9;523:22;513:32;;583:7;576:4;572:2;568:13;564:27;554:55;;605:1;602;595:12;554:55;645:2;632:16;671:2;663:6;660:14;657:34;;;687:1;684;677:12;657:34;732:7;727:2;718:6;714:2;710:15;706:24;703:37;700:57;;;753:1;750;743:12;700:57;784:2;780;776:11;766:21;;806:6;796:16;;;;;864:2;853:9;849:18;836:32;912:10;903:7;899:24;890:7;887:37;877:65;;938:1;935;928:12;877:65;14:960;;;;-1:-1:-1;14:960:66;;-1:-1:-1;;14:960:66:o"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "68000",
                                "executionCost": "117",
                                "totalCost": "68117"
                            },
                            "external": {
                                "sendMessage(address,bytes,uint32)": "478",
                                "xDomainMessageSender()": "170"
                            }
                        },
                        "methodIdentifiers": {
                            "sendMessage(address,bytes,uint32)": "3dbb202b",
                            "xDomainMessageSender()": "6e296e45"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"FailedRelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"RelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_gasLimit\",\"type\":\"uint32\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xDomainMessageSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"sendMessage(address,bytes,uint32)\":{\"params\":{\"_gasLimit\":\"Gas limit for the provided message.\",\"_message\":\"Message to send to the target.\",\"_target\":\"Target contract address.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"sendMessage(address,bytes,uint32)\":{\"notice\":\"Sends a cross domain message to the target messenger.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol\":\"OVM_L1CrossDomainMessengerMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >0.5.0 <0.9.0;\\n\\n/**\\n * @title ICrossDomainMessenger\\n */\\ninterface ICrossDomainMessenger {\\n    /**********\\n     * Events *\\n     **********/\\n\\n    event SentMessage(\\n        address indexed target,\\n        address sender,\\n        bytes message,\\n        uint256 messageNonce,\\n        uint256 gasLimit\\n    );\\n    event RelayedMessage(bytes32 indexed msgHash);\\n    event FailedRelayedMessage(bytes32 indexed msgHash);\\n\\n    /*************\\n     * Variables *\\n     *************/\\n\\n    function xDomainMessageSender() external view returns (address);\\n\\n    /********************\\n     * Public Functions *\\n     ********************/\\n\\n    /**\\n     * Sends a cross domain message to the target messenger.\\n     * @param _target Target contract address.\\n     * @param _message Message to send to the target.\\n     * @param _gasLimit Gas limit for the provided message.\\n     */\\n    function sendMessage(\\n        address _target,\\n        bytes calldata _message,\\n        uint32 _gasLimit\\n    ) external;\\n}\\n\",\"keccak256\":\"0x8f29ae23021345a20ccac7b5edb3fc38268aef943b65adc8a32e74b80bf1833a\",\"license\":\"MIT\"},\"contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol\":{\"content\":\"pragma solidity ^0.8.0;\\nimport \\\"@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol\\\";\\n\\ncontract OVM_L1CrossDomainMessengerMock is ICrossDomainMessenger {\\n    function xDomainMessageSender() external view override returns (address) {\\n        // Trivial return this contract's address.\\n        return address(this);\\n    }\\n\\n    function sendMessage(\\n        address _target,\\n        bytes calldata _message,\\n        uint32 _gasLimit\\n    ) external override {}\\n    // Do nothing.\\n}\\n\",\"keccak256\":\"0x6b1518fdf2b6dc3b901766f500d9a3075bd9f4efb5558b9e7009e69a4cf1adb6\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "sendMessage(address,bytes,uint32)": {
                                "notice": "Sends a cross domain message to the target messenger."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/oracle/implementation/Constants.sol": {
                "OptimisticOracleConstraints": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "ancillaryBytesLimit",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "title": "Commonly re-used values for contracts associated with the OptimisticOracle.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "6088610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063c371dda7146038575b600080fd5b604061200081565b60405190815260200160405180910390f3fea264697066735822122053847a27fe17e82bd03e8d710ddf8986d3afa733fa4b7a18f345b24a889876f064736f6c63430008090033",
                            "opcodes": "PUSH1 0x88 PUSH2 0x38 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC371DDA7 EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 PUSH2 0x2000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 DUP5 PUSH27 0x27FE17E82BD03E8D710DDF8986D3AFA733FA4B7A18F345B24A8898 PUSH23 0xF064736F6C634300080900330000000000000000000000 ",
                            "sourceMap": "920:531:60:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;920:531:60;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@ancillaryBytesLimit_10184": {
                                    "entryPoint": null,
                                    "id": 10184,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:201:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "123:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "133:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "145:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "156:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "141:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "141:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "175:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "186:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "168:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "168:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "168:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "92:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "103:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "114:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:185:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063c371dda7146038575b600080fd5b604061200081565b60405190815260200160405180910390f3fea264697066735822122053847a27fe17e82bd03e8d710ddf8986d3afa733fa4b7a18f345b24a889876f064736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC371DDA7 EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 PUSH2 0x2000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 DUP5 PUSH27 0x27FE17E82BD03E8D710DDF8986D3AFA733FA4B7A18F345B24A8898 PUSH23 0xF064736F6C634300080900330000000000000000000000 ",
                            "sourceMap": "920:531:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;1398:50;;1444:4;1398:50;;;;;168:25:66;;;156:2;141:18;1398:50:60;;;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "27200",
                                "executionCost": "112",
                                "totalCost": "27312"
                            },
                            "external": {
                                "ancillaryBytesLimit()": "145"
                            }
                        },
                        "methodIdentifiers": {
                            "ancillaryBytesLimit()": "c371dda7"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Commonly re-used values for contracts associated with the OptimisticOracle.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/implementation/Constants.sol\":\"OptimisticOracleConstraints\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/oracle/implementation/Constants.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Stores common interface names used throughout the DVM by registration in the Finder.\\n */\\nlibrary OracleInterfaces {\\n    bytes32 public constant Oracle = \\\"Oracle\\\";\\n    bytes32 public constant IdentifierWhitelist = \\\"IdentifierWhitelist\\\";\\n    bytes32 public constant Store = \\\"Store\\\";\\n    bytes32 public constant FinancialContractsAdmin = \\\"FinancialContractsAdmin\\\";\\n    bytes32 public constant Registry = \\\"Registry\\\";\\n    bytes32 public constant CollateralWhitelist = \\\"CollateralWhitelist\\\";\\n    bytes32 public constant OptimisticOracle = \\\"OptimisticOracle\\\";\\n    bytes32 public constant Bridge = \\\"Bridge\\\";\\n    bytes32 public constant GenericHandler = \\\"GenericHandler\\\";\\n    bytes32 public constant SkinnyOptimisticOracle = \\\"SkinnyOptimisticOracle\\\";\\n}\\n\\n/**\\n * @title Commonly re-used values for contracts associated with the OptimisticOracle.\\n */\\nlibrary OptimisticOracleConstraints {\\n    // Any price request submitted to the OptimisticOracle must contain ancillary data no larger than this value.\\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` constant value otherwise it is possible\\n    // that a price can be requested to the OptimisticOracle successfully, but cannot be resolved by the DVM which\\n    // refuses to accept a price request made with ancillary data length over a certain size.\\n    uint256 public constant ancillaryBytesLimit = 8192;\\n}\\n\",\"keccak256\":\"0xdb839b42f7348bdd64e2ab1bfbcca64dac758313192024abb815936a9f2eca1a\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                },
                "OracleInterfaces": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "Bridge",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "CollateralWhitelist",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "FinancialContractsAdmin",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "GenericHandler",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "IdentifierWhitelist",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "OptimisticOracle",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "Oracle",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "Registry",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "SkinnyOptimisticOracle",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "Store",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {},
                        "title": "Stores common interface names used throughout the DVM by registration in the Finder.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "61029b61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100c85760003560e01c80634f4a180b116100805780635fa2ef10116100655780635fa2ef10146101f05780637db9743b14610217578063f24a534e1461023e57600080fd5b80634f4a180b146101a2578063598dd097146101c957600080fd5b80632a71e5b3116100b15780632a71e5b31461012d57806342e90c33146101545780634596ac9b1461017b57600080fd5b8063079b6c63146100cd5780631a4dbd1c14610106575b600080fd5b6100f47f47656e6572696348616e646c657200000000000000000000000000000000000081565b60405190815260200160405180910390f35b6100f47f4f7074696d69737469634f7261636c650000000000000000000000000000000081565b6100f47f46696e616e6369616c436f6e74726163747341646d696e00000000000000000081565b6100f47f53746f726500000000000000000000000000000000000000000000000000000081565b6100f47f536b696e6e794f7074696d69737469634f7261636c650000000000000000000081565b6100f47f4964656e74696669657257686974656c6973740000000000000000000000000081565b6100f47f436f6c6c61746572616c57686974656c6973740000000000000000000000000081565b6100f47f427269646765000000000000000000000000000000000000000000000000000081565b6100f47f526567697374727900000000000000000000000000000000000000000000000081565b6100f47f4f7261636c6500000000000000000000000000000000000000000000000000008156fea2646970667358221220c3cfc726a51bc62c54948f58b94524d75a8f8dfc09bba5c7622b86582d1b063b64736f6c63430008090033",
                            "opcodes": "PUSH2 0x29B PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F4A180B GT PUSH2 0x80 JUMPI DUP1 PUSH4 0x5FA2EF10 GT PUSH2 0x65 JUMPI DUP1 PUSH4 0x5FA2EF10 EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x7DB9743B EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0xF24A534E EQ PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F4A180B EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x598DD097 EQ PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A71E5B3 GT PUSH2 0xB1 JUMPI DUP1 PUSH4 0x2A71E5B3 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x42E90C33 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0x4596AC9B EQ PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79B6C63 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x1A4DBD1C EQ PUSH2 0x106 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF4 PUSH32 0x47656E6572696348616E646C6572000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF4 PUSH32 0x4F7074696D69737469634F7261636C6500000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x46696E616E6369616C436F6E74726163747341646D696E000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x53746F7265000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x536B696E6E794F7074696D69737469634F7261636C6500000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x4964656E74696669657257686974656C69737400000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x436F6C6C61746572616C57686974656C69737400000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x4272696467650000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x5265676973747279000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x4F7261636C650000000000000000000000000000000000000000000000000000 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 0xCF 0xC7 0x26 0xA5 SHL 0xC6 0x2C SLOAD SWAP5 DUP16 PC 0xB9 GASLIMIT 0x24 0xD7 GAS DUP16 DUP14 0xFC MULMOD 0xBB 0xA5 0xC7 PUSH3 0x2B8658 0x2D SHL MOD EXTCODESIZE PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "170:654:60:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;170:654:60;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@Bridge_10173": {
                                    "entryPoint": null,
                                    "id": 10173,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@CollateralWhitelist_10167": {
                                    "entryPoint": null,
                                    "id": 10167,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@FinancialContractsAdmin_10161": {
                                    "entryPoint": null,
                                    "id": 10161,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@GenericHandler_10176": {
                                    "entryPoint": null,
                                    "id": 10176,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@IdentifierWhitelist_10155": {
                                    "entryPoint": null,
                                    "id": 10155,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@OptimisticOracle_10170": {
                                    "entryPoint": null,
                                    "id": 10170,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@Oracle_10152": {
                                    "entryPoint": null,
                                    "id": 10152,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@Registry_10164": {
                                    "entryPoint": null,
                                    "id": 10164,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@SkinnyOptimisticOracle_10179": {
                                    "entryPoint": null,
                                    "id": 10179,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@Store_10158": {
                                    "entryPoint": null,
                                    "id": 10158,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:201:66",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:66",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "123:76:66",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "133:26:66",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "145:9:66"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "156:2:66",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "141:3:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "141:18:66"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:4:66"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "175:9:66"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "186:6:66"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "168:6:66"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "168:25:66"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "168:25:66"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "92:9:66",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "103:6:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "114:4:66",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:185:66"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n}",
                                    "id": 66,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600436106100c85760003560e01c80634f4a180b116100805780635fa2ef10116100655780635fa2ef10146101f05780637db9743b14610217578063f24a534e1461023e57600080fd5b80634f4a180b146101a2578063598dd097146101c957600080fd5b80632a71e5b3116100b15780632a71e5b31461012d57806342e90c33146101545780634596ac9b1461017b57600080fd5b8063079b6c63146100cd5780631a4dbd1c14610106575b600080fd5b6100f47f47656e6572696348616e646c657200000000000000000000000000000000000081565b60405190815260200160405180910390f35b6100f47f4f7074696d69737469634f7261636c650000000000000000000000000000000081565b6100f47f46696e616e6369616c436f6e74726163747341646d696e00000000000000000081565b6100f47f53746f726500000000000000000000000000000000000000000000000000000081565b6100f47f536b696e6e794f7074696d69737469634f7261636c650000000000000000000081565b6100f47f4964656e74696669657257686974656c6973740000000000000000000000000081565b6100f47f436f6c6c61746572616c57686974656c6973740000000000000000000000000081565b6100f47f427269646765000000000000000000000000000000000000000000000000000081565b6100f47f526567697374727900000000000000000000000000000000000000000000000081565b6100f47f4f7261636c6500000000000000000000000000000000000000000000000000008156fea2646970667358221220c3cfc726a51bc62c54948f58b94524d75a8f8dfc09bba5c7622b86582d1b063b64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F4A180B GT PUSH2 0x80 JUMPI DUP1 PUSH4 0x5FA2EF10 GT PUSH2 0x65 JUMPI DUP1 PUSH4 0x5FA2EF10 EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x7DB9743B EQ PUSH2 0x217 JUMPI DUP1 PUSH4 0xF24A534E EQ PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4F4A180B EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x598DD097 EQ PUSH2 0x1C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A71E5B3 GT PUSH2 0xB1 JUMPI DUP1 PUSH4 0x2A71E5B3 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x42E90C33 EQ PUSH2 0x154 JUMPI DUP1 PUSH4 0x4596AC9B EQ PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79B6C63 EQ PUSH2 0xCD JUMPI DUP1 PUSH4 0x1A4DBD1C EQ PUSH2 0x106 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF4 PUSH32 0x47656E6572696348616E646C6572000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF4 PUSH32 0x4F7074696D69737469634F7261636C6500000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x46696E616E6369616C436F6E74726163747341646D696E000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x53746F7265000000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x536B696E6E794F7074696D69737469634F7261636C6500000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x4964656E74696669657257686974656C69737400000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x436F6C6C61746572616C57686974656C69737400000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x4272696467650000000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x5265676973747279000000000000000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xF4 PUSH32 0x4F7261636C650000000000000000000000000000000000000000000000000000 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 0xCF 0xC7 0x26 0xA5 SHL 0xC6 0x2C SLOAD SWAP5 DUP16 PC 0xB9 GASLIMIT 0x24 0xD7 GAS DUP16 DUP14 0xFC MULMOD 0xBB 0xA5 0xC7 PUSH3 0x2B8658 0x2D SHL MOD EXTCODESIZE PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "170:654:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;685:57;;;;;;;;168:25:66;;;156:2;141:18;685:57:60;;;;;;;571:61;;;;;366:75;;;;;321:39;;;;;748:73;;;;;248:67;;;;;498;;;;;638:41;;;;;447:45;;;;;201:41;;;;"
                        },
                        "gasEstimates": {
                            "creation": {
                                "codeDepositCost": "133400",
                                "executionCost": "211",
                                "totalCost": "133611"
                            },
                            "external": {
                                "Bridge()": "189",
                                "CollateralWhitelist()": "212",
                                "FinancialContractsAdmin()": "190",
                                "GenericHandler()": "191",
                                "IdentifierWhitelist()": "190",
                                "OptimisticOracle()": "213",
                                "Oracle()": "233",
                                "Registry()": "211",
                                "SkinnyOptimisticOracle()": "234",
                                "Store()": "212"
                            }
                        },
                        "methodIdentifiers": {
                            "Bridge()": "5fa2ef10",
                            "CollateralWhitelist()": "598dd097",
                            "FinancialContractsAdmin()": "2a71e5b3",
                            "GenericHandler()": "079b6c63",
                            "IdentifierWhitelist()": "4f4a180b",
                            "OptimisticOracle()": "1a4dbd1c",
                            "Oracle()": "f24a534e",
                            "Registry()": "7db9743b",
                            "SkinnyOptimisticOracle()": "4596ac9b",
                            "Store()": "42e90c33"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Bridge\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CollateralWhitelist\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FinancialContractsAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GenericHandler\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IdentifierWhitelist\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OptimisticOracle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Oracle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Registry\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SkinnyOptimisticOracle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Store\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Stores common interface names used throughout the DVM by registration in the Finder.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/implementation/Constants.sol\":\"OracleInterfaces\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/oracle/implementation/Constants.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Stores common interface names used throughout the DVM by registration in the Finder.\\n */\\nlibrary OracleInterfaces {\\n    bytes32 public constant Oracle = \\\"Oracle\\\";\\n    bytes32 public constant IdentifierWhitelist = \\\"IdentifierWhitelist\\\";\\n    bytes32 public constant Store = \\\"Store\\\";\\n    bytes32 public constant FinancialContractsAdmin = \\\"FinancialContractsAdmin\\\";\\n    bytes32 public constant Registry = \\\"Registry\\\";\\n    bytes32 public constant CollateralWhitelist = \\\"CollateralWhitelist\\\";\\n    bytes32 public constant OptimisticOracle = \\\"OptimisticOracle\\\";\\n    bytes32 public constant Bridge = \\\"Bridge\\\";\\n    bytes32 public constant GenericHandler = \\\"GenericHandler\\\";\\n    bytes32 public constant SkinnyOptimisticOracle = \\\"SkinnyOptimisticOracle\\\";\\n}\\n\\n/**\\n * @title Commonly re-used values for contracts associated with the OptimisticOracle.\\n */\\nlibrary OptimisticOracleConstraints {\\n    // Any price request submitted to the OptimisticOracle must contain ancillary data no larger than this value.\\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` constant value otherwise it is possible\\n    // that a price can be requested to the OptimisticOracle successfully, but cannot be resolved by the DVM which\\n    // refuses to accept a price request made with ancillary data length over a certain size.\\n    uint256 public constant ancillaryBytesLimit = 8192;\\n}\\n\",\"keccak256\":\"0xdb839b42f7348bdd64e2ab1bfbcca64dac758313192024abb815936a9f2eca1a\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {},
                        "version": 1
                    }
                }
            },
            "contracts/oracle/interfaces/FinderInterface.sol": {
                "FinderInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "interfaceName",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "implementationAddress",
                                    "type": "address"
                                }
                            ],
                            "name": "changeImplementationAddress",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "interfaceName",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "getImplementationAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Examples are the Oracle or Store interfaces.",
                        "kind": "dev",
                        "methods": {
                            "changeImplementationAddress(bytes32,address)": {
                                "params": {
                                    "implementationAddress": "address of the deployed contract that implements the interface.",
                                    "interfaceName": "bytes32 encoding of the interface name that is either changed or registered."
                                }
                            },
                            "getImplementationAddress(bytes32)": {
                                "params": {
                                    "interfaceName": "queried interface."
                                },
                                "returns": {
                                    "_0": "implementationAddress address of the deployed contract that implements the interface."
                                }
                            }
                        },
                        "title": "Provides addresses of the live contracts implementing certain interfaces.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "changeImplementationAddress(bytes32,address)": "31f9665e",
                            "getImplementationAddress(bytes32)": "aafd5e40"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"interfaceName\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"implementationAddress\",\"type\":\"address\"}],\"name\":\"changeImplementationAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"interfaceName\",\"type\":\"bytes32\"}],\"name\":\"getImplementationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Examples are the Oracle or Store interfaces.\",\"kind\":\"dev\",\"methods\":{\"changeImplementationAddress(bytes32,address)\":{\"params\":{\"implementationAddress\":\"address of the deployed contract that implements the interface.\",\"interfaceName\":\"bytes32 encoding of the interface name that is either changed or registered.\"}},\"getImplementationAddress(bytes32)\":{\"params\":{\"interfaceName\":\"queried interface.\"},\"returns\":{\"_0\":\"implementationAddress address of the deployed contract that implements the interface.\"}}},\"title\":\"Provides addresses of the live contracts implementing certain interfaces.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"changeImplementationAddress(bytes32,address)\":{\"notice\":\"Updates the address of the contract that implements `interfaceName`.\"},\"getImplementationAddress(bytes32)\":{\"notice\":\"Gets the address of the contract that implements the given `interfaceName`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/interfaces/FinderInterface.sol\":\"FinderInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/oracle/interfaces/FinderInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Provides addresses of the live contracts implementing certain interfaces.\\n * @dev Examples are the Oracle or Store interfaces.\\n */\\ninterface FinderInterface {\\n    /**\\n     * @notice Updates the address of the contract that implements `interfaceName`.\\n     * @param interfaceName bytes32 encoding of the interface name that is either changed or registered.\\n     * @param implementationAddress address of the deployed contract that implements the interface.\\n     */\\n    function changeImplementationAddress(bytes32 interfaceName, address implementationAddress) external;\\n\\n    /**\\n     * @notice Gets the address of the contract that implements the given `interfaceName`.\\n     * @param interfaceName queried interface.\\n     * @return implementationAddress address of the deployed contract that implements the interface.\\n     */\\n    function getImplementationAddress(bytes32 interfaceName) external view returns (address);\\n}\\n\",\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "changeImplementationAddress(bytes32,address)": {
                                "notice": "Updates the address of the contract that implements `interfaceName`."
                            },
                            "getImplementationAddress(bytes32)": {
                                "notice": "Gets the address of the contract that implements the given `interfaceName`."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/oracle/interfaces/IdentifierWhitelistInterface.sol": {
                "IdentifierWhitelistInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "addSupportedIdentifier",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "isIdentifierSupported",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "removeSupportedIdentifier",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "addSupportedIdentifier(bytes32)": {
                                "details": "Price requests using this identifier will succeed after this call.",
                                "params": {
                                    "identifier": "bytes32 encoding of the string identifier. Eg: BTC/USD."
                                }
                            },
                            "isIdentifierSupported(bytes32)": {
                                "params": {
                                    "identifier": "bytes32 encoding of the string identifier. Eg: BTC/USD."
                                },
                                "returns": {
                                    "_0": "bool if the identifier is supported (or not)."
                                }
                            },
                            "removeSupportedIdentifier(bytes32)": {
                                "details": "Price requests using this identifier will no longer succeed after this call.",
                                "params": {
                                    "identifier": "bytes32 encoding of the string identifier. Eg: BTC/USD."
                                }
                            }
                        },
                        "title": "Interface for whitelists of supported identifiers that the oracle can provide prices for.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "addSupportedIdentifier(bytes32)": "10a7e201",
                            "isIdentifierSupported(bytes32)": "90978d1b",
                            "removeSupportedIdentifier(bytes32)": "8e0d3ca7"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"addSupportedIdentifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"isIdentifierSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"removeSupportedIdentifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addSupportedIdentifier(bytes32)\":{\"details\":\"Price requests using this identifier will succeed after this call.\",\"params\":{\"identifier\":\"bytes32 encoding of the string identifier. Eg: BTC/USD.\"}},\"isIdentifierSupported(bytes32)\":{\"params\":{\"identifier\":\"bytes32 encoding of the string identifier. Eg: BTC/USD.\"},\"returns\":{\"_0\":\"bool if the identifier is supported (or not).\"}},\"removeSupportedIdentifier(bytes32)\":{\"details\":\"Price requests using this identifier will no longer succeed after this call.\",\"params\":{\"identifier\":\"bytes32 encoding of the string identifier. Eg: BTC/USD.\"}}},\"title\":\"Interface for whitelists of supported identifiers that the oracle can provide prices for.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addSupportedIdentifier(bytes32)\":{\"notice\":\"Adds the provided identifier as a supported identifier.\"},\"isIdentifierSupported(bytes32)\":{\"notice\":\"Checks whether an identifier is on the whitelist.\"},\"removeSupportedIdentifier(bytes32)\":{\"notice\":\"Removes the identifier from the whitelist.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/interfaces/IdentifierWhitelistInterface.sol\":\"IdentifierWhitelistInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/oracle/interfaces/IdentifierWhitelistInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Interface for whitelists of supported identifiers that the oracle can provide prices for.\\n */\\ninterface IdentifierWhitelistInterface {\\n    /**\\n     * @notice Adds the provided identifier as a supported identifier.\\n     * @dev Price requests using this identifier will succeed after this call.\\n     * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\\n     */\\n    function addSupportedIdentifier(bytes32 identifier) external;\\n\\n    /**\\n     * @notice Removes the identifier from the whitelist.\\n     * @dev Price requests using this identifier will no longer succeed after this call.\\n     * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\\n     */\\n    function removeSupportedIdentifier(bytes32 identifier) external;\\n\\n    /**\\n     * @notice Checks whether an identifier is on the whitelist.\\n     * @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\\n     * @return bool if the identifier is supported (or not).\\n     */\\n    function isIdentifierSupported(bytes32 identifier) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x9ae86a30dd1a8c03fb2c6d27be570bb30c4c0b13ac63cde8620b7e4b51d88dc9\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "addSupportedIdentifier(bytes32)": {
                                "notice": "Adds the provided identifier as a supported identifier."
                            },
                            "isIdentifierSupported(bytes32)": {
                                "notice": "Checks whether an identifier is on the whitelist."
                            },
                            "removeSupportedIdentifier(bytes32)": {
                                "notice": "Removes the identifier from the whitelist."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/oracle/interfaces/OptimisticOracleInterface.sol": {
                "OptimisticOracleInterface": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "ancillaryBytesLimit",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "disputePrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "disputer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "disputePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "getRequest",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "refundOnDispute",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct OptimisticOracleInterface.Request",
                                    "name": "",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "getState",
                            "outputs": [
                                {
                                    "internalType": "enum OptimisticOracleInterface.State",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "hasPrice",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "proposePrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "proposer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "proposePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "contract IERC20",
                                    "name": "currency",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "reward",
                                    "type": "uint256"
                                }
                            ],
                            "name": "requestPrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "bond",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setBond",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "customLiveness",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCustomLiveness",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "setRefundOnDispute",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "settle",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "payout",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "settleAndGetPrice",
                            "outputs": [
                                {
                                    "internalType": "int256",
                                    "name": "",
                                    "type": "int256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                }
                            ],
                            "name": "stampAncillaryData",
                            "outputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.",
                        "kind": "dev",
                        "methods": {
                            "disputePrice(address,bytes32,uint256,bytes)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect)."
                                }
                            },
                            "disputePriceFor(address,address,bytes32,uint256,bytes)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "disputer": "address to set as the disputer.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was value (the proposal was incorrect)."
                                }
                            },
                            "getRequest(address,bytes32,uint256,bytes)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "_0": "the Request data structure."
                                }
                            },
                            "getState(address,bytes32,uint256,bytes)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "_0": "the State enum value."
                                }
                            },
                            "hasPrice(address,bytes32,uint256,bytes)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "_0": "true if price has resolved or settled, false otherwise."
                                }
                            },
                            "proposePrice(address,bytes32,uint256,bytes,int256)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "proposedPrice": "price being proposed.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct."
                                }
                            },
                            "proposePriceFor(address,address,bytes32,uint256,bytes,int256)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "proposedPrice": "price being proposed.",
                                    "proposer": "address to set as the proposer.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct."
                                }
                            },
                            "requestPrice(bytes32,uint256,bytes,address,uint256)": {
                                "params": {
                                    "ancillaryData": "ancillary data representing additional args being passed with the price request.",
                                    "currency": "ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.",
                                    "identifier": "price identifier being requested.",
                                    "reward": "reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,               which could make sense if the contract requests and proposes the value in the same call or               provides its own reward system.",
                                    "timestamp": "timestamp of the price being requested."
                                },
                                "returns": {
                                    "totalBond": "default bond (final fee) + final fee that the proposer and disputer will be required to pay. This can be changed with a subsequent call to setBond()."
                                }
                            },
                            "setBond(bytes32,uint256,bytes,uint256)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "bond": "custom bond amount to set.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "new bond + final fee that the proposer and disputer will be required to pay. This can be changed again with a subsequent call to setBond()."
                                }
                            },
                            "setCustomLiveness(bytes32,uint256,bytes,uint256)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "customLiveness": "new custom liveness.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "timestamp": "timestamp to identify the existing request."
                                }
                            },
                            "setRefundOnDispute(bytes32,uint256,bytes)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "timestamp": "timestamp to identify the existing request."
                                }
                            },
                            "settle(address,bytes32,uint256,bytes)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "payout": "the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes the returned bonds as well as additional rewards."
                                }
                            },
                            "settleAndGetPrice(bytes32,uint256,bytes)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "_0": "resolved price."
                                }
                            }
                        },
                        "title": "Financial contract facing Oracle interface.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "ancillaryBytesLimit()": "c371dda7",
                            "disputePrice(address,bytes32,uint256,bytes)": "fba7f1e3",
                            "disputePriceFor(address,address,bytes32,uint256,bytes)": "76c7823f",
                            "getRequest(address,bytes32,uint256,bytes)": "a9904f9b",
                            "getState(address,bytes32,uint256,bytes)": "ba4b930c",
                            "hasPrice(address,bytes32,uint256,bytes)": "bc58ccaa",
                            "proposePrice(address,bytes32,uint256,bytes,int256)": "b8b4f908",
                            "proposePriceFor(address,address,bytes32,uint256,bytes,int256)": "7c82288f",
                            "requestPrice(bytes32,uint256,bytes,address,uint256)": "11df92f1",
                            "setBond(bytes32,uint256,bytes,uint256)": "ad5a755a",
                            "setCustomLiveness(bytes32,uint256,bytes,uint256)": "473c45fe",
                            "setRefundOnDispute(bytes32,uint256,bytes)": "91f58dcb",
                            "settle(address,bytes32,uint256,bytes)": "5e9a79a9",
                            "settleAndGetPrice(bytes32,uint256,bytes)": "53b59239",
                            "stampAncillaryData(bytes,address)": "af5d2f39"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"refundOnDispute\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleInterface.Request\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"enum OptimisticOracleInterface.State\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"hasPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"requestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"setBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"setCustomLiveness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"setRefundOnDispute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settleAndGetPrice\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"stampAncillaryData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\",\"kind\":\"dev\",\"methods\":{\"disputePrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"disputer\":\"address to set as the disputer.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was value (the proposal was incorrect).\"}},\"getRequest(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the Request data structure.\"}},\"getState(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the State enum value.\"}},\"hasPrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"true if price has resolved or settled, false otherwise.\"}},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"proposer\":\"address to set as the proposer.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data representing additional args being passed with the price request.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"identifier\":\"price identifier being requested.\",\"reward\":\"reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,               which could make sense if the contract requests and proposes the value in the same call or               provides its own reward system.\",\"timestamp\":\"timestamp of the price being requested.\"},\"returns\":{\"totalBond\":\"default bond (final fee) + final fee that the proposer and disputer will be required to pay. This can be changed with a subsequent call to setBond().\"}},\"setBond(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"bond\":\"custom bond amount to set.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"new bond + final fee that the proposer and disputer will be required to pay. This can be changed again with a subsequent call to setBond().\"}},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"customLiveness\":\"new custom liveness.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"settle(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"payout\":\"the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes the returned bonds as well as additional rewards.\"}},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"resolved price.\"}}},\"title\":\"Financial contract facing Oracle interface.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disputePrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price value for an existing price request with an active proposal.\"},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price request with an active proposal on another address' behalf. Note: this address will receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\"},\"getRequest(address,bytes32,uint256,bytes)\":{\"notice\":\"Gets the current data structure containing all information about a price request.\"},\"getState(address,bytes32,uint256,bytes)\":{\"notice\":\"Returns the state of a price request.\"},\"hasPrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\"},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value for an existing price request.\"},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value on another address' behalf. Note: this address will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\"},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"notice\":\"Requests a new price.\"},\"setBond(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Set the proposal bond associated with a price request.\"},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before being auto-resolved.\"},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"notice\":\"Sets the request to refund the reward if the proposal is disputed. This can help to \\\"hedge\\\" the caller in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's bond, so there is still profit to be made even if the reward is refunded.\"},\"settle(address,bytes32,uint256,bytes)\":{\"notice\":\"Attempts to settle an outstanding price request. Will revert if it isn't settleable.\"},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"notice\":\"Retrieves a price that was previously requested by a caller. Reverts if the request is not settled or settleable. Note: this method is not view so that this call may actually settle the price request if it hasn't been settled.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/interfaces/OptimisticOracleInterface.sol\":\"OptimisticOracleInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"contracts/oracle/interfaces/OptimisticOracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\n/**\\n * @title Financial contract facing Oracle interface.\\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\\n */\\nabstract contract OptimisticOracleInterface {\\n    // Struct representing the state of a price request.\\n    enum State {\\n        Invalid, // Never requested.\\n        Requested, // Requested, no other actions taken.\\n        Proposed, // Proposed, but not expired or disputed yet.\\n        Expired, // Proposed, not disputed, past liveness.\\n        Disputed, // Disputed, but no DVM price returned yet.\\n        Resolved, // Disputed and DVM price is available.\\n        Settled // Final price has been set in the contract (can get here from Expired or Resolved).\\n    }\\n\\n    // Struct representing a price request.\\n    struct Request {\\n        address proposer; // Address of the proposer.\\n        address disputer; // Address of the disputer.\\n        IERC20 currency; // ERC20 token used to pay rewards and fees.\\n        bool settled; // True if the request is settled.\\n        bool refundOnDispute; // True if the requester should be refunded their reward on dispute.\\n        int256 proposedPrice; // Price that the proposer submitted.\\n        int256 resolvedPrice; // Price resolved once the request is settled.\\n        uint256 expirationTime; // Time at which the request auto-settles without a dispute.\\n        uint256 reward; // Amount of the currency to pay to the proposer on settlement.\\n        uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.\\n        uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.\\n        uint256 customLiveness; // Custom liveness value set by the requester.\\n    }\\n\\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible\\n    // that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses\\n    // to accept a price request made with ancillary data length over a certain size.\\n    uint256 public constant ancillaryBytesLimit = 8192;\\n\\n    /**\\n     * @notice Requests a new price.\\n     * @param identifier price identifier being requested.\\n     * @param timestamp timestamp of the price being requested.\\n     * @param ancillaryData ancillary data representing additional args being passed with the price request.\\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\\n     *               which could make sense if the contract requests and proposes the value in the same call or\\n     *               provides its own reward system.\\n     * @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\\n     * This can be changed with a subsequent call to setBond().\\n     */\\n    function requestPrice(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        IERC20 currency,\\n        uint256 reward\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Set the proposal bond associated with a price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param bond custom bond amount to set.\\n     * @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\\n     * changed again with a subsequent call to setBond().\\n     */\\n    function setBond(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        uint256 bond\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Sets the request to refund the reward if the proposal is disputed. This can help to \\\"hedge\\\" the caller\\n     * in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\\n     * bond, so there is still profit to be made even if the reward is refunded.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     */\\n    function setRefundOnDispute(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) external virtual;\\n\\n    /**\\n     * @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\\n     * being auto-resolved.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param customLiveness new custom liveness.\\n     */\\n    function setCustomLiveness(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        uint256 customLiveness\\n    ) external virtual;\\n\\n    /**\\n     * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\\n     * from this proposal. However, any bonds are pulled from the caller.\\n     * @param proposer address to set as the proposer.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param proposedPrice price being proposed.\\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\\n     * the proposer once settled if the proposal is correct.\\n     */\\n    function proposePriceFor(\\n        address proposer,\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        int256 proposedPrice\\n    ) public virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Proposes a price value for an existing price request.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param proposedPrice price being proposed.\\n     * @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\\n     * the proposer once settled if the proposal is correct.\\n     */\\n    function proposePrice(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        int256 proposedPrice\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\\n     * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\\n     * @param disputer address to set as the disputer.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\\n     * the disputer once settled if the dispute was value (the proposal was incorrect).\\n     */\\n    function disputePriceFor(\\n        address disputer,\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) public virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Disputes a price value for an existing price request with an active proposal.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\\n     */\\n    function disputePrice(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\\n     * or settleable. Note: this method is not view so that this call may actually settle the price request if it\\n     * hasn't been settled.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return resolved price.\\n     */\\n    function settleAndGetPrice(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) external virtual returns (int256);\\n\\n    /**\\n     * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return payout the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes\\n     * the returned bonds as well as additional rewards.\\n     */\\n    function settle(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) external virtual returns (uint256 payout);\\n\\n    /**\\n     * @notice Gets the current data structure containing all information about a price request.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return the Request data structure.\\n     */\\n    function getRequest(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) public view virtual returns (Request memory);\\n\\n    /**\\n     * @notice Returns the state of a price request.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return the State enum value.\\n     */\\n    function getState(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) public view virtual returns (State);\\n\\n    /**\\n     * @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return true if price has resolved or settled, false otherwise.\\n     */\\n    function hasPrice(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) public view virtual returns (bool);\\n\\n    function stampAncillaryData(bytes memory ancillaryData, address requester)\\n        public\\n        view\\n        virtual\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x92e7280c1abd5f0c4fcd20247fc1b8428aaf4eeea59439c074d15fdaf9c64989\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "disputePrice(address,bytes32,uint256,bytes)": {
                                "notice": "Disputes a price value for an existing price request with an active proposal."
                            },
                            "disputePriceFor(address,address,bytes32,uint256,bytes)": {
                                "notice": "Disputes a price request with an active proposal on another address' behalf. Note: this address will receive any rewards that come from this dispute. However, any bonds are pulled from the caller."
                            },
                            "getRequest(address,bytes32,uint256,bytes)": {
                                "notice": "Gets the current data structure containing all information about a price request."
                            },
                            "getState(address,bytes32,uint256,bytes)": {
                                "notice": "Returns the state of a price request."
                            },
                            "hasPrice(address,bytes32,uint256,bytes)": {
                                "notice": "Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price)."
                            },
                            "proposePrice(address,bytes32,uint256,bytes,int256)": {
                                "notice": "Proposes a price value for an existing price request."
                            },
                            "proposePriceFor(address,address,bytes32,uint256,bytes,int256)": {
                                "notice": "Proposes a price value on another address' behalf. Note: this address will receive any rewards that come from this proposal. However, any bonds are pulled from the caller."
                            },
                            "requestPrice(bytes32,uint256,bytes,address,uint256)": {
                                "notice": "Requests a new price."
                            },
                            "setBond(bytes32,uint256,bytes,uint256)": {
                                "notice": "Set the proposal bond associated with a price request."
                            },
                            "setCustomLiveness(bytes32,uint256,bytes,uint256)": {
                                "notice": "Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before being auto-resolved."
                            },
                            "setRefundOnDispute(bytes32,uint256,bytes)": {
                                "notice": "Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's bond, so there is still profit to be made even if the reward is refunded."
                            },
                            "settle(address,bytes32,uint256,bytes)": {
                                "notice": "Attempts to settle an outstanding price request. Will revert if it isn't settleable."
                            },
                            "settleAndGetPrice(bytes32,uint256,bytes)": {
                                "notice": "Retrieves a price that was previously requested by a caller. Reverts if the request is not settled or settleable. Note: this method is not view so that this call may actually settle the price request if it hasn't been settled."
                            }
                        },
                        "version": 1
                    }
                }
            },
            "contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol": {
                "SkinnyOptimisticOracleInterface": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "ancillaryBytesLimit",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                }
                            ],
                            "name": "disputePrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "address",
                                    "name": "disputer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                }
                            ],
                            "name": "disputePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                }
                            ],
                            "name": "getState",
                            "outputs": [
                                {
                                    "internalType": "enum OptimisticOracleInterface.State",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                }
                            ],
                            "name": "hasPrice",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "proposePrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "address",
                                    "name": "proposer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "proposePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "contract IERC20",
                                    "name": "currency",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "reward",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "bond",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "customLiveness",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "proposer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "requestAndProposePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "contract IERC20",
                                    "name": "currency",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "reward",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "bond",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "customLiveness",
                                    "type": "uint256"
                                }
                            ],
                            "name": "requestPrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                }
                            ],
                            "name": "settle",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "payout",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "resolvedPrice",
                                    "type": "int256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                }
                            ],
                            "name": "stampAncillaryData",
                            "outputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "stateMutability": "pure",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "details": "Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.",
                        "kind": "dev",
                        "methods": {
                            "disputePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "request": "price request parameters whose hash must match the request that the caller wants to dispute.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect)."
                                }
                            },
                            "disputePriceFor(bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,address)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "disputer": "address to set as the disputer.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "request": "price request parameters whose hash must match the request that the caller wants to dispute.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect)."
                                }
                            },
                            "getState(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "request": "price request parameters.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "_0": "the State."
                                }
                            },
                            "hasPrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "request": "price request parameters. The hash of these parameters must match with the request hash that is associated with the price request unique ID {requester, identifier, timestamp, ancillaryData}, or this method will revert.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "_0": "boolean indicating true if price exists and false if not."
                                }
                            },
                            "proposePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),int256)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "proposedPrice": "price being proposed.",
                                    "request": "price request parameters whose hash must match the request that the caller wants to propose a price for.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct."
                                }
                            },
                            "proposePriceFor(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,int256)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "proposedPrice": "price being proposed.",
                                    "proposer": "address to set as the proposer.",
                                    "request": "price request parameters whose hash must match the request that the caller wants to propose a price for.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct."
                                }
                            },
                            "requestAndProposePriceFor(bytes32,uint32,bytes,address,uint256,uint256,uint256,address,int256)": {
                                "details": "The caller is the requester, but the proposer can be customized.",
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "bond": "custom proposal bond to set for request. If set to 0, defaults to the final fee.",
                                    "currency": "ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.",
                                    "customLiveness": "custom proposal liveness to set for request.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "proposedPrice": "price being proposed.",
                                    "proposer": "address to set as the proposer.",
                                    "reward": "reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,               which could make sense if the contract requests and proposes the value in the same call or               provides its own reward system.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "totalBond": "the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct."
                                }
                            },
                            "requestPrice(bytes32,uint32,bytes,address,uint256,uint256,uint256)": {
                                "params": {
                                    "ancillaryData": "ancillary data representing additional args being passed with the price request.",
                                    "bond": "custom proposal bond to set for request. If set to 0, defaults to the final fee.",
                                    "currency": "ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.",
                                    "customLiveness": "custom proposal liveness to set for request.",
                                    "identifier": "price identifier being requested.",
                                    "reward": "reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,               which could make sense if the contract requests and proposes the value in the same call or               provides its own reward system.",
                                    "timestamp": "timestamp of the price being requested."
                                },
                                "returns": {
                                    "totalBond": "default bond + final fee that the proposer and disputer will be required to pay."
                                }
                            },
                            "settle(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "identifier": "price identifier to identify the existing request.",
                                    "request": "price request parameters whose hash must match the request that the caller wants to settle.",
                                    "requester": "sender of the initial price request.",
                                    "timestamp": "timestamp to identify the existing request."
                                },
                                "returns": {
                                    "payout": "the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes the returned bonds as well as additional rewards.",
                                    "resolvedPrice": "the price that the request settled to."
                                }
                            },
                            "stampAncillaryData(bytes,address)": {
                                "params": {
                                    "ancillaryData": "ancillary data of the price being requested.",
                                    "requester": "sender of the initial price request."
                                },
                                "returns": {
                                    "_0": "the stamped ancillary bytes."
                                }
                            }
                        },
                        "title": "Interface for the gas-cost-reduced version of the OptimisticOracle.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "ancillaryBytesLimit()": "c371dda7",
                            "disputePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": "3a31577e",
                            "disputePriceFor(bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,address)": "9ce320c8",
                            "getState(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": "51205554",
                            "hasPrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": "a337e1ad",
                            "proposePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),int256)": "93c44ef7",
                            "proposePriceFor(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,int256)": "b1a166b2",
                            "requestAndProposePriceFor(bytes32,uint32,bytes,address,uint256,uint256,uint256,address,int256)": "af355d1e",
                            "requestPrice(bytes32,uint32,bytes,address,uint256,uint256,uint256)": "d6228407",
                            "settle(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": "b730539f",
                            "stampAncillaryData(bytes,address)": "af5d2f39"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"disputePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"disputePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"enum OptimisticOracleInterface.State\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"hasPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"requestAndProposePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"requestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"stampAncillaryData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\",\"kind\":\"dev\",\"methods\":{\"disputePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to dispute.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"disputePriceFor(bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,address)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"disputer\":\"address to set as the disputer.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to dispute.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"getState(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the State.\"}},\"hasPrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters. The hash of these parameters must match with the request hash that is associated with the price request unique ID {requester, identifier, timestamp, ancillaryData}, or this method will revert.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"boolean indicating true if price exists and false if not.\"}},\"proposePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to propose a price for.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"proposePriceFor(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"proposer\":\"address to set as the proposer.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to propose a price for.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"requestAndProposePriceFor(bytes32,uint32,bytes,address,uint256,uint256,uint256,address,int256)\":{\"details\":\"The caller is the requester, but the proposer can be customized.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"bond\":\"custom proposal bond to set for request. If set to 0, defaults to the final fee.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"customLiveness\":\"custom proposal liveness to set for request.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"proposer\":\"address to set as the proposer.\",\"reward\":\"reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,               which could make sense if the contract requests and proposes the value in the same call or               provides its own reward system.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"requestPrice(bytes32,uint32,bytes,address,uint256,uint256,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data representing additional args being passed with the price request.\",\"bond\":\"custom proposal bond to set for request. If set to 0, defaults to the final fee.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"customLiveness\":\"custom proposal liveness to set for request.\",\"identifier\":\"price identifier being requested.\",\"reward\":\"reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,               which could make sense if the contract requests and proposes the value in the same call or               provides its own reward system.\",\"timestamp\":\"timestamp of the price being requested.\"},\"returns\":{\"totalBond\":\"default bond + final fee that the proposer and disputer will be required to pay.\"}},\"settle(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to settle.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"payout\":\"the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes the returned bonds as well as additional rewards.\",\"resolvedPrice\":\"the price that the request settled to.\"}},\"stampAncillaryData(bytes,address)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"requester\":\"sender of the initial price request.\"},\"returns\":{\"_0\":\"the stamped ancillary bytes.\"}}},\"title\":\"Interface for the gas-cost-reduced version of the OptimisticOracle.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disputePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Disputes a price request with an active proposal where caller is the disputer.\"},\"disputePriceFor(bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,address)\":{\"notice\":\"Disputes a price request with an active proposal on another address' behalf. Note: this address will receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\"},\"getState(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Computes the current state of a price request. See the State enum for more details.\"},\"hasPrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\"},\"proposePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),int256)\":{\"notice\":\"Proposes a price value where caller is the proposer.\"},\"proposePriceFor(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,int256)\":{\"notice\":\"Proposes a price value on another address' behalf. Note: this address will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\"},\"requestAndProposePriceFor(bytes32,uint32,bytes,address,uint256,uint256,uint256,address,int256)\":{\"notice\":\"Combines logic of requestPrice and proposePrice while taking advantage of gas savings from not having to overwrite Request params that a normal requestPrice() => proposePrice() flow would entail. Note: The proposer will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\"},\"requestPrice(bytes32,uint32,bytes,address,uint256,uint256,uint256)\":{\"notice\":\"Requests a new price.\"},\"settle(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Attempts to settle an outstanding price request. Will revert if it isn't settleable.\"},\"stampAncillaryData(bytes,address)\":{\"notice\":\"Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\"}},\"notice\":\"Differences from normal OptimisticOracle: - refundOnDispute: flag is removed, by default there are no refunds on disputes. - customizing request parameters: In the OptimisticOracle, parameters like `bond` and `customLiveness` can be reset   after a request is already made via `requestPrice`. In the SkinnyOptimisticOracle, these parameters can only be   set in `requestPrice`, which has an expanded input set. - settleAndGetPrice: Replaced by `settle`, which can only be called once per settleable request. The resolved price   can be fetched via the `Settle` event or the return value of `settle`. - general changes to interface: Functions that interact with existing requests all require the parameters of the   request to modify to be passed as input. These parameters must match with the existing request parameters or the   function will revert. This change reflects the internal refactor to store hashed request parameters instead of the   full request struct.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol\":\"SkinnyOptimisticOracleInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"contracts/oracle/interfaces/OptimisticOracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\n\\n/**\\n * @title Financial contract facing Oracle interface.\\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\\n */\\nabstract contract OptimisticOracleInterface {\\n    // Struct representing the state of a price request.\\n    enum State {\\n        Invalid, // Never requested.\\n        Requested, // Requested, no other actions taken.\\n        Proposed, // Proposed, but not expired or disputed yet.\\n        Expired, // Proposed, not disputed, past liveness.\\n        Disputed, // Disputed, but no DVM price returned yet.\\n        Resolved, // Disputed and DVM price is available.\\n        Settled // Final price has been set in the contract (can get here from Expired or Resolved).\\n    }\\n\\n    // Struct representing a price request.\\n    struct Request {\\n        address proposer; // Address of the proposer.\\n        address disputer; // Address of the disputer.\\n        IERC20 currency; // ERC20 token used to pay rewards and fees.\\n        bool settled; // True if the request is settled.\\n        bool refundOnDispute; // True if the requester should be refunded their reward on dispute.\\n        int256 proposedPrice; // Price that the proposer submitted.\\n        int256 resolvedPrice; // Price resolved once the request is settled.\\n        uint256 expirationTime; // Time at which the request auto-settles without a dispute.\\n        uint256 reward; // Amount of the currency to pay to the proposer on settlement.\\n        uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.\\n        uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.\\n        uint256 customLiveness; // Custom liveness value set by the requester.\\n    }\\n\\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible\\n    // that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses\\n    // to accept a price request made with ancillary data length over a certain size.\\n    uint256 public constant ancillaryBytesLimit = 8192;\\n\\n    /**\\n     * @notice Requests a new price.\\n     * @param identifier price identifier being requested.\\n     * @param timestamp timestamp of the price being requested.\\n     * @param ancillaryData ancillary data representing additional args being passed with the price request.\\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\\n     *               which could make sense if the contract requests and proposes the value in the same call or\\n     *               provides its own reward system.\\n     * @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\\n     * This can be changed with a subsequent call to setBond().\\n     */\\n    function requestPrice(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        IERC20 currency,\\n        uint256 reward\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Set the proposal bond associated with a price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param bond custom bond amount to set.\\n     * @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\\n     * changed again with a subsequent call to setBond().\\n     */\\n    function setBond(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        uint256 bond\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Sets the request to refund the reward if the proposal is disputed. This can help to \\\"hedge\\\" the caller\\n     * in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\\n     * bond, so there is still profit to be made even if the reward is refunded.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     */\\n    function setRefundOnDispute(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) external virtual;\\n\\n    /**\\n     * @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\\n     * being auto-resolved.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param customLiveness new custom liveness.\\n     */\\n    function setCustomLiveness(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        uint256 customLiveness\\n    ) external virtual;\\n\\n    /**\\n     * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\\n     * from this proposal. However, any bonds are pulled from the caller.\\n     * @param proposer address to set as the proposer.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param proposedPrice price being proposed.\\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\\n     * the proposer once settled if the proposal is correct.\\n     */\\n    function proposePriceFor(\\n        address proposer,\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        int256 proposedPrice\\n    ) public virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Proposes a price value for an existing price request.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param proposedPrice price being proposed.\\n     * @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\\n     * the proposer once settled if the proposal is correct.\\n     */\\n    function proposePrice(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData,\\n        int256 proposedPrice\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\\n     * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\\n     * @param disputer address to set as the disputer.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\\n     * the disputer once settled if the dispute was value (the proposal was incorrect).\\n     */\\n    function disputePriceFor(\\n        address disputer,\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) public virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Disputes a price value for an existing price request with an active proposal.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\\n     */\\n    function disputePrice(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\\n     * or settleable. Note: this method is not view so that this call may actually settle the price request if it\\n     * hasn't been settled.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return resolved price.\\n     */\\n    function settleAndGetPrice(\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) external virtual returns (int256);\\n\\n    /**\\n     * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return payout the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes\\n     * the returned bonds as well as additional rewards.\\n     */\\n    function settle(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) external virtual returns (uint256 payout);\\n\\n    /**\\n     * @notice Gets the current data structure containing all information about a price request.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return the Request data structure.\\n     */\\n    function getRequest(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) public view virtual returns (Request memory);\\n\\n    /**\\n     * @notice Returns the state of a price request.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return the State enum value.\\n     */\\n    function getState(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) public view virtual returns (State);\\n\\n    /**\\n     * @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @return true if price has resolved or settled, false otherwise.\\n     */\\n    function hasPrice(\\n        address requester,\\n        bytes32 identifier,\\n        uint256 timestamp,\\n        bytes memory ancillaryData\\n    ) public view virtual returns (bool);\\n\\n    function stampAncillaryData(bytes memory ancillaryData, address requester)\\n        public\\n        view\\n        virtual\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x92e7280c1abd5f0c4fcd20247fc1b8428aaf4eeea59439c074d15fdaf9c64989\",\"license\":\"AGPL-3.0-only\"},\"contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"../interfaces/OptimisticOracleInterface.sol\\\";\\n\\n/**\\n * @title Interface for the gas-cost-reduced version of the OptimisticOracle.\\n * @notice Differences from normal OptimisticOracle:\\n * - refundOnDispute: flag is removed, by default there are no refunds on disputes.\\n * - customizing request parameters: In the OptimisticOracle, parameters like `bond` and `customLiveness` can be reset\\n *   after a request is already made via `requestPrice`. In the SkinnyOptimisticOracle, these parameters can only be\\n *   set in `requestPrice`, which has an expanded input set.\\n * - settleAndGetPrice: Replaced by `settle`, which can only be called once per settleable request. The resolved price\\n *   can be fetched via the `Settle` event or the return value of `settle`.\\n * - general changes to interface: Functions that interact with existing requests all require the parameters of the\\n *   request to modify to be passed as input. These parameters must match with the existing request parameters or the\\n *   function will revert. This change reflects the internal refactor to store hashed request parameters instead of the\\n *   full request struct.\\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\\n */\\nabstract contract SkinnyOptimisticOracleInterface {\\n    // Struct representing a price request. Note that this differs from the OptimisticOracleInterface's Request struct\\n    // in that refundOnDispute is removed.\\n    struct Request {\\n        address proposer; // Address of the proposer.\\n        address disputer; // Address of the disputer.\\n        IERC20 currency; // ERC20 token used to pay rewards and fees.\\n        bool settled; // True if the request is settled.\\n        int256 proposedPrice; // Price that the proposer submitted.\\n        int256 resolvedPrice; // Price resolved once the request is settled.\\n        uint256 expirationTime; // Time at which the request auto-settles without a dispute.\\n        uint256 reward; // Amount of the currency to pay to the proposer on settlement.\\n        uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.\\n        uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.\\n        uint256 customLiveness; // Custom liveness value set by the requester.\\n    }\\n\\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible\\n    // that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses\\n    // to accept a price request made with ancillary data length over a certain size.\\n    uint256 public constant ancillaryBytesLimit = 8192;\\n\\n    /**\\n     * @notice Requests a new price.\\n     * @param identifier price identifier being requested.\\n     * @param timestamp timestamp of the price being requested.\\n     * @param ancillaryData ancillary data representing additional args being passed with the price request.\\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\\n     *               which could make sense if the contract requests and proposes the value in the same call or\\n     *               provides its own reward system.\\n     * @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\\n     * @param customLiveness custom proposal liveness to set for request.\\n     * @return totalBond default bond + final fee that the proposer and disputer will be required to pay.\\n     */\\n    function requestPrice(\\n        bytes32 identifier,\\n        uint32 timestamp,\\n        bytes memory ancillaryData,\\n        IERC20 currency,\\n        uint256 reward,\\n        uint256 bond,\\n        uint256 customLiveness\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\\n     * from this proposal. However, any bonds are pulled from the caller.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param request price request parameters whose hash must match the request that the caller wants to\\n     * propose a price for.\\n     * @param proposer address to set as the proposer.\\n     * @param proposedPrice price being proposed.\\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\\n     * the proposer once settled if the proposal is correct.\\n     */\\n    function proposePriceFor(\\n        address requester,\\n        bytes32 identifier,\\n        uint32 timestamp,\\n        bytes memory ancillaryData,\\n        Request memory request,\\n        address proposer,\\n        int256 proposedPrice\\n    ) public virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Proposes a price value where caller is the proposer.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param request price request parameters whose hash must match the request that the caller wants to\\n     * propose a price for.\\n     * @param proposedPrice price being proposed.\\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\\n     * the proposer once settled if the proposal is correct.\\n     */\\n    function proposePrice(\\n        address requester,\\n        bytes32 identifier,\\n        uint32 timestamp,\\n        bytes memory ancillaryData,\\n        Request memory request,\\n        int256 proposedPrice\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Combines logic of requestPrice and proposePrice while taking advantage of gas savings from not having to\\n     * overwrite Request params that a normal requestPrice() => proposePrice() flow would entail. Note: The proposer\\n     * will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\\n     * @dev The caller is the requester, but the proposer can be customized.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\\n     *               which could make sense if the contract requests and proposes the value in the same call or\\n     *               provides its own reward system.\\n     * @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\\n     * @param customLiveness custom proposal liveness to set for request.\\n     * @param proposer address to set as the proposer.\\n     * @param proposedPrice price being proposed.\\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\\n     * the proposer once settled if the proposal is correct.\\n     */\\n    function requestAndProposePriceFor(\\n        bytes32 identifier,\\n        uint32 timestamp,\\n        bytes memory ancillaryData,\\n        IERC20 currency,\\n        uint256 reward,\\n        uint256 bond,\\n        uint256 customLiveness,\\n        address proposer,\\n        int256 proposedPrice\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\\n     * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param request price request parameters whose hash must match the request that the caller wants to\\n     * dispute.\\n     * @param disputer address to set as the disputer.\\n     * @param requester sender of the initial price request.\\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\\n     */\\n    function disputePriceFor(\\n        bytes32 identifier,\\n        uint32 timestamp,\\n        bytes memory ancillaryData,\\n        Request memory request,\\n        address disputer,\\n        address requester\\n    ) public virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Disputes a price request with an active proposal where caller is the disputer.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param request price request parameters whose hash must match the request that the caller wants to\\n     * dispute.\\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\\n     */\\n    function disputePrice(\\n        address requester,\\n        bytes32 identifier,\\n        uint32 timestamp,\\n        bytes memory ancillaryData,\\n        Request memory request\\n    ) external virtual returns (uint256 totalBond);\\n\\n    /**\\n     * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param request price request parameters whose hash must match the request that the caller wants to\\n     * settle.\\n     * @return payout the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes\\n     * the returned bonds as well as additional rewards.\\n     * @return resolvedPrice the price that the request settled to.\\n     */\\n    function settle(\\n        address requester,\\n        bytes32 identifier,\\n        uint32 timestamp,\\n        bytes memory ancillaryData,\\n        Request memory request\\n    ) external virtual returns (uint256 payout, int256 resolvedPrice);\\n\\n    /**\\n     * @notice Computes the current state of a price request. See the State enum for more details.\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param request price request parameters.\\n     * @return the State.\\n     */\\n    function getState(\\n        address requester,\\n        bytes32 identifier,\\n        uint32 timestamp,\\n        bytes memory ancillaryData,\\n        Request memory request\\n    ) external virtual returns (OptimisticOracleInterface.State);\\n\\n    /**\\n     * @notice Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\\n     * @param requester sender of the initial price request.\\n     * @param identifier price identifier to identify the existing request.\\n     * @param timestamp timestamp to identify the existing request.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param request price request parameters. The hash of these parameters must match with the request hash that is\\n     * associated with the price request unique ID {requester, identifier, timestamp, ancillaryData}, or this method\\n     * will revert.\\n     * @return boolean indicating true if price exists and false if not.\\n     */\\n    function hasPrice(\\n        address requester,\\n        bytes32 identifier,\\n        uint32 timestamp,\\n        bytes memory ancillaryData,\\n        Request memory request\\n    ) public virtual returns (bool);\\n\\n    /**\\n     * @notice Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\\n     * @param ancillaryData ancillary data of the price being requested.\\n     * @param requester sender of the initial price request.\\n     * @return the stamped ancillary bytes.\\n     */\\n    function stampAncillaryData(bytes memory ancillaryData, address requester)\\n        public\\n        pure\\n        virtual\\n        returns (bytes memory);\\n}\\n\",\"keccak256\":\"0x91d21e44a97b719106e8f97b99399a3d8dc3697badd01df06518892f38fe033f\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "disputePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": {
                                "notice": "Disputes a price request with an active proposal where caller is the disputer."
                            },
                            "disputePriceFor(bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,address)": {
                                "notice": "Disputes a price request with an active proposal on another address' behalf. Note: this address will receive any rewards that come from this dispute. However, any bonds are pulled from the caller."
                            },
                            "getState(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": {
                                "notice": "Computes the current state of a price request. See the State enum for more details."
                            },
                            "hasPrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": {
                                "notice": "Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price)."
                            },
                            "proposePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),int256)": {
                                "notice": "Proposes a price value where caller is the proposer."
                            },
                            "proposePriceFor(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,int256)": {
                                "notice": "Proposes a price value on another address' behalf. Note: this address will receive any rewards that come from this proposal. However, any bonds are pulled from the caller."
                            },
                            "requestAndProposePriceFor(bytes32,uint32,bytes,address,uint256,uint256,uint256,address,int256)": {
                                "notice": "Combines logic of requestPrice and proposePrice while taking advantage of gas savings from not having to overwrite Request params that a normal requestPrice() => proposePrice() flow would entail. Note: The proposer will receive any rewards that come from this proposal. However, any bonds are pulled from the caller."
                            },
                            "requestPrice(bytes32,uint32,bytes,address,uint256,uint256,uint256)": {
                                "notice": "Requests a new price."
                            },
                            "settle(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": {
                                "notice": "Attempts to settle an outstanding price request. Will revert if it isn't settleable."
                            },
                            "stampAncillaryData(bytes,address)": {
                                "notice": "Generates stamped ancillary data in the format that it would be used in the case of a price dispute."
                            }
                        },
                        "notice": "Differences from normal OptimisticOracle: - refundOnDispute: flag is removed, by default there are no refunds on disputes. - customizing request parameters: In the OptimisticOracle, parameters like `bond` and `customLiveness` can be reset   after a request is already made via `requestPrice`. In the SkinnyOptimisticOracle, these parameters can only be   set in `requestPrice`, which has an expanded input set. - settleAndGetPrice: Replaced by `settle`, which can only be called once per settleable request. The resolved price   can be fetched via the `Settle` event or the return value of `settle`. - general changes to interface: Functions that interact with existing requests all require the parameters of the   request to modify to be passed as input. These parameters must match with the existing request parameters or the   function will revert. This change reflects the internal refactor to store hashed request parameters instead of the   full request struct.",
                        "version": 1
                    }
                }
            },
            "contracts/oracle/interfaces/StoreInterface.sol": {
                "StoreInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "currency",
                                    "type": "address"
                                }
                            ],
                            "name": "computeFinalFee",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "startTime",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "endTime",
                                    "type": "uint256"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "pfc",
                                    "type": "tuple"
                                }
                            ],
                            "name": "computeRegularFee",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "regularFee",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "latePenalty",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "payOracleFees",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "erc20Address",
                                    "type": "address"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "amount",
                                    "type": "tuple"
                                }
                            ],
                            "name": "payOracleFeesErc20",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "devdoc": {
                        "kind": "dev",
                        "methods": {
                            "computeFinalFee(address)": {
                                "params": {
                                    "currency": "token used to pay the final fee."
                                },
                                "returns": {
                                    "_0": "finalFee amount due."
                                }
                            },
                            "computeRegularFee(uint256,uint256,(uint256))": {
                                "params": {
                                    "endTime": "end time until which the fee is paid.",
                                    "pfc": "\"profit from corruption\", or the maximum amount of margin currency that a token sponsor could extract from the contract through corrupting the price feed in their favor.",
                                    "startTime": "defines the beginning time from which the fee is paid."
                                },
                                "returns": {
                                    "latePenalty": "for paying the fee after the deadline.",
                                    "regularFee": "amount owed for the duration from start to end time for the given pfc."
                                }
                            },
                            "payOracleFees()": {
                                "details": "To be used by contracts whose margin currency is ETH."
                            },
                            "payOracleFeesErc20(address,(uint256))": {
                                "details": "To be used if the margin currency is an ERC20 token rather than ETH.",
                                "params": {
                                    "amount": "number of tokens to transfer. An approval for at least this amount must exist.",
                                    "erc20Address": "address of the ERC20 token used to pay the fee."
                                }
                            }
                        },
                        "title": "Interface that allows financial contracts to pay oracle fees for their use of the system.",
                        "version": 1
                    },
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "gasEstimates": null,
                        "methodIdentifiers": {
                            "computeFinalFee(address)": "5b97aadd",
                            "computeRegularFee(uint256,uint256,(uint256))": "74201feb",
                            "payOracleFees()": "cd3a9b24",
                            "payOracleFeesErc20(address,(uint256))": "8659d232"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"computeFinalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"pfc\",\"type\":\"tuple\"}],\"name\":\"computeRegularFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"regularFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"latePenalty\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"payOracleFees\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"amount\",\"type\":\"tuple\"}],\"name\":\"payOracleFeesErc20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"computeFinalFee(address)\":{\"params\":{\"currency\":\"token used to pay the final fee.\"},\"returns\":{\"_0\":\"finalFee amount due.\"}},\"computeRegularFee(uint256,uint256,(uint256))\":{\"params\":{\"endTime\":\"end time until which the fee is paid.\",\"pfc\":\"\\\"profit from corruption\\\", or the maximum amount of margin currency that a token sponsor could extract from the contract through corrupting the price feed in their favor.\",\"startTime\":\"defines the beginning time from which the fee is paid.\"},\"returns\":{\"latePenalty\":\"for paying the fee after the deadline.\",\"regularFee\":\"amount owed for the duration from start to end time for the given pfc.\"}},\"payOracleFees()\":{\"details\":\"To be used by contracts whose margin currency is ETH.\"},\"payOracleFeesErc20(address,(uint256))\":{\"details\":\"To be used if the margin currency is an ERC20 token rather than ETH.\",\"params\":{\"amount\":\"number of tokens to transfer. An approval for at least this amount must exist.\",\"erc20Address\":\"address of the ERC20 token used to pay the fee.\"}}},\"title\":\"Interface that allows financial contracts to pay oracle fees for their use of the system.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"computeFinalFee(address)\":{\"notice\":\"Computes the final oracle fees that a contract should pay at settlement.\"},\"computeRegularFee(uint256,uint256,(uint256))\":{\"notice\":\"Computes the regular oracle fees that a contract should pay for a period.\"},\"payOracleFees()\":{\"notice\":\"Pays Oracle fees in ETH to the store.\"},\"payOracleFeesErc20(address,(uint256))\":{\"notice\":\"Pays oracle fees in the margin currency, erc20Address, to the store.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/interfaces/StoreInterface.sol\":\"StoreInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\\n\\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\",\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n// CAUTION\\n// This version of SafeMath should only be used with Solidity 0.8 or later,\\n// because it relies on the compiler's built in overflow checks.\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler\\n * now has built in overflow checking.\\n */\\nlibrary SafeMath {\\n    /**\\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            uint256 c = a + b;\\n            if (c < a) return (false, 0);\\n            return (true, c);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b > a) return (false, 0);\\n            return (true, a - b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\\n            // benefit is lost if 'b' is also tested.\\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\\n            if (a == 0) return (true, 0);\\n            uint256 c = a * b;\\n            if (c / a != b) return (false, 0);\\n            return (true, c);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b == 0) return (false, 0);\\n            return (true, a / b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\\n     *\\n     * _Available since v3.4._\\n     */\\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\\n        unchecked {\\n            if (b == 0) return (false, 0);\\n            return (true, a % b);\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a + b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting on\\n     * overflow (when the result is negative).\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a - b;\\n    }\\n\\n    /**\\n     * @dev Returns the multiplication of two unsigned integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a * b;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a / b;\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting when dividing by zero.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\\n        return a % b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\\n     * overflow (when the result is negative).\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {trySub}.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b <= a, errorMessage);\\n            return a - b;\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\\n     * uses an invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b > 0, errorMessage);\\n            return a / b;\\n        }\\n    }\\n\\n    /**\\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\\n     * reverting with custom message when dividing by zero.\\n     *\\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\\n     * message unnecessarily. For custom revert reasons use {tryMod}.\\n     *\\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\\n     * invalid opcode to revert (consuming all remaining gas).\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\\n        unchecked {\\n            require(b > 0, errorMessage);\\n            return a % b;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Wrappers over Solidity's arithmetic operations.\\n *\\n * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\\n * now has built in overflow checking.\\n */\\nlibrary SignedSafeMath {\\n    /**\\n     * @dev Returns the multiplication of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `*` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Multiplication cannot overflow.\\n     */\\n    function mul(int256 a, int256 b) internal pure returns (int256) {\\n        return a * b;\\n    }\\n\\n    /**\\n     * @dev Returns the integer division of two signed integers. Reverts on\\n     * division by zero. The result is rounded towards zero.\\n     *\\n     * Counterpart to Solidity's `/` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - The divisor cannot be zero.\\n     */\\n    function div(int256 a, int256 b) internal pure returns (int256) {\\n        return a / b;\\n    }\\n\\n    /**\\n     * @dev Returns the subtraction of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `-` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Subtraction cannot overflow.\\n     */\\n    function sub(int256 a, int256 b) internal pure returns (int256) {\\n        return a - b;\\n    }\\n\\n    /**\\n     * @dev Returns the addition of two signed integers, reverting on\\n     * overflow.\\n     *\\n     * Counterpart to Solidity's `+` operator.\\n     *\\n     * Requirements:\\n     *\\n     * - Addition cannot overflow.\\n     */\\n    function add(int256 a, int256 b) internal pure returns (int256) {\\n        return a + b;\\n    }\\n}\\n\",\"keccak256\":\"0xd1ddc24b24f12a347093844dd645c3a96bcdce05d1f51b8650946ad404cb3c40\",\"license\":\"MIT\"},\"contracts/common/implementation/FixedPoint.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/utils/math/SafeMath.sol\\\";\\nimport \\\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\\\";\\n\\n/**\\n * @title Library for fixed point arithmetic on uints\\n */\\nlibrary FixedPoint {\\n    using SafeMath for uint256;\\n    using SignedSafeMath for int256;\\n\\n    // Supports 18 decimals. E.g., 1e18 represents \\\"1\\\", 5e17 represents \\\"0.5\\\".\\n    // For unsigned values:\\n    //   This can represent a value up to (2^256 - 1)/10^18 = ~10^59. 10^59 will be stored internally as uint256 10^77.\\n    uint256 private constant FP_SCALING_FACTOR = 10**18;\\n\\n    // --------------------------------------- UNSIGNED -----------------------------------------------------------------------------\\n    struct Unsigned {\\n        uint256 rawValue;\\n    }\\n\\n    /**\\n     * @notice Constructs an `Unsigned` from an unscaled uint, e.g., `b=5` gets stored internally as `5*(10**18)`.\\n     * @param a uint to convert into a FixedPoint.\\n     * @return the converted FixedPoint.\\n     */\\n    function fromUnscaledUint(uint256 a) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.mul(FP_SCALING_FACTOR));\\n    }\\n\\n    /**\\n     * @notice Whether `a` is equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if equal, or False.\\n     */\\n    function isEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue == fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if equal, or False.\\n     */\\n    function isEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue == b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue > b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue > fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(uint256 a, Unsigned memory b) internal pure returns (bool) {\\n        return fromUnscaledUint(a).rawValue > b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue >= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue >= fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(uint256 a, Unsigned memory b) internal pure returns (bool) {\\n        return fromUnscaledUint(a).rawValue >= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue < b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue < fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(uint256 a, Unsigned memory b) internal pure returns (bool) {\\n        return fromUnscaledUint(a).rawValue < b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\\n        return a.rawValue <= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\\n        return a.rawValue <= fromUnscaledUint(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(uint256 a, Unsigned memory b) internal pure returns (bool) {\\n        return fromUnscaledUint(a).rawValue <= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice The minimum of `a` and `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the minimum of `a` and `b`.\\n     */\\n    function min(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return a.rawValue < b.rawValue ? a : b;\\n    }\\n\\n    /**\\n     * @notice The maximum of `a` and `b`.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the maximum of `a` and `b`.\\n     */\\n    function max(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return a.rawValue > b.rawValue ? a : b;\\n    }\\n\\n    /**\\n     * @notice Adds two `Unsigned`s, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the sum of `a` and `b`.\\n     */\\n    function add(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.rawValue.add(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Adds an `Unsigned` to an unscaled uint, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return the sum of `a` and `b`.\\n     */\\n    function add(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        return add(a, fromUnscaledUint(b));\\n    }\\n\\n    /**\\n     * @notice Subtracts two `Unsigned`s, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.rawValue.sub(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Subtracts an unscaled uint256 from an `Unsigned`, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        return sub(a, fromUnscaledUint(b));\\n    }\\n\\n    /**\\n     * @notice Subtracts an `Unsigned` from an unscaled uint256, reverting on overflow.\\n     * @param a a uint256.\\n     * @param b a FixedPoint.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(uint256 a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return sub(fromUnscaledUint(a), b);\\n    }\\n\\n    /**\\n     * @notice Multiplies two `Unsigned`s, reverting on overflow.\\n     * @dev This will \\\"floor\\\" the product.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mul(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        // There are two caveats with this computation:\\n        // 1. Max output for the represented number is ~10^41, otherwise an intermediate value overflows. 10^41 is\\n        // stored internally as a uint256 ~10^59.\\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 1.4 * 2e-18 = 2.8e-18, which\\n        // would round to 3, but this computation produces the result 2.\\n        // No need to use SafeMath because FP_SCALING_FACTOR != 0.\\n        return Unsigned(a.rawValue.mul(b.rawValue) / FP_SCALING_FACTOR);\\n    }\\n\\n    /**\\n     * @notice Multiplies an `Unsigned` and an unscaled uint256, reverting on overflow.\\n     * @dev This will \\\"floor\\\" the product.\\n     * @param a a FixedPoint.\\n     * @param b a uint256.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mul(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.rawValue.mul(b));\\n    }\\n\\n    /**\\n     * @notice Multiplies two `Unsigned`s and \\\"ceil's\\\" the product, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mulCeil(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        uint256 mulRaw = a.rawValue.mul(b.rawValue);\\n        uint256 mulFloor = mulRaw / FP_SCALING_FACTOR;\\n        uint256 mod = mulRaw.mod(FP_SCALING_FACTOR);\\n        if (mod != 0) {\\n            return Unsigned(mulFloor.add(1));\\n        } else {\\n            return Unsigned(mulFloor);\\n        }\\n    }\\n\\n    /**\\n     * @notice Multiplies an `Unsigned` and an unscaled uint256 and \\\"ceil's\\\" the product, reverting on overflow.\\n     * @param a a FixedPoint.\\n     * @param b a FixedPoint.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mulCeil(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        // Since b is an uint, there is no risk of truncation and we can just mul it normally\\n        return Unsigned(a.rawValue.mul(b));\\n    }\\n\\n    /**\\n     * @notice Divides one `Unsigned` by an `Unsigned`, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a FixedPoint numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        // There are two caveats with this computation:\\n        // 1. Max value for the number dividend `a` represents is ~10^41, otherwise an intermediate value overflows.\\n        // 10^41 is stored internally as a uint256 10^59.\\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 2 / 3 = 0.6 repeating, which\\n        // would round to 0.666666666666666667, but this computation produces the result 0.666666666666666666.\\n        return Unsigned(a.rawValue.mul(FP_SCALING_FACTOR).div(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Divides one `Unsigned` by an unscaled uint256, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a FixedPoint numerator.\\n     * @param b a uint256 denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        return Unsigned(a.rawValue.div(b));\\n    }\\n\\n    /**\\n     * @notice Divides one unscaled uint256 by an `Unsigned`, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a uint256 numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(uint256 a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        return div(fromUnscaledUint(a), b);\\n    }\\n\\n    /**\\n     * @notice Divides one `Unsigned` by an `Unsigned` and \\\"ceil's\\\" the quotient, reverting on overflow or division by 0.\\n     * @param a a FixedPoint numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function divCeil(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\\n        uint256 aScaled = a.rawValue.mul(FP_SCALING_FACTOR);\\n        uint256 divFloor = aScaled.div(b.rawValue);\\n        uint256 mod = aScaled.mod(b.rawValue);\\n        if (mod != 0) {\\n            return Unsigned(divFloor.add(1));\\n        } else {\\n            return Unsigned(divFloor);\\n        }\\n    }\\n\\n    /**\\n     * @notice Divides one `Unsigned` by an unscaled uint256 and \\\"ceil's\\\" the quotient, reverting on overflow or division by 0.\\n     * @param a a FixedPoint numerator.\\n     * @param b a uint256 denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function divCeil(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\\n        // Because it is possible that a quotient gets truncated, we can't just call \\\"Unsigned(a.rawValue.div(b))\\\"\\n        // similarly to mulCeil with a uint256 as the second parameter. Therefore we need to convert b into an Unsigned.\\n        // This creates the possibility of overflow if b is very large.\\n        return divCeil(a, fromUnscaledUint(b));\\n    }\\n\\n    /**\\n     * @notice Raises an `Unsigned` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\\n     * @dev This will \\\"floor\\\" the result.\\n     * @param a a FixedPoint numerator.\\n     * @param b a uint256 denominator.\\n     * @return output is `a` to the power of `b`.\\n     */\\n    function pow(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory output) {\\n        output = fromUnscaledUint(1);\\n        for (uint256 i = 0; i < b; i = i.add(1)) {\\n            output = mul(output, a);\\n        }\\n    }\\n\\n    // ------------------------------------------------- SIGNED -------------------------------------------------------------\\n    // Supports 18 decimals. E.g., 1e18 represents \\\"1\\\", 5e17 represents \\\"0.5\\\".\\n    // For signed values:\\n    //   This can represent a value up (or down) to +-(2^255 - 1)/10^18 = ~10^58. 10^58 will be stored internally as int256 10^76.\\n    int256 private constant SFP_SCALING_FACTOR = 10**18;\\n\\n    struct Signed {\\n        int256 rawValue;\\n    }\\n\\n    function fromSigned(Signed memory a) internal pure returns (Unsigned memory) {\\n        require(a.rawValue >= 0, \\\"Negative value provided\\\");\\n        return Unsigned(uint256(a.rawValue));\\n    }\\n\\n    function fromUnsigned(Unsigned memory a) internal pure returns (Signed memory) {\\n        require(a.rawValue <= uint256(type(int256).max), \\\"Unsigned too large\\\");\\n        return Signed(int256(a.rawValue));\\n    }\\n\\n    /**\\n     * @notice Constructs a `Signed` from an unscaled int, e.g., `b=5` gets stored internally as `5*(10**18)`.\\n     * @param a int to convert into a FixedPoint.Signed.\\n     * @return the converted FixedPoint.Signed.\\n     */\\n    function fromUnscaledInt(int256 a) internal pure returns (Signed memory) {\\n        return Signed(a.mul(SFP_SCALING_FACTOR));\\n    }\\n\\n    /**\\n     * @notice Whether `a` is equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a int256.\\n     * @return True if equal, or False.\\n     */\\n    function isEqual(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue == fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if equal, or False.\\n     */\\n    function isEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue == b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue > b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue > fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than `b`.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a > b`, or False.\\n     */\\n    function isGreaterThan(int256 a, Signed memory b) internal pure returns (bool) {\\n        return fromUnscaledInt(a).rawValue > b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue >= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue >= fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is greater than or equal to `b`.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a >= b`, or False.\\n     */\\n    function isGreaterThanOrEqual(int256 a, Signed memory b) internal pure returns (bool) {\\n        return fromUnscaledInt(a).rawValue >= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue < b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue < fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than `b`.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a < b`, or False.\\n     */\\n    function isLessThan(int256 a, Signed memory b) internal pure returns (bool) {\\n        return fromUnscaledInt(a).rawValue < b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\\n        return a.rawValue <= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(Signed memory a, int256 b) internal pure returns (bool) {\\n        return a.rawValue <= fromUnscaledInt(b).rawValue;\\n    }\\n\\n    /**\\n     * @notice Whether `a` is less than or equal to `b`.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return True if `a <= b`, or False.\\n     */\\n    function isLessThanOrEqual(int256 a, Signed memory b) internal pure returns (bool) {\\n        return fromUnscaledInt(a).rawValue <= b.rawValue;\\n    }\\n\\n    /**\\n     * @notice The minimum of `a` and `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the minimum of `a` and `b`.\\n     */\\n    function min(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        return a.rawValue < b.rawValue ? a : b;\\n    }\\n\\n    /**\\n     * @notice The maximum of `a` and `b`.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the maximum of `a` and `b`.\\n     */\\n    function max(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        return a.rawValue > b.rawValue ? a : b;\\n    }\\n\\n    /**\\n     * @notice Adds two `Signed`s, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the sum of `a` and `b`.\\n     */\\n    function add(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        return Signed(a.rawValue.add(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Adds an `Signed` to an unscaled int, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return the sum of `a` and `b`.\\n     */\\n    function add(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        return add(a, fromUnscaledInt(b));\\n    }\\n\\n    /**\\n     * @notice Subtracts two `Signed`s, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        return Signed(a.rawValue.sub(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Subtracts an unscaled int256 from an `Signed`, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        return sub(a, fromUnscaledInt(b));\\n    }\\n\\n    /**\\n     * @notice Subtracts an `Signed` from an unscaled int256, reverting on overflow.\\n     * @param a an int256.\\n     * @param b a FixedPoint.Signed.\\n     * @return the difference of `a` and `b`.\\n     */\\n    function sub(int256 a, Signed memory b) internal pure returns (Signed memory) {\\n        return sub(fromUnscaledInt(a), b);\\n    }\\n\\n    /**\\n     * @notice Multiplies two `Signed`s, reverting on overflow.\\n     * @dev This will \\\"floor\\\" the product.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mul(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        // There are two caveats with this computation:\\n        // 1. Max output for the represented number is ~10^41, otherwise an intermediate value overflows. 10^41 is\\n        // stored internally as an int256 ~10^59.\\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 1.4 * 2e-18 = 2.8e-18, which\\n        // would round to 3, but this computation produces the result 2.\\n        // No need to use SafeMath because SFP_SCALING_FACTOR != 0.\\n        return Signed(a.rawValue.mul(b.rawValue) / SFP_SCALING_FACTOR);\\n    }\\n\\n    /**\\n     * @notice Multiplies an `Signed` and an unscaled int256, reverting on overflow.\\n     * @dev This will \\\"floor\\\" the product.\\n     * @param a a FixedPoint.Signed.\\n     * @param b an int256.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mul(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        return Signed(a.rawValue.mul(b));\\n    }\\n\\n    /**\\n     * @notice Multiplies two `Signed`s and \\\"ceil's\\\" the product, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mulAwayFromZero(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        int256 mulRaw = a.rawValue.mul(b.rawValue);\\n        int256 mulTowardsZero = mulRaw / SFP_SCALING_FACTOR;\\n        // Manual mod because SignedSafeMath doesn't support it.\\n        int256 mod = mulRaw % SFP_SCALING_FACTOR;\\n        if (mod != 0) {\\n            bool isResultPositive = isLessThan(a, 0) == isLessThan(b, 0);\\n            int256 valueToAdd = isResultPositive ? int256(1) : int256(-1);\\n            return Signed(mulTowardsZero.add(valueToAdd));\\n        } else {\\n            return Signed(mulTowardsZero);\\n        }\\n    }\\n\\n    /**\\n     * @notice Multiplies an `Signed` and an unscaled int256 and \\\"ceil's\\\" the product, reverting on overflow.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a FixedPoint.Signed.\\n     * @return the product of `a` and `b`.\\n     */\\n    function mulAwayFromZero(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        // Since b is an int, there is no risk of truncation and we can just mul it normally\\n        return Signed(a.rawValue.mul(b));\\n    }\\n\\n    /**\\n     * @notice Divides one `Signed` by an `Signed`, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a FixedPoint numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        // There are two caveats with this computation:\\n        // 1. Max value for the number dividend `a` represents is ~10^41, otherwise an intermediate value overflows.\\n        // 10^41 is stored internally as an int256 10^59.\\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 2 / 3 = 0.6 repeating, which\\n        // would round to 0.666666666666666667, but this computation produces the result 0.666666666666666666.\\n        return Signed(a.rawValue.mul(SFP_SCALING_FACTOR).div(b.rawValue));\\n    }\\n\\n    /**\\n     * @notice Divides one `Signed` by an unscaled int256, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a a FixedPoint numerator.\\n     * @param b an int256 denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        return Signed(a.rawValue.div(b));\\n    }\\n\\n    /**\\n     * @notice Divides one unscaled int256 by an `Signed`, reverting on overflow or division by 0.\\n     * @dev This will \\\"floor\\\" the quotient.\\n     * @param a an int256 numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function div(int256 a, Signed memory b) internal pure returns (Signed memory) {\\n        return div(fromUnscaledInt(a), b);\\n    }\\n\\n    /**\\n     * @notice Divides one `Signed` by an `Signed` and \\\"ceil's\\\" the quotient, reverting on overflow or division by 0.\\n     * @param a a FixedPoint numerator.\\n     * @param b a FixedPoint denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function divAwayFromZero(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\\n        int256 aScaled = a.rawValue.mul(SFP_SCALING_FACTOR);\\n        int256 divTowardsZero = aScaled.div(b.rawValue);\\n        // Manual mod because SignedSafeMath doesn't support it.\\n        int256 mod = aScaled % b.rawValue;\\n        if (mod != 0) {\\n            bool isResultPositive = isLessThan(a, 0) == isLessThan(b, 0);\\n            int256 valueToAdd = isResultPositive ? int256(1) : int256(-1);\\n            return Signed(divTowardsZero.add(valueToAdd));\\n        } else {\\n            return Signed(divTowardsZero);\\n        }\\n    }\\n\\n    /**\\n     * @notice Divides one `Signed` by an unscaled int256 and \\\"ceil's\\\" the quotient, reverting on overflow or division by 0.\\n     * @param a a FixedPoint numerator.\\n     * @param b an int256 denominator.\\n     * @return the quotient of `a` divided by `b`.\\n     */\\n    function divAwayFromZero(Signed memory a, int256 b) internal pure returns (Signed memory) {\\n        // Because it is possible that a quotient gets truncated, we can't just call \\\"Signed(a.rawValue.div(b))\\\"\\n        // similarly to mulCeil with an int256 as the second parameter. Therefore we need to convert b into an Signed.\\n        // This creates the possibility of overflow if b is very large.\\n        return divAwayFromZero(a, fromUnscaledInt(b));\\n    }\\n\\n    /**\\n     * @notice Raises an `Signed` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\\n     * @dev This will \\\"floor\\\" the result.\\n     * @param a a FixedPoint.Signed.\\n     * @param b a uint256 (negative exponents are not allowed).\\n     * @return output is `a` to the power of `b`.\\n     */\\n    function pow(Signed memory a, uint256 b) internal pure returns (Signed memory output) {\\n        output = fromUnscaledInt(1);\\n        for (uint256 i = 0; i < b; i = i.add(1)) {\\n            output = mul(output, a);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x996b97cc4fa5da4064e3aee500edc6972485d59a9334ceec81155e2c2f484dae\",\"license\":\"AGPL-3.0-only\"},\"contracts/oracle/interfaces/StoreInterface.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0-only\\npragma solidity ^0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"../../common/implementation/FixedPoint.sol\\\";\\n\\n/**\\n * @title Interface that allows financial contracts to pay oracle fees for their use of the system.\\n */\\ninterface StoreInterface {\\n    /**\\n     * @notice Pays Oracle fees in ETH to the store.\\n     * @dev To be used by contracts whose margin currency is ETH.\\n     */\\n    function payOracleFees() external payable;\\n\\n    /**\\n     * @notice Pays oracle fees in the margin currency, erc20Address, to the store.\\n     * @dev To be used if the margin currency is an ERC20 token rather than ETH.\\n     * @param erc20Address address of the ERC20 token used to pay the fee.\\n     * @param amount number of tokens to transfer. An approval for at least this amount must exist.\\n     */\\n    function payOracleFeesErc20(address erc20Address, FixedPoint.Unsigned calldata amount) external;\\n\\n    /**\\n     * @notice Computes the regular oracle fees that a contract should pay for a period.\\n     * @param startTime defines the beginning time from which the fee is paid.\\n     * @param endTime end time until which the fee is paid.\\n     * @param pfc \\\"profit from corruption\\\", or the maximum amount of margin currency that a\\n     * token sponsor could extract from the contract through corrupting the price feed in their favor.\\n     * @return regularFee amount owed for the duration from start to end time for the given pfc.\\n     * @return latePenalty for paying the fee after the deadline.\\n     */\\n    function computeRegularFee(\\n        uint256 startTime,\\n        uint256 endTime,\\n        FixedPoint.Unsigned calldata pfc\\n    ) external view returns (FixedPoint.Unsigned memory regularFee, FixedPoint.Unsigned memory latePenalty);\\n\\n    /**\\n     * @notice Computes the final oracle fees that a contract should pay at settlement.\\n     * @param currency token used to pay the final fee.\\n     * @return finalFee amount due.\\n     */\\n    function computeFinalFee(address currency) external view returns (FixedPoint.Unsigned memory);\\n}\\n\",\"keccak256\":\"0xbb73671684309c91ad5ef3da1474051d03f2e7d5882bed7f5c4317e5d4c768df\",\"license\":\"AGPL-3.0-only\"}},\"version\":1}",
                    "storageLayout": {
                        "storage": [],
                        "types": null
                    },
                    "userdoc": {
                        "kind": "user",
                        "methods": {
                            "computeFinalFee(address)": {
                                "notice": "Computes the final oracle fees that a contract should pay at settlement."
                            },
                            "computeRegularFee(uint256,uint256,(uint256))": {
                                "notice": "Computes the regular oracle fees that a contract should pay for a period."
                            },
                            "payOracleFees()": {
                                "notice": "Pays Oracle fees in ETH to the store."
                            },
                            "payOracleFeesErc20(address,(uint256))": {
                                "notice": "Pays oracle fees in the margin currency, erc20Address, to the store."
                            }
                        },
                        "version": 1
                    }
                }
            }
        },
        "errors": [
            {
                "component": "general",
                "errorCode": "1878",
                "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> @uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\n\n",
                "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
                "severity": "warning",
                "sourceLocation": {
                    "end": -1,
                    "file": "@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol",
                    "start": -1
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "1878",
                "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/common/implementation/MultiCaller.sol\n\n",
                "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
                "severity": "warning",
                "sourceLocation": {
                    "end": -1,
                    "file": "contracts/common/implementation/MultiCaller.sol",
                    "start": -1
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "1878",
                "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/external/avm/AVM_CrossDomainEnabled.sol\n\n",
                "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
                "severity": "warning",
                "sourceLocation": {
                    "end": -1,
                    "file": "contracts/external/avm/AVM_CrossDomainEnabled.sol",
                    "start": -1
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "1878",
                "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/external/avm/interfaces/ArbSys.sol\n\n",
                "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
                "severity": "warning",
                "sourceLocation": {
                    "end": -1,
                    "file": "contracts/external/avm/interfaces/ArbSys.sol",
                    "start": -1
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "1878",
                "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol\n\n",
                "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
                "severity": "warning",
                "sourceLocation": {
                    "end": -1,
                    "file": "contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol",
                    "start": -1
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "1878",
                "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol\n\n",
                "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
                "severity": "warning",
                "sourceLocation": {
                    "end": -1,
                    "file": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol",
                    "start": -1
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "1878",
                "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/insured-bridge/test/Arbitrum_InboxMock.sol\n\n",
                "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
                "severity": "warning",
                "sourceLocation": {
                    "end": -1,
                    "file": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "start": -1
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "1878",
                "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol\n\n",
                "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
                "severity": "warning",
                "sourceLocation": {
                    "end": -1,
                    "file": "contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol",
                    "start": -1
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "3628",
                "formattedMessage": "Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\n  --> @uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:14:1:\n   |\n14 | contract Arbitrum_ParentMessenger is\n   | ^ (Relevant source part starts here and spans across multiple lines).\nNote: The payable fallback function is defined here.\n   --> @uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol:182:5:\n    |\n182 |     fallback() external payable {}\n    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
                "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
                "secondarySourceLocations": [
                    {
                        "end": 9228,
                        "file": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol",
                        "message": "The payable fallback function is defined here.",
                        "start": 9198
                    }
                ],
                "severity": "warning",
                "sourceLocation": {
                    "end": 10644,
                    "file": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol",
                    "start": 497
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "3628",
                "formattedMessage": "Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.\n  --> contracts/insured-bridge/ovm/Optimism_Wrapper.sol:19:1:\n   |\n19 | contract Optimism_Wrapper is Ownable {\n   | ^ (Relevant source part starts here and spans across multiple lines).\nNote: The payable fallback function is defined here.\n  --> contracts/insured-bridge/ovm/Optimism_Wrapper.sol:56:5:\n   |\n56 |     fallback() external payable {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n",
                "message": "This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.",
                "secondarySourceLocations": [
                    {
                        "end": 2212,
                        "file": "contracts/insured-bridge/ovm/Optimism_Wrapper.sol",
                        "message": "The payable fallback function is defined here.",
                        "start": 2150
                    }
                ],
                "severity": "warning",
                "sourceLocation": {
                    "end": 2214,
                    "file": "contracts/insured-bridge/ovm/Optimism_Wrapper.sol",
                    "start": 552
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "5667",
                "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/insured-bridge/test/Arbitrum_InboxMock.sol:34:9:\n   |\n34 |         address destAddr,\n   |         ^^^^^^^^^^^^^^^^\n\n",
                "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
                "severity": "warning",
                "sourceLocation": {
                    "end": 1319,
                    "file": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "start": 1303
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "5667",
                "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/insured-bridge/test/Arbitrum_InboxMock.sol:35:9:\n   |\n35 |         uint256 l2CallValue,\n   |         ^^^^^^^^^^^^^^^^^^^\n\n",
                "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
                "severity": "warning",
                "sourceLocation": {
                    "end": 1348,
                    "file": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "start": 1329
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "5667",
                "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/insured-bridge/test/Arbitrum_InboxMock.sol:36:9:\n   |\n36 |         uint256 maxSubmissionCost,\n   |         ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
                "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
                "severity": "warning",
                "sourceLocation": {
                    "end": 1383,
                    "file": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "start": 1358
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "5667",
                "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/insured-bridge/test/Arbitrum_InboxMock.sol:37:9:\n   |\n37 |         address excessFeeRefundAddress,\n   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
                "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
                "severity": "warning",
                "sourceLocation": {
                    "end": 1423,
                    "file": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "start": 1393
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "5667",
                "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/insured-bridge/test/Arbitrum_InboxMock.sol:38:9:\n   |\n38 |         address callValueRefundAddress,\n   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n",
                "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
                "severity": "warning",
                "sourceLocation": {
                    "end": 1463,
                    "file": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "start": 1433
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "5667",
                "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/insured-bridge/test/Arbitrum_InboxMock.sol:39:9:\n   |\n39 |         uint256 maxGas,\n   |         ^^^^^^^^^^^^^^\n\n",
                "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
                "severity": "warning",
                "sourceLocation": {
                    "end": 1487,
                    "file": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "start": 1473
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "5667",
                "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/insured-bridge/test/Arbitrum_InboxMock.sol:40:9:\n   |\n40 |         uint256 gasPriceBid,\n   |         ^^^^^^^^^^^^^^^^^^^\n\n",
                "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
                "severity": "warning",
                "sourceLocation": {
                    "end": 1516,
                    "file": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "start": 1497
                },
                "type": "Warning"
            },
            {
                "component": "general",
                "errorCode": "5667",
                "formattedMessage": "Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n  --> contracts/insured-bridge/test/Arbitrum_InboxMock.sol:41:9:\n   |\n41 |         bytes calldata data\n   |         ^^^^^^^^^^^^^^^^^^^\n\n",
                "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.",
                "severity": "warning",
                "sourceLocation": {
                    "end": 1545,
                    "file": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "start": 1526
                },
                "type": "Warning"
            }
        ],
        "sources": {
            "@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol": {
                "ast": {
                    "absolutePath": "@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol",
                    "exportedSymbols": {
                        "IL2ERC20Bridge": [
                            93
                        ]
                    },
                    "id": 94,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".9"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "32:23:0"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IL2ERC20Bridge",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 2,
                                "nodeType": "StructuredDocumentation",
                                "src": "57:32:0",
                                "text": " @title IL2ERC20Bridge"
                            },
                            "fullyImplemented": false,
                            "id": 93,
                            "linearizedBaseContracts": [
                                93
                            ],
                            "name": "IL2ERC20Bridge",
                            "nameLocation": "100:14:0",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "anonymous": false,
                                    "id": 16,
                                    "name": "WithdrawalInitiated",
                                    "nameLocation": "177:19:0",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 15,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "_l1Token",
                                                "nameLocation": "222:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 16,
                                                "src": "206:24:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "206:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "_l2Token",
                                                "nameLocation": "256:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 16,
                                                "src": "240:24:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "240:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "_from",
                                                "nameLocation": "290:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 16,
                                                "src": "274:21:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "274:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "_to",
                                                "nameLocation": "313:3:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 16,
                                                "src": "305:11:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "305:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 12,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "_amount",
                                                "nameLocation": "334:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 16,
                                                "src": "326:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 11,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "326:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 14,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "_data",
                                                "nameLocation": "357:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 16,
                                                "src": "351:11:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 13,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "351:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "196:172:0"
                                    },
                                    "src": "171:198:0"
                                },
                                {
                                    "anonymous": false,
                                    "id": 30,
                                    "name": "DepositFinalized",
                                    "nameLocation": "381:16:0",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 29,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 18,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "_l1Token",
                                                "nameLocation": "423:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 30,
                                                "src": "407:24:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 17,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "407:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 20,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "_l2Token",
                                                "nameLocation": "457:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 30,
                                                "src": "441:24:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 19,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "441:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 22,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "_from",
                                                "nameLocation": "491:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 30,
                                                "src": "475:21:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 21,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "475:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 24,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "_to",
                                                "nameLocation": "514:3:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 30,
                                                "src": "506:11:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 23,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "506:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 26,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "_amount",
                                                "nameLocation": "535:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 30,
                                                "src": "527:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 25,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "527:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 28,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "_data",
                                                "nameLocation": "558:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 30,
                                                "src": "552:11:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 27,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "552:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "397:172:0"
                                    },
                                    "src": "375:195:0"
                                },
                                {
                                    "anonymous": false,
                                    "id": 44,
                                    "name": "DepositFailed",
                                    "nameLocation": "582:13:0",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 43,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 32,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "_l1Token",
                                                "nameLocation": "621:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 44,
                                                "src": "605:24:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 31,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "605:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 34,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "_l2Token",
                                                "nameLocation": "655:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 44,
                                                "src": "639:24:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 33,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "639:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 36,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "_from",
                                                "nameLocation": "689:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 44,
                                                "src": "673:21:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 35,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "673:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 38,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "_to",
                                                "nameLocation": "712:3:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 44,
                                                "src": "704:11:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 37,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "704:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 40,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "_amount",
                                                "nameLocation": "733:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 44,
                                                "src": "725:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 39,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "725:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 42,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "_data",
                                                "nameLocation": "756:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 44,
                                                "src": "750:11:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 41,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "750:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "595:172:0"
                                    },
                                    "src": "576:192:0"
                                },
                                {
                                    "documentation": {
                                        "id": 45,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "854:144:0",
                                        "text": " @dev get the address of the corresponding L1 bridge contract.\n @return Address of the corresponding L1 bridge contract."
                                    },
                                    "functionSelector": "36c717c1",
                                    "id": 50,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "l1TokenBridge",
                                    "nameLocation": "1012:13:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 46,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1025:2:0"
                                    },
                                    "returnParameters": {
                                        "id": 49,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 48,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 50,
                                                "src": "1046:7:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 47,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1046:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1045:9:0"
                                    },
                                    "scope": 93,
                                    "src": "1003:52:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 51,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1061:557:0",
                                        "text": " @dev initiate a withdraw of some tokens to the caller's account on L1\n @param _l2Token Address of L2 token where withdrawal was initiated.\n @param _amount Amount of the token to withdraw.\n param _l1Gas Unused, but included for potential forward compatibility considerations.\n @param _data Optional data to forward to L1. This data is provided\n        solely as a convenience for external contracts. Aside from enforcing a maximum\n        length, these contracts provide no guarantees about its content."
                                    },
                                    "functionSelector": "32b7006d",
                                    "id": 62,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "withdraw",
                                    "nameLocation": "1632:8:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 60,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 53,
                                                "mutability": "mutable",
                                                "name": "_l2Token",
                                                "nameLocation": "1658:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 62,
                                                "src": "1650:16:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 52,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1650:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 55,
                                                "mutability": "mutable",
                                                "name": "_amount",
                                                "nameLocation": "1684:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 62,
                                                "src": "1676:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 54,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1676:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 57,
                                                "mutability": "mutable",
                                                "name": "_l1Gas",
                                                "nameLocation": "1708:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 62,
                                                "src": "1701:13:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 56,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1701:6:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 59,
                                                "mutability": "mutable",
                                                "name": "_data",
                                                "nameLocation": "1739:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 62,
                                                "src": "1724:20:0",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 58,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1724:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1640:110:0"
                                    },
                                    "returnParameters": {
                                        "id": 61,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1759:0:0"
                                    },
                                    "scope": 93,
                                    "src": "1623:137:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 63,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1766:614:0",
                                        "text": " @dev initiate a withdraw of some token to a recipient's account on L1.\n @param _l2Token Address of L2 token where withdrawal is initiated.\n @param _to L1 adress to credit the withdrawal to.\n @param _amount Amount of the token to withdraw.\n param _l1Gas Unused, but included for potential forward compatibility considerations.\n @param _data Optional data to forward to L1. This data is provided\n        solely as a convenience for external contracts. Aside from enforcing a maximum\n        length, these contracts provide no guarantees about its content."
                                    },
                                    "functionSelector": "a3a79548",
                                    "id": 76,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "withdrawTo",
                                    "nameLocation": "2394:10:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 74,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 65,
                                                "mutability": "mutable",
                                                "name": "_l2Token",
                                                "nameLocation": "2422:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 76,
                                                "src": "2414:16:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 64,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2414:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 67,
                                                "mutability": "mutable",
                                                "name": "_to",
                                                "nameLocation": "2448:3:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 76,
                                                "src": "2440:11:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 66,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2440:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 69,
                                                "mutability": "mutable",
                                                "name": "_amount",
                                                "nameLocation": "2469:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 76,
                                                "src": "2461:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 68,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2461:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 71,
                                                "mutability": "mutable",
                                                "name": "_l1Gas",
                                                "nameLocation": "2493:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 76,
                                                "src": "2486:13:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 70,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2486:6:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 73,
                                                "mutability": "mutable",
                                                "name": "_data",
                                                "nameLocation": "2524:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 76,
                                                "src": "2509:20:0",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 72,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2509:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2404:131:0"
                                    },
                                    "returnParameters": {
                                        "id": 75,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2544:0:0"
                                    },
                                    "scope": 93,
                                    "src": "2385:160:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 77,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2646:787:0",
                                        "text": " @dev Complete a deposit from L1 to L2, and credits funds to the recipient's balance of this\n L2 token. This call will fail if it did not originate from a corresponding deposit in\n L1StandardTokenBridge.\n @param _l1Token Address for the l1 token this is called with\n @param _l2Token Address for the l2 token this is called with\n @param _from Account to pull the deposit from on L2.\n @param _to Address to receive the withdrawal at\n @param _amount Amount of the token to withdraw\n @param _data Data provider by the sender on L1. This data is provided\n        solely as a convenience for external contracts. Aside from enforcing a maximum\n        length, these contracts provide no guarantees about its content."
                                    },
                                    "functionSelector": "662a633a",
                                    "id": 92,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "finalizeDeposit",
                                    "nameLocation": "3447:15:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 90,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 79,
                                                "mutability": "mutable",
                                                "name": "_l1Token",
                                                "nameLocation": "3480:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 92,
                                                "src": "3472:16:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 78,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3472:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 81,
                                                "mutability": "mutable",
                                                "name": "_l2Token",
                                                "nameLocation": "3506:8:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 92,
                                                "src": "3498:16:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 80,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3498:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 83,
                                                "mutability": "mutable",
                                                "name": "_from",
                                                "nameLocation": "3532:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 92,
                                                "src": "3524:13:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 82,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3524:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 85,
                                                "mutability": "mutable",
                                                "name": "_to",
                                                "nameLocation": "3555:3:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 92,
                                                "src": "3547:11:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 84,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3547:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 87,
                                                "mutability": "mutable",
                                                "name": "_amount",
                                                "nameLocation": "3576:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 92,
                                                "src": "3568:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 86,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3568:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 89,
                                                "mutability": "mutable",
                                                "name": "_data",
                                                "nameLocation": "3608:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 92,
                                                "src": "3593:20:0",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 88,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3593:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3462:157:0"
                                    },
                                    "returnParameters": {
                                        "id": 91,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3628:0:0"
                                    },
                                    "scope": 93,
                                    "src": "3438:191:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 94,
                            "src": "90:3541:0",
                            "usedErrors": []
                        }
                    ],
                    "src": "32:3600:0"
                },
                "id": 0
            },
            "@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol": {
                "ast": {
                    "absolutePath": "@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol",
                    "exportedSymbols": {
                        "CrossDomainEnabled": [
                            172
                        ],
                        "ICrossDomainMessenger": [
                            211
                        ]
                    },
                    "id": 173,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 95,
                            "literals": [
                                "solidity",
                                ">",
                                "0.5",
                                ".0",
                                "<",
                                "0.9",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "32:30:1"
                        },
                        {
                            "absolutePath": "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol",
                            "file": "./ICrossDomainMessenger.sol",
                            "id": 97,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 173,
                            "sourceUnit": 212,
                            "src": "88:68:1",
                            "symbolAliases": [
                                {
                                    "foreign": {
                                        "id": 96,
                                        "name": "ICrossDomainMessenger",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "src": "97:21:1",
                                        "typeDescriptions": {}
                                    },
                                    "nameLocation": "-1:-1:-1"
                                }
                            ],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "CrossDomainEnabled",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 98,
                                "nodeType": "StructuredDocumentation",
                                "src": "158:165:1",
                                "text": " @title CrossDomainEnabled\n @dev Helper contract for contracts performing cross-domain communications\n Compiler used: defined by inheriting contract"
                            },
                            "fullyImplemented": true,
                            "id": 172,
                            "linearizedBaseContracts": [
                                172
                            ],
                            "name": "CrossDomainEnabled",
                            "nameLocation": "333:18:1",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "3cb747bf",
                                    "id": 100,
                                    "mutability": "mutable",
                                    "name": "messenger",
                                    "nameLocation": "515:9:1",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 172,
                                    "src": "500:24:1",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 99,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "500:7:1",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 110,
                                        "nodeType": "Block",
                                        "src": "727:39:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 108,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 106,
                                                        "name": "messenger",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 100,
                                                        "src": "737:9:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 107,
                                                        "name": "_messenger",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 103,
                                                        "src": "749:10:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "737:22:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 109,
                                                "nodeType": "ExpressionStatement",
                                                "src": "737:22:1"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 101,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "596:94:1",
                                        "text": " @param _messenger Address of the CrossDomainMessenger on the current layer."
                                    },
                                    "id": 111,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 104,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 103,
                                                "mutability": "mutable",
                                                "name": "_messenger",
                                                "nameLocation": "715:10:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 111,
                                                "src": "707:18:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 102,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "707:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "706:20:1"
                                    },
                                    "returnParameters": {
                                        "id": 105,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "727:0:1"
                                    },
                                    "scope": 172,
                                    "src": "695:71:1",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 139,
                                        "nodeType": "Block",
                                        "src": "1168:348:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 124,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 117,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "1199:3:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 118,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "1199:10:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 121,
                                                                            "name": "getCrossDomainMessenger",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 152,
                                                                            "src": "1221:23:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_contract$_ICrossDomainMessenger_$211_$",
                                                                                "typeString": "function () returns (contract ICrossDomainMessenger)"
                                                                            }
                                                                        },
                                                                        "id": 122,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "1221:25:1",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_ICrossDomainMessenger_$211",
                                                                            "typeString": "contract ICrossDomainMessenger"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_ICrossDomainMessenger_$211",
                                                                            "typeString": "contract ICrossDomainMessenger"
                                                                        }
                                                                    ],
                                                                    "id": 120,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "1213:7:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 119,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "1213:7:1",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 123,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "1213:34:1",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "1199:48:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f564d5f58434841494e3a206d657373656e67657220636f6e747261637420756e61757468656e74696361746564",
                                                            "id": 125,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1261:48:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0",
                                                                "typeString": "literal_string \"OVM_XCHAIN: messenger contract unauthenticated\""
                                                            },
                                                            "value": "OVM_XCHAIN: messenger contract unauthenticated"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_5b2b17fa57c18b360a25ff5b64e8a89fcbfec4633e9c1ab0bc3e17241dab5bf0",
                                                                "typeString": "literal_string \"OVM_XCHAIN: messenger contract unauthenticated\""
                                                            }
                                                        ],
                                                        "id": 116,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1178:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 126,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1178:141:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 127,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1178:141:1"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 134,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "expression": {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 129,
                                                                            "name": "getCrossDomainMessenger",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 152,
                                                                            "src": "1351:23:1",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_contract$_ICrossDomainMessenger_$211_$",
                                                                                "typeString": "function () returns (contract ICrossDomainMessenger)"
                                                                            }
                                                                        },
                                                                        "id": 130,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "1351:25:1",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_ICrossDomainMessenger_$211",
                                                                            "typeString": "contract ICrossDomainMessenger"
                                                                        }
                                                                    },
                                                                    "id": 131,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "xDomainMessageSender",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 200,
                                                                    "src": "1351:46:1",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                                        "typeString": "function () view external returns (address)"
                                                                    }
                                                                },
                                                                "id": 132,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "1351:48:1",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 133,
                                                                "name": "_sourceDomainAccount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 114,
                                                                "src": "1403:20:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "1351:72:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f6d61696e206d657373616765",
                                                            "id": 135,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1437:50:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099",
                                                                "typeString": "literal_string \"OVM_XCHAIN: wrong sender of cross-domain message\""
                                                            },
                                                            "value": "OVM_XCHAIN: wrong sender of cross-domain message"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b9f330afcd8426930dd3959aa423b89339071f6d325fff04c2294de8b5f06099",
                                                                "typeString": "literal_string \"OVM_XCHAIN: wrong sender of cross-domain message\""
                                                            }
                                                        ],
                                                        "id": 128,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1330:7:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 136,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1330:167:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 137,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1330:167:1"
                                            },
                                            {
                                                "id": 138,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1508:1:1"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 112,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "858:239:1",
                                        "text": " Enforces that the modified function is only callable by a specific cross-domain account.\n @param _sourceDomainAccount The only account on the originating domain which is\n  authenticated to call this function."
                                    },
                                    "id": 140,
                                    "name": "onlyFromCrossDomainAccount",
                                    "nameLocation": "1111:26:1",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 115,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 114,
                                                "mutability": "mutable",
                                                "name": "_sourceDomainAccount",
                                                "nameLocation": "1146:20:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 140,
                                                "src": "1138:28:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 113,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1138:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1137:30:1"
                                    },
                                    "src": "1102:414:1",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 151,
                                        "nodeType": "Block",
                                        "src": "1921:56:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 148,
                                                            "name": "messenger",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 100,
                                                            "src": "1960:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 147,
                                                        "name": "ICrossDomainMessenger",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 211,
                                                        "src": "1938:21:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_ICrossDomainMessenger_$211_$",
                                                            "typeString": "type(contract ICrossDomainMessenger)"
                                                        }
                                                    },
                                                    "id": 149,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1938:32:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_ICrossDomainMessenger_$211",
                                                        "typeString": "contract ICrossDomainMessenger"
                                                    }
                                                },
                                                "functionReturnParameters": 146,
                                                "id": 150,
                                                "nodeType": "Return",
                                                "src": "1931:39:1"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 141,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1608:224:1",
                                        "text": " Gets the messenger, usually from storage. This function is exposed in case a child contract\n needs to override.\n @return The address of the cross-domain messenger contract which should be used."
                                    },
                                    "id": 152,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getCrossDomainMessenger",
                                    "nameLocation": "1846:23:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 142,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1869:2:1"
                                    },
                                    "returnParameters": {
                                        "id": 146,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 145,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 152,
                                                "src": "1898:21:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ICrossDomainMessenger_$211",
                                                    "typeString": "contract ICrossDomainMessenger"
                                                },
                                                "typeName": {
                                                    "id": 144,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 143,
                                                        "name": "ICrossDomainMessenger",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 211,
                                                        "src": "1898:21:1"
                                                    },
                                                    "referencedDeclaration": 211,
                                                    "src": "1898:21:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_ICrossDomainMessenger_$211",
                                                        "typeString": "contract ICrossDomainMessenger"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1897:23:1"
                                    },
                                    "scope": 172,
                                    "src": "1837:140:1",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 170,
                                        "nodeType": "Block",
                                        "src": "2498:95:1",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 165,
                                                            "name": "_crossDomainTarget",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 155,
                                                            "src": "2546:18:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 166,
                                                            "name": "_message",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 159,
                                                            "src": "2566:8:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 167,
                                                            "name": "_gasLimit",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 157,
                                                            "src": "2576:9:1",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 162,
                                                                "name": "getCrossDomainMessenger",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 152,
                                                                "src": "2508:23:1",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_contract$_ICrossDomainMessenger_$211_$",
                                                                    "typeString": "function () returns (contract ICrossDomainMessenger)"
                                                                }
                                                            },
                                                            "id": 163,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2508:25:1",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ICrossDomainMessenger_$211",
                                                                "typeString": "contract ICrossDomainMessenger"
                                                            }
                                                        },
                                                        "id": 164,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sendMessage",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 210,
                                                        "src": "2508:37:1",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$",
                                                            "typeString": "function (address,bytes memory,uint32) external"
                                                        }
                                                    },
                                                    "id": 168,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2508:78:1",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 169,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2508:78:1"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 153,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1983:370:1",
                                        "text": "q\n Sends a message to an account on another domain\n @param _crossDomainTarget The intended recipient on the destination domain\n @param _message The data to send to the target (usually calldata to a function with\n  `onlyFromCrossDomainAccount()`)\n @param _gasLimit The gasLimit for the receipt of the message on the target domain."
                                    },
                                    "id": 171,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendCrossDomainMessage",
                                    "nameLocation": "2367:22:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 160,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 155,
                                                "mutability": "mutable",
                                                "name": "_crossDomainTarget",
                                                "nameLocation": "2407:18:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 171,
                                                "src": "2399:26:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 154,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2399:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 157,
                                                "mutability": "mutable",
                                                "name": "_gasLimit",
                                                "nameLocation": "2442:9:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 171,
                                                "src": "2435:16:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 156,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2435:6:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 159,
                                                "mutability": "mutable",
                                                "name": "_message",
                                                "nameLocation": "2474:8:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 171,
                                                "src": "2461:21:1",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 158,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2461:5:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2389:99:1"
                                    },
                                    "returnParameters": {
                                        "id": 161,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2498:0:1"
                                    },
                                    "scope": 172,
                                    "src": "2358:235:1",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 173,
                            "src": "324:2271:1",
                            "usedErrors": []
                        }
                    ],
                    "src": "32:2564:1"
                },
                "id": 1
            },
            "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol": {
                "ast": {
                    "absolutePath": "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol",
                    "exportedSymbols": {
                        "ICrossDomainMessenger": [
                            211
                        ]
                    },
                    "id": 212,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 174,
                            "literals": [
                                "solidity",
                                ">",
                                "0.5",
                                ".0",
                                "<",
                                "0.9",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "32:30:2"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "ICrossDomainMessenger",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 175,
                                "nodeType": "StructuredDocumentation",
                                "src": "64:39:2",
                                "text": " @title ICrossDomainMessenger"
                            },
                            "fullyImplemented": false,
                            "id": 211,
                            "linearizedBaseContracts": [
                                211
                            ],
                            "name": "ICrossDomainMessenger",
                            "nameLocation": "114:21:2",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "anonymous": false,
                                    "id": 187,
                                    "name": "SentMessage",
                                    "nameLocation": "198:11:2",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 186,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 177,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "235:6:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 187,
                                                "src": "219:22:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 176,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "219:7:2",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 179,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "sender",
                                                "nameLocation": "259:6:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 187,
                                                "src": "251:14:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 178,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "251:7:2",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 181,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "message",
                                                "nameLocation": "281:7:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 187,
                                                "src": "275:13:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 180,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "275:5:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 183,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "messageNonce",
                                                "nameLocation": "306:12:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 187,
                                                "src": "298:20:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 182,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "298:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 185,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "gasLimit",
                                                "nameLocation": "336:8:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 187,
                                                "src": "328:16:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 184,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "328:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "209:141:2"
                                    },
                                    "src": "192:159:2"
                                },
                                {
                                    "anonymous": false,
                                    "id": 191,
                                    "name": "RelayedMessage",
                                    "nameLocation": "362:14:2",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 190,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 189,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "msgHash",
                                                "nameLocation": "393:7:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 191,
                                                "src": "377:23:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 188,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "377:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "376:25:2"
                                    },
                                    "src": "356:46:2"
                                },
                                {
                                    "anonymous": false,
                                    "id": 195,
                                    "name": "FailedRelayedMessage",
                                    "nameLocation": "413:20:2",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 194,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 193,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "msgHash",
                                                "nameLocation": "450:7:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 195,
                                                "src": "434:23:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 192,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "434:7:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "433:25:2"
                                    },
                                    "src": "407:52:2"
                                },
                                {
                                    "functionSelector": "6e296e45",
                                    "id": 200,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "xDomainMessageSender",
                                    "nameLocation": "533:20:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 196,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "553:2:2"
                                    },
                                    "returnParameters": {
                                        "id": 199,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 198,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 200,
                                                "src": "579:7:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 197,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "579:7:2",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "578:9:2"
                                    },
                                    "scope": 211,
                                    "src": "524:64:2",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 201,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "674:233:2",
                                        "text": " Sends a cross domain message to the target messenger.\n @param _target Target contract address.\n @param _message Message to send to the target.\n @param _gasLimit Gas limit for the provided message."
                                    },
                                    "functionSelector": "3dbb202b",
                                    "id": 210,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendMessage",
                                    "nameLocation": "921:11:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 208,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 203,
                                                "mutability": "mutable",
                                                "name": "_target",
                                                "nameLocation": "950:7:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 210,
                                                "src": "942:15:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 202,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "942:7:2",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 205,
                                                "mutability": "mutable",
                                                "name": "_message",
                                                "nameLocation": "982:8:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 210,
                                                "src": "967:23:2",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 204,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "967:5:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 207,
                                                "mutability": "mutable",
                                                "name": "_gasLimit",
                                                "nameLocation": "1007:9:2",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 210,
                                                "src": "1000:16:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 206,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1000:6:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "932:90:2"
                                    },
                                    "returnParameters": {
                                        "id": 209,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1031:0:2"
                                    },
                                    "scope": 211,
                                    "src": "912:120:2",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 212,
                            "src": "104:930:2",
                            "usedErrors": []
                        }
                    ],
                    "src": "32:1003:2"
                },
                "id": 2
            },
            "@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol": {
                "ast": {
                    "absolutePath": "@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol",
                    "exportedSymbols": {
                        "Lib_PredeployAddresses": [
                            251
                        ]
                    },
                    "id": 252,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 213,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".9"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "32:23:3"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Lib_PredeployAddresses",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 214,
                                "nodeType": "StructuredDocumentation",
                                "src": "57:40:3",
                                "text": " @title Lib_PredeployAddresses"
                            },
                            "fullyImplemented": true,
                            "id": 251,
                            "linearizedBaseContracts": [
                                251
                            ],
                            "name": "Lib_PredeployAddresses",
                            "nameLocation": "106:22:3",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": true,
                                    "id": 217,
                                    "mutability": "constant",
                                    "name": "L2_TO_L1_MESSAGE_PASSER",
                                    "nameLocation": "161:23:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "135:94:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 215,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "135:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303030",
                                        "id": 216,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "187:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000000"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 220,
                                    "mutability": "constant",
                                    "name": "L1_MESSAGE_SENDER",
                                    "nameLocation": "261:17:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "235:88:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 218,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "235:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303031",
                                        "id": 219,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "281:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000001"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 223,
                                    "mutability": "constant",
                                    "name": "DEPLOYER_WHITELIST",
                                    "nameLocation": "355:18:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "329:89:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 221,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "329:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303032",
                                        "id": 222,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "376:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000002"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 229,
                                    "mutability": "constant",
                                    "name": "OVM_ETH",
                                    "nameLocation": "458:7:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "424:95:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                    },
                                    "typeName": {
                                        "id": 224,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "424:15:3",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "value": {
                                        "arguments": [
                                            {
                                                "hexValue": "307844656164446541646465416464454164646561644445614444454164446561444465414430303030",
                                                "id": 227,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "476:42:3",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "value": "0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 226,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "468:8:3",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_payable_$",
                                                "typeString": "type(address payable)"
                                            },
                                            "typeName": {
                                                "id": 225,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "468:8:3",
                                                "stateMutability": "payable",
                                                "typeDescriptions": {}
                                            }
                                        },
                                        "id": 228,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "468:51:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 232,
                                    "mutability": "constant",
                                    "name": "L2_CROSS_DOMAIN_MESSENGER",
                                    "nameLocation": "551:25:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "525:104:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 230,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "525:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303037",
                                        "id": 231,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "587:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000007"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 235,
                                    "mutability": "constant",
                                    "name": "LIB_ADDRESS_MANAGER",
                                    "nameLocation": "661:19:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "635:90:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 233,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "635:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303038",
                                        "id": 234,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "683:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000008"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 238,
                                    "mutability": "constant",
                                    "name": "PROXY_EOA",
                                    "nameLocation": "757:9:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "731:80:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 236,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "731:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303039",
                                        "id": 237,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "769:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000009"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 241,
                                    "mutability": "constant",
                                    "name": "L2_STANDARD_BRIDGE",
                                    "nameLocation": "843:18:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "817:89:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 239,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "817:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303130",
                                        "id": 240,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "864:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000010"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 244,
                                    "mutability": "constant",
                                    "name": "SEQUENCER_FEE_WALLET",
                                    "nameLocation": "938:20:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "912:91:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 242,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "912:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303131",
                                        "id": 243,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "961:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000011"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 247,
                                    "mutability": "constant",
                                    "name": "L2_STANDARD_TOKEN_FACTORY",
                                    "nameLocation": "1035:25:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "1009:104:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 245,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1009:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303132",
                                        "id": 246,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1071:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000012"
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 250,
                                    "mutability": "constant",
                                    "name": "L1_BLOCK_NUMBER",
                                    "nameLocation": "1145:15:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 251,
                                    "src": "1119:86:3",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 248,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1119:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "307834323030303030303030303030303030303030303030303030303030303030303030303030303133",
                                        "id": 249,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1163:42:3",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "value": "0x4200000000000000000000000000000000000013"
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 252,
                            "src": "98:1110:3",
                            "usedErrors": []
                        }
                    ],
                    "src": "32:1177:3"
                },
                "id": 3
            },
            "@openzeppelin/contracts/access/AccessControl.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol",
                    "exportedSymbols": {
                        "AccessControl": [
                            619
                        ],
                        "Context": [
                            1974
                        ],
                        "ERC165": [
                            2201
                        ],
                        "IAccessControl": [
                            295
                        ],
                        "IERC165": [
                            2213
                        ],
                        "Strings": [
                            2177
                        ]
                    },
                    "id": 620,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 253,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:4"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
                            "file": "../utils/Context.sol",
                            "id": 254,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 620,
                            "sourceUnit": 1975,
                            "src": "58:30:4",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
                            "file": "../utils/Strings.sol",
                            "id": 255,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 620,
                            "sourceUnit": 2178,
                            "src": "89:30:4",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                            "file": "../utils/introspection/ERC165.sol",
                            "id": 256,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 620,
                            "sourceUnit": 2202,
                            "src": "120:43:4",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IAccessControl",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 257,
                                "nodeType": "StructuredDocumentation",
                                "src": "165:89:4",
                                "text": " @dev External interface of AccessControl declared to support ERC165 detection."
                            },
                            "fullyImplemented": false,
                            "id": 295,
                            "linearizedBaseContracts": [
                                295
                            ],
                            "name": "IAccessControl",
                            "nameLocation": "265:14:4",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "91d14854",
                                    "id": 266,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "hasRole",
                                    "nameLocation": "295:7:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 262,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 259,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "311:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 266,
                                                "src": "303:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 258,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "303:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 261,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "325:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 266,
                                                "src": "317:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 260,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "317:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "302:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 265,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 264,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 266,
                                                "src": "357:4:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 263,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "357:4:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "356:6:4"
                                    },
                                    "scope": 295,
                                    "src": "286:77:4",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "248a9ca3",
                                    "id": 273,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getRoleAdmin",
                                    "nameLocation": "377:12:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 269,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 268,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "398:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 273,
                                                "src": "390:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 267,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "390:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "389:14:4"
                                    },
                                    "returnParameters": {
                                        "id": 272,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 271,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 273,
                                                "src": "427:7:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 270,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "427:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "426:9:4"
                                    },
                                    "scope": 295,
                                    "src": "368:68:4",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "2f2ff15d",
                                    "id": 280,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "grantRole",
                                    "nameLocation": "450:9:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 278,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 275,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "468:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 280,
                                                "src": "460:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 274,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "460:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 277,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "482:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 280,
                                                "src": "474:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 276,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "474:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "459:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 279,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "499:0:4"
                                    },
                                    "scope": 295,
                                    "src": "441:59:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "d547741f",
                                    "id": 287,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "revokeRole",
                                    "nameLocation": "514:10:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 285,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 282,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "533:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 287,
                                                "src": "525:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 281,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "525:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 284,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "547:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 287,
                                                "src": "539:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 283,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "539:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "524:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 286,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "564:0:4"
                                    },
                                    "scope": 295,
                                    "src": "505:60:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "36568abe",
                                    "id": 294,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "renounceRole",
                                    "nameLocation": "579:12:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 292,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 289,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "600:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 294,
                                                "src": "592:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 288,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "592:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 291,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "614:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 294,
                                                "src": "606:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 290,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "606:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "591:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 293,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "631:0:4"
                                    },
                                    "scope": 295,
                                    "src": "570:62:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 620,
                            "src": "255:379:4",
                            "usedErrors": []
                        },
                        {
                            "abstract": true,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 297,
                                        "name": "Context",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1974,
                                        "src": "2206:7:4"
                                    },
                                    "id": 298,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "2206:7:4"
                                },
                                {
                                    "baseName": {
                                        "id": 299,
                                        "name": "IAccessControl",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 295,
                                        "src": "2215:14:4"
                                    },
                                    "id": 300,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "2215:14:4"
                                },
                                {
                                    "baseName": {
                                        "id": 301,
                                        "name": "ERC165",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2201,
                                        "src": "2231:6:4"
                                    },
                                    "id": 302,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "2231:6:4"
                                }
                            ],
                            "canonicalName": "AccessControl",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 296,
                                "nodeType": "StructuredDocumentation",
                                "src": "636:1534:4",
                                "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```\n function foo() public {\n     require(hasRole(MY_ROLE, msg.sender));\n     ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it."
                            },
                            "fullyImplemented": true,
                            "id": 619,
                            "linearizedBaseContracts": [
                                619,
                                2201,
                                2213,
                                295,
                                1974
                            ],
                            "name": "AccessControl",
                            "nameLocation": "2189:13:4",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "canonicalName": "AccessControl.RoleData",
                                    "id": 309,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 306,
                                            "mutability": "mutable",
                                            "name": "members",
                                            "nameLocation": "2296:7:4",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 309,
                                            "src": "2270:33:4",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                "typeString": "mapping(address => bool)"
                                            },
                                            "typeName": {
                                                "id": 305,
                                                "keyType": {
                                                    "id": 303,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2279:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "Mapping",
                                                "src": "2270:25:4",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                    "typeString": "mapping(address => bool)"
                                                },
                                                "valueType": {
                                                    "id": 304,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2290:4:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 308,
                                            "mutability": "mutable",
                                            "name": "adminRole",
                                            "nameLocation": "2321:9:4",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 309,
                                            "src": "2313:17:4",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 307,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2313:7:4",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "RoleData",
                                    "nameLocation": "2251:8:4",
                                    "nodeType": "StructDefinition",
                                    "scope": 619,
                                    "src": "2244:93:4",
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "id": 314,
                                    "mutability": "mutable",
                                    "name": "_roles",
                                    "nameLocation": "2381:6:4",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 619,
                                    "src": "2343:44:4",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$309_storage_$",
                                        "typeString": "mapping(bytes32 => struct AccessControl.RoleData)"
                                    },
                                    "typeName": {
                                        "id": 313,
                                        "keyType": {
                                            "id": 310,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2352:7:4",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "2343:29:4",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$309_storage_$",
                                            "typeString": "mapping(bytes32 => struct AccessControl.RoleData)"
                                        },
                                        "valueType": {
                                            "id": 312,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 311,
                                                "name": "RoleData",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 309,
                                                "src": "2363:8:4"
                                            },
                                            "referencedDeclaration": 309,
                                            "src": "2363:8:4",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_RoleData_$309_storage_ptr",
                                                "typeString": "struct AccessControl.RoleData"
                                            }
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "a217fddf",
                                    "id": 317,
                                    "mutability": "constant",
                                    "name": "DEFAULT_ADMIN_ROLE",
                                    "nameLocation": "2418:18:4",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 619,
                                    "src": "2394:49:4",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 315,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2394:7:4",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "30783030",
                                        "id": 316,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2439:4:4",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                        },
                                        "value": "0x00"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "documentation": {
                                        "id": 318,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2450:292:4",
                                        "text": " @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this.\n _Available since v3.1._"
                                    },
                                    "id": 326,
                                    "name": "RoleAdminChanged",
                                    "nameLocation": "2753:16:4",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 325,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 320,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "2786:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 326,
                                                "src": "2770:20:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 319,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2770:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 322,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "previousAdminRole",
                                                "nameLocation": "2808:17:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 326,
                                                "src": "2792:33:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 321,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2792:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 324,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "newAdminRole",
                                                "nameLocation": "2843:12:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 326,
                                                "src": "2827:28:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 323,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2827:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2769:87:4"
                                    },
                                    "src": "2747:110:4"
                                },
                                {
                                    "anonymous": false,
                                    "documentation": {
                                        "id": 327,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2863:198:4",
                                        "text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call, an admin role\n bearer except when using {_setupRole}."
                                    },
                                    "id": 335,
                                    "name": "RoleGranted",
                                    "nameLocation": "3072:11:4",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 334,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 329,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "3100:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 335,
                                                "src": "3084:20:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 328,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3084:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 331,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "3122:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 335,
                                                "src": "3106:23:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 330,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3106:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 333,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "sender",
                                                "nameLocation": "3147:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 335,
                                                "src": "3131:22:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 332,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3131:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3083:71:4"
                                    },
                                    "src": "3066:89:4"
                                },
                                {
                                    "anonymous": false,
                                    "documentation": {
                                        "id": 336,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3161:275:4",
                                        "text": " @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n   - if using `revokeRole`, it is the admin role bearer\n   - if using `renounceRole`, it is the role bearer (i.e. `account`)"
                                    },
                                    "id": 344,
                                    "name": "RoleRevoked",
                                    "nameLocation": "3447:11:4",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 343,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 338,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "3475:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 344,
                                                "src": "3459:20:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 337,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3459:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 340,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "3497:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 344,
                                                "src": "3481:23:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 339,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3481:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 342,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "sender",
                                                "nameLocation": "3522:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 344,
                                                "src": "3506:22:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 341,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3506:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3458:71:4"
                                    },
                                    "src": "3441:89:4"
                                },
                                {
                                    "body": {
                                        "id": 356,
                                        "nodeType": "Block",
                                        "src": "3948:58:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 350,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 347,
                                                            "src": "3969:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 351,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1962,
                                                                "src": "3975:10:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 352,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3975:12:4",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 349,
                                                        "name": "_checkRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 441,
                                                        "src": "3958:10:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address) view"
                                                        }
                                                    },
                                                    "id": 353,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3958:30:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 354,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3958:30:4"
                                            },
                                            {
                                                "id": 355,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "3998:1:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 345,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3536:375:4",
                                        "text": " @dev Modifier that checks that an account has a specific role. Reverts\n with a standardized message including the required role.\n The format of the revert reason is given by the following regular expression:\n  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/\n _Available since v4.1._"
                                    },
                                    "id": 357,
                                    "name": "onlyRole",
                                    "nameLocation": "3925:8:4",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 348,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 347,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "3942:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 357,
                                                "src": "3934:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 346,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3934:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3933:14:4"
                                    },
                                    "src": "3916:90:4",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "baseFunctions": [
                                        2200
                                    ],
                                    "body": {
                                        "id": 378,
                                        "nodeType": "Block",
                                        "src": "4164:123:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 376,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        },
                                                        "id": 371,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 366,
                                                            "name": "interfaceId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 360,
                                                            "src": "4181:11:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 368,
                                                                        "name": "IAccessControl",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 295,
                                                                        "src": "4201:14:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_IAccessControl_$295_$",
                                                                            "typeString": "type(contract IAccessControl)"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_type$_t_contract$_IAccessControl_$295_$",
                                                                            "typeString": "type(contract IAccessControl)"
                                                                        }
                                                                    ],
                                                                    "id": 367,
                                                                    "name": "type",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -27,
                                                                    "src": "4196:4:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                                        "typeString": "function () pure"
                                                                    }
                                                                },
                                                                "id": 369,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4196:20:4",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControl_$295",
                                                                    "typeString": "type(contract IAccessControl)"
                                                                }
                                                            },
                                                            "id": 370,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberName": "interfaceId",
                                                            "nodeType": "MemberAccess",
                                                            "src": "4196:32:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        },
                                                        "src": "4181:47:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "||",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 374,
                                                                "name": "interfaceId",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 360,
                                                                "src": "4268:11:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes4",
                                                                    "typeString": "bytes4"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes4",
                                                                    "typeString": "bytes4"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 372,
                                                                "name": "super",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -25,
                                                                "src": "4244:5:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_super$_AccessControl_$619_$",
                                                                    "typeString": "type(contract super AccessControl)"
                                                                }
                                                            },
                                                            "id": 373,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "supportsInterface",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2200,
                                                            "src": "4244:23:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                                                                "typeString": "function (bytes4) view returns (bool)"
                                                            }
                                                        },
                                                        "id": 375,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4244:36:4",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "4181:99:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 365,
                                                "id": 377,
                                                "nodeType": "Return",
                                                "src": "4174:106:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 358,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4012:56:4",
                                        "text": " @dev See {IERC165-supportsInterface}."
                                    },
                                    "functionSelector": "01ffc9a7",
                                    "id": 379,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "supportsInterface",
                                    "nameLocation": "4082:17:4",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 362,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "4140:8:4"
                                    },
                                    "parameters": {
                                        "id": 361,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 360,
                                                "mutability": "mutable",
                                                "name": "interfaceId",
                                                "nameLocation": "4107:11:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 379,
                                                "src": "4100:18:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 359,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4100:6:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4099:20:4"
                                    },
                                    "returnParameters": {
                                        "id": 365,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 364,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 379,
                                                "src": "4158:4:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 363,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4158:4:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4157:6:4"
                                    },
                                    "scope": 619,
                                    "src": "4073:214:4",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        266
                                    ],
                                    "body": {
                                        "id": 397,
                                        "nodeType": "Block",
                                        "src": "4458:53:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 390,
                                                                "name": "_roles",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 314,
                                                                "src": "4475:6:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$309_storage_$",
                                                                    "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                                                                }
                                                            },
                                                            "id": 392,
                                                            "indexExpression": {
                                                                "id": 391,
                                                                "name": "role",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 382,
                                                                "src": "4482:4:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "4475:12:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RoleData_$309_storage",
                                                                "typeString": "struct AccessControl.RoleData storage ref"
                                                            }
                                                        },
                                                        "id": 393,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "members",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 306,
                                                        "src": "4475:20:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                            "typeString": "mapping(address => bool)"
                                                        }
                                                    },
                                                    "id": 395,
                                                    "indexExpression": {
                                                        "id": 394,
                                                        "name": "account",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 384,
                                                        "src": "4496:7:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "4475:29:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 389,
                                                "id": 396,
                                                "nodeType": "Return",
                                                "src": "4468:36:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 380,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4293:76:4",
                                        "text": " @dev Returns `true` if `account` has been granted `role`."
                                    },
                                    "functionSelector": "91d14854",
                                    "id": 398,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "hasRole",
                                    "nameLocation": "4383:7:4",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 386,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "4434:8:4"
                                    },
                                    "parameters": {
                                        "id": 385,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 382,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "4399:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 398,
                                                "src": "4391:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 381,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4391:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 384,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "4413:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 398,
                                                "src": "4405:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 383,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4405:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4390:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 389,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 388,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 398,
                                                "src": "4452:4:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 387,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4452:4:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4451:6:4"
                                    },
                                    "scope": 619,
                                    "src": "4374:137:4",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 440,
                                        "nodeType": "Block",
                                        "src": "4857:310:4",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "id": 410,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "!",
                                                    "prefix": true,
                                                    "src": "4870:23:4",
                                                    "subExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 407,
                                                                "name": "role",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 401,
                                                                "src": "4879:4:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            {
                                                                "id": 408,
                                                                "name": "account",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 403,
                                                                "src": "4885:7:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 406,
                                                            "name": "hasRole",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 398,
                                                            "src": "4871:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                                "typeString": "function (bytes32,address) view returns (bool)"
                                                            }
                                                        },
                                                        "id": 409,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4871:22:4",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 439,
                                                "nodeType": "IfStatement",
                                                "src": "4867:294:4",
                                                "trueBody": {
                                                    "id": 438,
                                                    "nodeType": "Block",
                                                    "src": "4895:266:4",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "hexValue": "416363657373436f6e74726f6c3a206163636f756e7420",
                                                                                        "id": 416,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "4957:25:4",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874",
                                                                                            "typeString": "literal_string \"AccessControl: account \""
                                                                                        },
                                                                                        "value": "AccessControl: account "
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "id": 421,
                                                                                                        "name": "account",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 403,
                                                                                                        "src": "5028:7:4",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    }
                                                                                                ],
                                                                                                "expression": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    ],
                                                                                                    "id": 420,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                                    "src": "5020:7:4",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_type$_t_uint160_$",
                                                                                                        "typeString": "type(uint160)"
                                                                                                    },
                                                                                                    "typeName": {
                                                                                                        "id": 419,
                                                                                                        "name": "uint160",
                                                                                                        "nodeType": "ElementaryTypeName",
                                                                                                        "src": "5020:7:4",
                                                                                                        "typeDescriptions": {}
                                                                                                    }
                                                                                                },
                                                                                                "id": 422,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "kind": "typeConversion",
                                                                                                "lValueRequested": false,
                                                                                                "names": [],
                                                                                                "nodeType": "FunctionCall",
                                                                                                "src": "5020:16:4",
                                                                                                "tryCall": false,
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint160",
                                                                                                    "typeString": "uint160"
                                                                                                }
                                                                                            },
                                                                                            {
                                                                                                "hexValue": "3230",
                                                                                                "id": 423,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "5038:2:4",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_20_by_1",
                                                                                                    "typeString": "int_const 20"
                                                                                                },
                                                                                                "value": "20"
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint160",
                                                                                                    "typeString": "uint160"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_rational_20_by_1",
                                                                                                    "typeString": "int_const 20"
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "id": 417,
                                                                                                "name": "Strings",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 2177,
                                                                                                "src": "5000:7:4",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_type$_t_contract$_Strings_$2177_$",
                                                                                                    "typeString": "type(library Strings)"
                                                                                                }
                                                                                            },
                                                                                            "id": 418,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "memberName": "toHexString",
                                                                                            "nodeType": "MemberAccess",
                                                                                            "referencedDeclaration": 2176,
                                                                                            "src": "5000:19:4",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                                                                                                "typeString": "function (uint256,uint256) pure returns (string memory)"
                                                                                            }
                                                                                        },
                                                                                        "id": 424,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "functionCall",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "5000:41:4",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                                            "typeString": "string memory"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "hexValue": "206973206d697373696e6720726f6c6520",
                                                                                        "id": 425,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "5059:19:4",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69",
                                                                                            "typeString": "literal_string \" is missing role \""
                                                                                        },
                                                                                        "value": " is missing role "
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "id": 430,
                                                                                                        "name": "role",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 401,
                                                                                                        "src": "5124:4:4",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_bytes32",
                                                                                                            "typeString": "bytes32"
                                                                                                        }
                                                                                                    }
                                                                                                ],
                                                                                                "expression": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_bytes32",
                                                                                                            "typeString": "bytes32"
                                                                                                        }
                                                                                                    ],
                                                                                                    "id": 429,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                                    "src": "5116:7:4",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_type$_t_uint256_$",
                                                                                                        "typeString": "type(uint256)"
                                                                                                    },
                                                                                                    "typeName": {
                                                                                                        "id": 428,
                                                                                                        "name": "uint256",
                                                                                                        "nodeType": "ElementaryTypeName",
                                                                                                        "src": "5116:7:4",
                                                                                                        "typeDescriptions": {}
                                                                                                    }
                                                                                                },
                                                                                                "id": 431,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "kind": "typeConversion",
                                                                                                "lValueRequested": false,
                                                                                                "names": [],
                                                                                                "nodeType": "FunctionCall",
                                                                                                "src": "5116:13:4",
                                                                                                "tryCall": false,
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            },
                                                                                            {
                                                                                                "hexValue": "3332",
                                                                                                "id": 432,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "5131:2:4",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_32_by_1",
                                                                                                    "typeString": "int_const 32"
                                                                                                },
                                                                                                "value": "32"
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_rational_32_by_1",
                                                                                                    "typeString": "int_const 32"
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "id": 426,
                                                                                                "name": "Strings",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 2177,
                                                                                                "src": "5096:7:4",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_type$_t_contract$_Strings_$2177_$",
                                                                                                    "typeString": "type(library Strings)"
                                                                                                }
                                                                                            },
                                                                                            "id": 427,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "memberName": "toHexString",
                                                                                            "nodeType": "MemberAccess",
                                                                                            "referencedDeclaration": 2176,
                                                                                            "src": "5096:19:4",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                                                                                                "typeString": "function (uint256,uint256) pure returns (string memory)"
                                                                                            }
                                                                                        },
                                                                                        "id": 433,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "functionCall",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "5096:38:4",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                                            "typeString": "string memory"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874",
                                                                                            "typeString": "literal_string \"AccessControl: account \""
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                                            "typeString": "string memory"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69",
                                                                                            "typeString": "literal_string \" is missing role \""
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                                            "typeString": "string memory"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "id": 414,
                                                                                        "name": "abi",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": -1,
                                                                                        "src": "4923:3:4",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_magic_abi",
                                                                                            "typeString": "abi"
                                                                                        }
                                                                                    },
                                                                                    "id": 415,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "encodePacked",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "src": "4923:16:4",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                                        "typeString": "function () pure returns (bytes memory)"
                                                                                    }
                                                                                },
                                                                                "id": 434,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "4923:225:4",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            ],
                                                                            "id": 413,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "4916:6:4",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                                                "typeString": "type(string storage pointer)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 412,
                                                                                "name": "string",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "4916:6:4",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 435,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "4916:233:4",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                            "typeString": "string memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                            "typeString": "string memory"
                                                                        }
                                                                    ],
                                                                    "id": 411,
                                                                    "name": "revert",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [
                                                                        -19,
                                                                        -19
                                                                    ],
                                                                    "referencedDeclaration": -19,
                                                                    "src": "4909:6:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                                        "typeString": "function (string memory) pure"
                                                                    }
                                                                },
                                                                "id": 436,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4909:241:4",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 437,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4909:241:4"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 399,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4517:270:4",
                                        "text": " @dev Revert with a standard message if `account` is missing `role`.\n The format of the revert reason is given by the following regular expression:\n  /^AccessControl: account (0x[0-9a-f]{20}) is missing role (0x[0-9a-f]{32})$/"
                                    },
                                    "id": 441,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_checkRole",
                                    "nameLocation": "4801:10:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 404,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 401,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "4820:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 441,
                                                "src": "4812:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 400,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4812:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 403,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "4834:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 441,
                                                "src": "4826:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 402,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4826:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4811:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 405,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4857:0:4"
                                    },
                                    "scope": 619,
                                    "src": "4792:375:4",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "baseFunctions": [
                                        273
                                    ],
                                    "body": {
                                        "id": 455,
                                        "nodeType": "Block",
                                        "src": "5423:46:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "expression": {
                                                        "baseExpression": {
                                                            "id": 450,
                                                            "name": "_roles",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 314,
                                                            "src": "5440:6:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$309_storage_$",
                                                                "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                                                            }
                                                        },
                                                        "id": 452,
                                                        "indexExpression": {
                                                            "id": 451,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 444,
                                                            "src": "5447:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "5440:12:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RoleData_$309_storage",
                                                            "typeString": "struct AccessControl.RoleData storage ref"
                                                        }
                                                    },
                                                    "id": 453,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "adminRole",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 308,
                                                    "src": "5440:22:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "functionReturnParameters": 449,
                                                "id": 454,
                                                "nodeType": "Return",
                                                "src": "5433:29:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 442,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5173:170:4",
                                        "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}."
                                    },
                                    "functionSelector": "248a9ca3",
                                    "id": 456,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getRoleAdmin",
                                    "nameLocation": "5357:12:4",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 446,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "5396:8:4"
                                    },
                                    "parameters": {
                                        "id": 445,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 444,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "5378:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 456,
                                                "src": "5370:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 443,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5370:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5369:14:4"
                                    },
                                    "returnParameters": {
                                        "id": 449,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 448,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 456,
                                                "src": "5414:7:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 447,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5414:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5413:9:4"
                                    },
                                    "scope": 619,
                                    "src": "5348:121:4",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        280
                                    ],
                                    "body": {
                                        "id": 475,
                                        "nodeType": "Block",
                                        "src": "5822:42:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 471,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 459,
                                                            "src": "5843:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 472,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 461,
                                                            "src": "5849:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 470,
                                                        "name": "_grantRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 588,
                                                        "src": "5832:10:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address)"
                                                        }
                                                    },
                                                    "id": 473,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5832:25:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 474,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5832:25:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 457,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5475:239:4",
                                        "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role."
                                    },
                                    "functionSelector": "2f2ff15d",
                                    "id": 476,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "arguments": [
                                                        {
                                                            "id": 466,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 459,
                                                            "src": "5815:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 465,
                                                        "name": "getRoleAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 456,
                                                        "src": "5802:12:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes32) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 467,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5802:18:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                }
                                            ],
                                            "id": 468,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 464,
                                                "name": "onlyRole",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 357,
                                                "src": "5793:8:4"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5793:28:4"
                                        }
                                    ],
                                    "name": "grantRole",
                                    "nameLocation": "5728:9:4",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 463,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "5784:8:4"
                                    },
                                    "parameters": {
                                        "id": 462,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 459,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "5746:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 476,
                                                "src": "5738:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 458,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5738:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 461,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "5760:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 476,
                                                "src": "5752:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 460,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5752:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5737:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 469,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5822:0:4"
                                    },
                                    "scope": 619,
                                    "src": "5719:145:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        287
                                    ],
                                    "body": {
                                        "id": 495,
                                        "nodeType": "Block",
                                        "src": "6202:43:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 491,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 479,
                                                            "src": "6224:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 492,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 481,
                                                            "src": "6230:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 490,
                                                        "name": "_revokeRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 618,
                                                        "src": "6212:11:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address)"
                                                        }
                                                    },
                                                    "id": 493,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6212:26:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 494,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6212:26:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 477,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5870:223:4",
                                        "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role."
                                    },
                                    "functionSelector": "d547741f",
                                    "id": 496,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "arguments": [
                                                        {
                                                            "id": 486,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 479,
                                                            "src": "6195:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 485,
                                                        "name": "getRoleAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 456,
                                                        "src": "6182:12:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes32) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 487,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6182:18:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                }
                                            ],
                                            "id": 488,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 484,
                                                "name": "onlyRole",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 357,
                                                "src": "6173:8:4"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6173:28:4"
                                        }
                                    ],
                                    "name": "revokeRole",
                                    "nameLocation": "6107:10:4",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 483,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "6164:8:4"
                                    },
                                    "parameters": {
                                        "id": 482,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 479,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "6126:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 496,
                                                "src": "6118:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 478,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6118:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 481,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "6140:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 496,
                                                "src": "6132:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 480,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6132:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6117:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 489,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6202:0:4"
                                    },
                                    "scope": 619,
                                    "src": "6098:147:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        294
                                    ],
                                    "body": {
                                        "id": 518,
                                        "nodeType": "Block",
                                        "src": "6813:137:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 509,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 506,
                                                                "name": "account",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 501,
                                                                "src": "6831:7:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 507,
                                                                    "name": "_msgSender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1962,
                                                                    "src": "6842:10:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                        "typeString": "function () view returns (address)"
                                                                    }
                                                                },
                                                                "id": 508,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6842:12:4",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "6831:23:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66",
                                                            "id": 510,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6856:49:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
                                                                "typeString": "literal_string \"AccessControl: can only renounce roles for self\""
                                                            },
                                                            "value": "AccessControl: can only renounce roles for self"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_fb06fa8ff2141e8ed74502f6792273793f25f0e9d3cf15344f3f5a0d4948fd4b",
                                                                "typeString": "literal_string \"AccessControl: can only renounce roles for self\""
                                                            }
                                                        ],
                                                        "id": 505,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6823:7:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 511,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6823:83:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 512,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6823:83:4"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 514,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 499,
                                                            "src": "6929:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 515,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 501,
                                                            "src": "6935:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 513,
                                                        "name": "_revokeRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 618,
                                                        "src": "6917:11:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address)"
                                                        }
                                                    },
                                                    "id": 516,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6917:26:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 517,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6917:26:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 497,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6251:480:4",
                                        "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `account`."
                                    },
                                    "functionSelector": "36568abe",
                                    "id": 519,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "renounceRole",
                                    "nameLocation": "6745:12:4",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 503,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "6804:8:4"
                                    },
                                    "parameters": {
                                        "id": 502,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 499,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "6766:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 519,
                                                "src": "6758:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 498,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6758:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 501,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "6780:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 519,
                                                "src": "6772:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 500,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6772:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6757:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 504,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6813:0:4"
                                    },
                                    "scope": 619,
                                    "src": "6736:214:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 532,
                                        "nodeType": "Block",
                                        "src": "7583:42:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 528,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 522,
                                                            "src": "7604:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 529,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 524,
                                                            "src": "7610:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 527,
                                                        "name": "_grantRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 588,
                                                        "src": "7593:10:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address)"
                                                        }
                                                    },
                                                    "id": 530,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7593:25:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 531,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7593:25:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 520,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6956:554:4",
                                        "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event. Note that unlike {grantRole}, this function doesn't perform any\n checks on the calling account.\n [WARNING]\n ====\n This function should only be called from the constructor when setting\n up the initial roles for the system.\n Using this function in any other way is effectively circumventing the admin\n system imposed by {AccessControl}.\n ===="
                                    },
                                    "id": 533,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setupRole",
                                    "nameLocation": "7524:10:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 525,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 522,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "7543:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 533,
                                                "src": "7535:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 521,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7535:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 524,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "7557:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 533,
                                                "src": "7549:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 523,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7549:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7534:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 526,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "7583:0:4"
                                    },
                                    "scope": 619,
                                    "src": "7515:110:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 556,
                                        "nodeType": "Block",
                                        "src": "7823:119:4",
                                        "statements": [
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 542,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 536,
                                                            "src": "7855:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 544,
                                                                    "name": "role",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 536,
                                                                    "src": "7874:4:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 543,
                                                                "name": "getRoleAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 456,
                                                                "src": "7861:12:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                                                                    "typeString": "function (bytes32) view returns (bytes32)"
                                                                }
                                                            },
                                                            "id": 545,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "7861:18:4",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 546,
                                                            "name": "adminRole",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 538,
                                                            "src": "7881:9:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 541,
                                                        "name": "RoleAdminChanged",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 326,
                                                        "src": "7838:16:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                                                            "typeString": "function (bytes32,bytes32,bytes32)"
                                                        }
                                                    },
                                                    "id": 547,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7838:53:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 548,
                                                "nodeType": "EmitStatement",
                                                "src": "7833:58:4"
                                            },
                                            {
                                                "expression": {
                                                    "id": 554,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 549,
                                                                "name": "_roles",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 314,
                                                                "src": "7901:6:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$309_storage_$",
                                                                    "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                                                                }
                                                            },
                                                            "id": 551,
                                                            "indexExpression": {
                                                                "id": 550,
                                                                "name": "role",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 536,
                                                                "src": "7908:4:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "7901:12:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RoleData_$309_storage",
                                                                "typeString": "struct AccessControl.RoleData storage ref"
                                                            }
                                                        },
                                                        "id": 552,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "adminRole",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 308,
                                                        "src": "7901:22:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 553,
                                                        "name": "adminRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 538,
                                                        "src": "7926:9:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "src": "7901:34:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "id": 555,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7901:34:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 534,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7631:114:4",
                                        "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event."
                                    },
                                    "id": 557,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setRoleAdmin",
                                    "nameLocation": "7759:13:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 539,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 536,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "7781:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 557,
                                                "src": "7773:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 535,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7773:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 538,
                                                "mutability": "mutable",
                                                "name": "adminRole",
                                                "nameLocation": "7795:9:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 557,
                                                "src": "7787:17:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 537,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7787:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7772:33:4"
                                    },
                                    "returnParameters": {
                                        "id": 540,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "7823:0:4"
                                    },
                                    "scope": 619,
                                    "src": "7750:192:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 587,
                                        "nodeType": "Block",
                                        "src": "8007:165:4",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "id": 568,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "!",
                                                    "prefix": true,
                                                    "src": "8021:23:4",
                                                    "subExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 565,
                                                                "name": "role",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 559,
                                                                "src": "8030:4:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            {
                                                                "id": 566,
                                                                "name": "account",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 561,
                                                                "src": "8036:7:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 564,
                                                            "name": "hasRole",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 398,
                                                            "src": "8022:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                                "typeString": "function (bytes32,address) view returns (bool)"
                                                            }
                                                        },
                                                        "id": 567,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "8022:22:4",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 586,
                                                "nodeType": "IfStatement",
                                                "src": "8017:149:4",
                                                "trueBody": {
                                                    "id": 585,
                                                    "nodeType": "Block",
                                                    "src": "8046:120:4",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 576,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 569,
                                                                                "name": "_roles",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 314,
                                                                                "src": "8060:6:4",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$309_storage_$",
                                                                                    "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 571,
                                                                            "indexExpression": {
                                                                                "id": 570,
                                                                                "name": "role",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 559,
                                                                                "src": "8067:4:4",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "8060:12:4",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RoleData_$309_storage",
                                                                                "typeString": "struct AccessControl.RoleData storage ref"
                                                                            }
                                                                        },
                                                                        "id": 572,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "members",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 306,
                                                                        "src": "8060:20:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                                            "typeString": "mapping(address => bool)"
                                                                        }
                                                                    },
                                                                    "id": 574,
                                                                    "indexExpression": {
                                                                        "id": 573,
                                                                        "name": "account",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 561,
                                                                        "src": "8081:7:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "8060:29:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "hexValue": "74727565",
                                                                    "id": 575,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8092:4:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                "src": "8060:36:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 577,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "8060:36:4"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 579,
                                                                        "name": "role",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 559,
                                                                        "src": "8127:4:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 580,
                                                                        "name": "account",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 561,
                                                                        "src": "8133:7:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 581,
                                                                            "name": "_msgSender",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1962,
                                                                            "src": "8142:10:4",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                                "typeString": "function () view returns (address)"
                                                                            }
                                                                        },
                                                                        "id": 582,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "8142:12:4",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 578,
                                                                    "name": "RoleGranted",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 335,
                                                                    "src": "8115:11:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                                                                        "typeString": "function (bytes32,address,address)"
                                                                    }
                                                                },
                                                                "id": 583,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8115:40:4",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 584,
                                                            "nodeType": "EmitStatement",
                                                            "src": "8110:45:4"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "id": 588,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_grantRole",
                                    "nameLocation": "7957:10:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 562,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 559,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "7976:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 588,
                                                "src": "7968:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 558,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7968:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 561,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "7990:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 588,
                                                "src": "7982:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 560,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7982:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7967:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 563,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8007:0:4"
                                    },
                                    "scope": 619,
                                    "src": "7948:224:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 617,
                                        "nodeType": "Block",
                                        "src": "8238:165:4",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "arguments": [
                                                        {
                                                            "id": 596,
                                                            "name": "role",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 590,
                                                            "src": "8260:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 597,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 592,
                                                            "src": "8266:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 595,
                                                        "name": "hasRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 398,
                                                        "src": "8252:7:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                            "typeString": "function (bytes32,address) view returns (bool)"
                                                        }
                                                    },
                                                    "id": 598,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8252:22:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 616,
                                                "nodeType": "IfStatement",
                                                "src": "8248:149:4",
                                                "trueBody": {
                                                    "id": 615,
                                                    "nodeType": "Block",
                                                    "src": "8276:121:4",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 606,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "expression": {
                                                                            "baseExpression": {
                                                                                "id": 599,
                                                                                "name": "_roles",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 314,
                                                                                "src": "8290:6:4",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$309_storage_$",
                                                                                    "typeString": "mapping(bytes32 => struct AccessControl.RoleData storage ref)"
                                                                                }
                                                                            },
                                                                            "id": 601,
                                                                            "indexExpression": {
                                                                                "id": 600,
                                                                                "name": "role",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 590,
                                                                                "src": "8297:4:4",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "8290:12:4",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RoleData_$309_storage",
                                                                                "typeString": "struct AccessControl.RoleData storage ref"
                                                                            }
                                                                        },
                                                                        "id": 602,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "members",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 306,
                                                                        "src": "8290:20:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                                            "typeString": "mapping(address => bool)"
                                                                        }
                                                                    },
                                                                    "id": 604,
                                                                    "indexExpression": {
                                                                        "id": 603,
                                                                        "name": "account",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 592,
                                                                        "src": "8311:7:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "8290:29:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "hexValue": "66616c7365",
                                                                    "id": 605,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8322:5:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "false"
                                                                },
                                                                "src": "8290:37:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 607,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "8290:37:4"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 609,
                                                                        "name": "role",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 590,
                                                                        "src": "8358:4:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 610,
                                                                        "name": "account",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 592,
                                                                        "src": "8364:7:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 611,
                                                                            "name": "_msgSender",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1962,
                                                                            "src": "8373:10:4",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                                "typeString": "function () view returns (address)"
                                                                            }
                                                                        },
                                                                        "id": 612,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "8373:12:4",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 608,
                                                                    "name": "RoleRevoked",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 344,
                                                                    "src": "8346:11:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                                                                        "typeString": "function (bytes32,address,address)"
                                                                    }
                                                                },
                                                                "id": 613,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8346:40:4",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 614,
                                                            "nodeType": "EmitStatement",
                                                            "src": "8341:45:4"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "id": 618,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_revokeRole",
                                    "nameLocation": "8187:11:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 593,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 590,
                                                "mutability": "mutable",
                                                "name": "role",
                                                "nameLocation": "8207:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 618,
                                                "src": "8199:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 589,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8199:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 592,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "8221:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 618,
                                                "src": "8213:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 591,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8213:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8198:31:4"
                                    },
                                    "returnParameters": {
                                        "id": 594,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8238:0:4"
                                    },
                                    "scope": 619,
                                    "src": "8178:225:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "private"
                                }
                            ],
                            "scope": 620,
                            "src": "2171:6234:4",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:8373:4"
                },
                "id": 4
            },
            "@openzeppelin/contracts/access/Ownable.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                    "exportedSymbols": {
                        "Context": [
                            1974
                        ],
                        "Ownable": [
                            729
                        ]
                    },
                    "id": 730,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 621,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:5"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
                            "file": "../utils/Context.sol",
                            "id": 622,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 730,
                            "sourceUnit": 1975,
                            "src": "58:30:5",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 624,
                                        "name": "Context",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1974,
                                        "src": "613:7:5"
                                    },
                                    "id": 625,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "613:7:5"
                                }
                            ],
                            "canonicalName": "Ownable",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 623,
                                "nodeType": "StructuredDocumentation",
                                "src": "89:494:5",
                                "text": " @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 By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\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."
                            },
                            "fullyImplemented": true,
                            "id": 729,
                            "linearizedBaseContracts": [
                                729,
                                1974
                            ],
                            "name": "Ownable",
                            "nameLocation": "602:7:5",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "id": 627,
                                    "mutability": "mutable",
                                    "name": "_owner",
                                    "nameLocation": "643:6:5",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 729,
                                    "src": "627:22:5",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 626,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "627:7:5",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "anonymous": false,
                                    "id": 633,
                                    "name": "OwnershipTransferred",
                                    "nameLocation": "662:20:5",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 632,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 629,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "previousOwner",
                                                "nameLocation": "699:13:5",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 633,
                                                "src": "683:29:5",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 628,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "683:7:5",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 631,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "newOwner",
                                                "nameLocation": "730:8:5",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 633,
                                                "src": "714:24:5",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 630,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "714:7:5",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "682:57:5"
                                    },
                                    "src": "656:84:5"
                                },
                                {
                                    "body": {
                                        "id": 654,
                                        "nodeType": "Block",
                                        "src": "857:135:5",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    638
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 638,
                                                        "mutability": "mutable",
                                                        "name": "msgSender",
                                                        "nameLocation": "875:9:5",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 654,
                                                        "src": "867:17:5",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 637,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "867:7:5",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 641,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 639,
                                                        "name": "_msgSender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1962,
                                                        "src": "887:10:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                            "typeString": "function () view returns (address)"
                                                        }
                                                    },
                                                    "id": 640,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "887:12:5",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "867:32:5"
                                            },
                                            {
                                                "expression": {
                                                    "id": 644,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 642,
                                                        "name": "_owner",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 627,
                                                        "src": "909:6:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 643,
                                                        "name": "msgSender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 638,
                                                        "src": "918:9:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "909:18:5",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 645,
                                                "nodeType": "ExpressionStatement",
                                                "src": "909:18:5"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 649,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "971:1:5",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    }
                                                                ],
                                                                "id": 648,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "963:7:5",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 647,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "963:7:5",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 650,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "963:10:5",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 651,
                                                            "name": "msgSender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 638,
                                                            "src": "975:9:5",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 646,
                                                        "name": "OwnershipTransferred",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 633,
                                                        "src": "942:20:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address)"
                                                        }
                                                    },
                                                    "id": 652,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "942:43:5",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 653,
                                                "nodeType": "EmitStatement",
                                                "src": "937:48:5"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 634,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "746:91:5",
                                        "text": " @dev Initializes the contract setting the deployer as the initial owner."
                                    },
                                    "id": 655,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 635,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "854:2:5"
                                    },
                                    "returnParameters": {
                                        "id": 636,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "857:0:5"
                                    },
                                    "scope": 729,
                                    "src": "842:150:5",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 663,
                                        "nodeType": "Block",
                                        "src": "1123:30:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 661,
                                                    "name": "_owner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 627,
                                                    "src": "1140:6:5",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "functionReturnParameters": 660,
                                                "id": 662,
                                                "nodeType": "Return",
                                                "src": "1133:13:5"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 656,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "998:65:5",
                                        "text": " @dev Returns the address of the current owner."
                                    },
                                    "functionSelector": "8da5cb5b",
                                    "id": 664,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "owner",
                                    "nameLocation": "1077:5:5",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 657,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1082:2:5"
                                    },
                                    "returnParameters": {
                                        "id": 660,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 659,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 664,
                                                "src": "1114:7:5",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 658,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1114:7:5",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1113:9:5"
                                    },
                                    "scope": 729,
                                    "src": "1068:85:5",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 677,
                                        "nodeType": "Block",
                                        "src": "1262:96:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 672,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 668,
                                                                    "name": "owner",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 664,
                                                                    "src": "1280:5:5",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                        "typeString": "function () view returns (address)"
                                                                    }
                                                                },
                                                                "id": 669,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "1280:7:5",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 670,
                                                                    "name": "_msgSender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1962,
                                                                    "src": "1291:10:5",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                        "typeString": "function () view returns (address)"
                                                                    }
                                                                },
                                                                "id": 671,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "1291:12:5",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "1280:23:5",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572",
                                                            "id": 673,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1305:34:5",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                                                            },
                                                            "value": "Ownable: caller is not the owner"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe",
                                                                "typeString": "literal_string \"Ownable: caller is not the owner\""
                                                            }
                                                        ],
                                                        "id": 667,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1272:7:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 674,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1272:68:5",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 675,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1272:68:5"
                                            },
                                            {
                                                "id": 676,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1350:1:5"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 665,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1159:77:5",
                                        "text": " @dev Throws if called by any account other than the owner."
                                    },
                                    "id": 678,
                                    "name": "onlyOwner",
                                    "nameLocation": "1250:9:5",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 666,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1259:2:5"
                                    },
                                    "src": "1241:117:5",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 699,
                                        "nodeType": "Block",
                                        "src": "1754:91:5",
                                        "statements": [
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 685,
                                                            "name": "_owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 627,
                                                            "src": "1790:6:5",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 688,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1806:1:5",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    }
                                                                ],
                                                                "id": 687,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "1798:7:5",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 686,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1798:7:5",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 689,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1798:10:5",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 684,
                                                        "name": "OwnershipTransferred",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 633,
                                                        "src": "1769:20:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address)"
                                                        }
                                                    },
                                                    "id": 690,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1769:40:5",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 691,
                                                "nodeType": "EmitStatement",
                                                "src": "1764:45:5"
                                            },
                                            {
                                                "expression": {
                                                    "id": 697,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 692,
                                                        "name": "_owner",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 627,
                                                        "src": "1819:6:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "30",
                                                                "id": 695,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1836:1:5",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "id": 694,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "1828:7:5",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 693,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "1828:7:5",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 696,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "1828:10:5",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "1819:19:5",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 698,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1819:19:5"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 679,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1364:331:5",
                                        "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner."
                                    },
                                    "functionSelector": "715018a6",
                                    "id": 700,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 682,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 681,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "1744:9:5"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1744:9:5"
                                        }
                                    ],
                                    "name": "renounceOwnership",
                                    "nameLocation": "1709:17:5",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 680,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1726:2:5"
                                    },
                                    "returnParameters": {
                                        "id": 683,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1754:0:5"
                                    },
                                    "scope": 729,
                                    "src": "1700:145:5",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 727,
                                        "nodeType": "Block",
                                        "src": "2064:170:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 714,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 709,
                                                                "name": "newOwner",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 703,
                                                                "src": "2082:8:5",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 712,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2102:1:5",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 711,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "2094:7:5",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 710,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "2094:7:5",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 713,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "2094:10:5",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "2082:22:5",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373",
                                                            "id": 715,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2106:40:5",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                                                            },
                                                            "value": "Ownable: new owner is the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe",
                                                                "typeString": "literal_string \"Ownable: new owner is the zero address\""
                                                            }
                                                        ],
                                                        "id": 708,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2074:7:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 716,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2074:73:5",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 717,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2074:73:5"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 719,
                                                            "name": "_owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 627,
                                                            "src": "2183:6:5",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 720,
                                                            "name": "newOwner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 703,
                                                            "src": "2191:8:5",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 718,
                                                        "name": "OwnershipTransferred",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 633,
                                                        "src": "2162:20:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address)"
                                                        }
                                                    },
                                                    "id": 721,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2162:38:5",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 722,
                                                "nodeType": "EmitStatement",
                                                "src": "2157:43:5"
                                            },
                                            {
                                                "expression": {
                                                    "id": 725,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 723,
                                                        "name": "_owner",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 627,
                                                        "src": "2210:6:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 724,
                                                        "name": "newOwner",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 703,
                                                        "src": "2219:8:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "2210:17:5",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 726,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2210:17:5"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 701,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1851:138:5",
                                        "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner."
                                    },
                                    "functionSelector": "f2fde38b",
                                    "id": 728,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 706,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 705,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "2054:9:5"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2054:9:5"
                                        }
                                    ],
                                    "name": "transferOwnership",
                                    "nameLocation": "2003:17:5",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 704,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 703,
                                                "mutability": "mutable",
                                                "name": "newOwner",
                                                "nameLocation": "2029:8:5",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 728,
                                                "src": "2021:16:5",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 702,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2021:7:5",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2020:18:5"
                                    },
                                    "returnParameters": {
                                        "id": 707,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2064:0:5"
                                    },
                                    "scope": 729,
                                    "src": "1994:240:5",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 730,
                            "src": "584:1652:5",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:2204:5"
                },
                "id": 5
            },
            "@openzeppelin/contracts/security/Pausable.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/security/Pausable.sol",
                    "exportedSymbols": {
                        "Context": [
                            1974
                        ],
                        "Pausable": [
                            821
                        ]
                    },
                    "id": 822,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 731,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:6"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
                            "file": "../utils/Context.sol",
                            "id": 732,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 822,
                            "sourceUnit": 1975,
                            "src": "58:30:6",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 734,
                                        "name": "Context",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1974,
                                        "src": "560:7:6"
                                    },
                                    "id": 735,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "560:7:6"
                                }
                            ],
                            "canonicalName": "Pausable",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 733,
                                "nodeType": "StructuredDocumentation",
                                "src": "90:439:6",
                                "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place."
                            },
                            "fullyImplemented": true,
                            "id": 821,
                            "linearizedBaseContracts": [
                                821,
                                1974
                            ],
                            "name": "Pausable",
                            "nameLocation": "548:8:6",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "anonymous": false,
                                    "documentation": {
                                        "id": 736,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "574:73:6",
                                        "text": " @dev Emitted when the pause is triggered by `account`."
                                    },
                                    "id": 740,
                                    "name": "Paused",
                                    "nameLocation": "658:6:6",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 739,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 738,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "673:7:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 740,
                                                "src": "665:15:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 737,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "665:7:6",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "664:17:6"
                                    },
                                    "src": "652:30:6"
                                },
                                {
                                    "anonymous": false,
                                    "documentation": {
                                        "id": 741,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "688:70:6",
                                        "text": " @dev Emitted when the pause is lifted by `account`."
                                    },
                                    "id": 745,
                                    "name": "Unpaused",
                                    "nameLocation": "769:8:6",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 744,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 743,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "786:7:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 745,
                                                "src": "778:15:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 742,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "778:7:6",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "777:17:6"
                                    },
                                    "src": "763:32:6"
                                },
                                {
                                    "constant": false,
                                    "id": 747,
                                    "mutability": "mutable",
                                    "name": "_paused",
                                    "nameLocation": "814:7:6",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 821,
                                    "src": "801:20:6",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 746,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "801:4:6",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 755,
                                        "nodeType": "Block",
                                        "src": "915:32:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 753,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 751,
                                                        "name": "_paused",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 747,
                                                        "src": "925:7:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "66616c7365",
                                                        "id": 752,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "935:5:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "false"
                                                    },
                                                    "src": "925:15:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 754,
                                                "nodeType": "ExpressionStatement",
                                                "src": "925:15:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 748,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "828:67:6",
                                        "text": " @dev Initializes the contract in unpaused state."
                                    },
                                    "id": 756,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 749,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "912:2:6"
                                    },
                                    "returnParameters": {
                                        "id": 750,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "915:0:6"
                                    },
                                    "scope": 821,
                                    "src": "900:47:6",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 764,
                                        "nodeType": "Block",
                                        "src": "1095:31:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 762,
                                                    "name": "_paused",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 747,
                                                    "src": "1112:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 761,
                                                "id": 763,
                                                "nodeType": "Return",
                                                "src": "1105:14:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 757,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "953:84:6",
                                        "text": " @dev Returns true if the contract is paused, and false otherwise."
                                    },
                                    "functionSelector": "5c975abb",
                                    "id": 765,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "paused",
                                    "nameLocation": "1051:6:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 758,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1057:2:6"
                                    },
                                    "returnParameters": {
                                        "id": 761,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 760,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 765,
                                                "src": "1089:4:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 759,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1089:4:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1088:6:6"
                                    },
                                    "scope": 821,
                                    "src": "1042:84:6",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 776,
                                        "nodeType": "Block",
                                        "src": "1337:66:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 771,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "!",
                                                            "prefix": true,
                                                            "src": "1355:9:6",
                                                            "subExpression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 769,
                                                                    "name": "paused",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 765,
                                                                    "src": "1356:6:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                                                        "typeString": "function () view returns (bool)"
                                                                    }
                                                                },
                                                                "id": 770,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "1356:8:6",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5061757361626c653a20706175736564",
                                                            "id": 772,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1366:18:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
                                                                "typeString": "literal_string \"Pausable: paused\""
                                                            },
                                                            "value": "Pausable: paused"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_68571e1369f7a6dcdcd736cb0343b35a58ed0f64d245c2ed839c98d412744f8a",
                                                                "typeString": "literal_string \"Pausable: paused\""
                                                            }
                                                        ],
                                                        "id": 768,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1347:7:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 773,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1347:38:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 774,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1347:38:6"
                                            },
                                            {
                                                "id": 775,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1395:1:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 766,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1132:175:6",
                                        "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused."
                                    },
                                    "id": 777,
                                    "name": "whenNotPaused",
                                    "nameLocation": "1321:13:6",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 767,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1334:2:6"
                                    },
                                    "src": "1312:91:6",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 787,
                                        "nodeType": "Block",
                                        "src": "1603:69:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 781,
                                                                "name": "paused",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 765,
                                                                "src": "1621:6:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
                                                                    "typeString": "function () view returns (bool)"
                                                                }
                                                            },
                                                            "id": 782,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1621:8:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5061757361626c653a206e6f7420706175736564",
                                                            "id": 783,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1631:22:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
                                                                "typeString": "literal_string \"Pausable: not paused\""
                                                            },
                                                            "value": "Pausable: not paused"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_0d1d997348c4b502650619e51f7d09f80514d98b6993be5051d07f703984619a",
                                                                "typeString": "literal_string \"Pausable: not paused\""
                                                            }
                                                        ],
                                                        "id": 780,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1613:7:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 784,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1613:41:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 785,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1613:41:6"
                                            },
                                            {
                                                "id": 786,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1664:1:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 778,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1409:167:6",
                                        "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused."
                                    },
                                    "id": 788,
                                    "name": "whenPaused",
                                    "nameLocation": "1590:10:6",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 779,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1600:2:6"
                                    },
                                    "src": "1581:91:6",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 803,
                                        "nodeType": "Block",
                                        "src": "1856:66:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 796,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 794,
                                                        "name": "_paused",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 747,
                                                        "src": "1866:7:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "74727565",
                                                        "id": 795,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1876:4:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "src": "1866:14:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 797,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1866:14:6"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 799,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1962,
                                                                "src": "1902:10:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 800,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1902:12:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 798,
                                                        "name": "Paused",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 740,
                                                        "src": "1895:6:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 801,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1895:20:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 802,
                                                "nodeType": "EmitStatement",
                                                "src": "1890:25:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 789,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1678:124:6",
                                        "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused."
                                    },
                                    "id": 804,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 792,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 791,
                                                "name": "whenNotPaused",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 777,
                                                "src": "1842:13:6"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1842:13:6"
                                        }
                                    ],
                                    "name": "_pause",
                                    "nameLocation": "1816:6:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 790,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1822:2:6"
                                    },
                                    "returnParameters": {
                                        "id": 793,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1856:0:6"
                                    },
                                    "scope": 821,
                                    "src": "1807:115:6",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 819,
                                        "nodeType": "Block",
                                        "src": "2102:69:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 812,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 810,
                                                        "name": "_paused",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 747,
                                                        "src": "2112:7:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "66616c7365",
                                                        "id": 811,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2122:5:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "false"
                                                    },
                                                    "src": "2112:15:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 813,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2112:15:6"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 815,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1962,
                                                                "src": "2151:10:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 816,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2151:12:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 814,
                                                        "name": "Unpaused",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 745,
                                                        "src": "2142:8:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 817,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2142:22:6",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 818,
                                                "nodeType": "EmitStatement",
                                                "src": "2137:27:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 805,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1928:121:6",
                                        "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused."
                                    },
                                    "id": 820,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 808,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 807,
                                                "name": "whenPaused",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 788,
                                                "src": "2091:10:6"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2091:10:6"
                                        }
                                    ],
                                    "name": "_unpause",
                                    "nameLocation": "2063:8:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 806,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2071:2:6"
                                    },
                                    "returnParameters": {
                                        "id": 809,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2102:0:6"
                                    },
                                    "scope": 821,
                                    "src": "2054:117:6",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 822,
                            "src": "530:1643:6",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:2141:6"
                },
                "id": 6
            },
            "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                    "exportedSymbols": {
                        "Context": [
                            1974
                        ],
                        "ERC20": [
                            1328
                        ],
                        "IERC20": [
                            1406
                        ],
                        "IERC20Metadata": [
                            1431
                        ]
                    },
                    "id": 1329,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 823,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:7"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "./IERC20.sol",
                            "id": 824,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 1329,
                            "sourceUnit": 1407,
                            "src": "58:22:7",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
                            "file": "./extensions/IERC20Metadata.sol",
                            "id": 825,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 1329,
                            "sourceUnit": 1432,
                            "src": "81:41:7",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
                            "file": "../../utils/Context.sol",
                            "id": 826,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 1329,
                            "sourceUnit": 1975,
                            "src": "123:33:7",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 828,
                                        "name": "Context",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1974,
                                        "src": "1339:7:7"
                                    },
                                    "id": 829,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1339:7:7"
                                },
                                {
                                    "baseName": {
                                        "id": 830,
                                        "name": "IERC20",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1406,
                                        "src": "1348:6:7"
                                    },
                                    "id": 831,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1348:6:7"
                                },
                                {
                                    "baseName": {
                                        "id": 832,
                                        "name": "IERC20Metadata",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1431,
                                        "src": "1356:14:7"
                                    },
                                    "id": 833,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1356:14:7"
                                }
                            ],
                            "canonicalName": "ERC20",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 827,
                                "nodeType": "StructuredDocumentation",
                                "src": "158:1162:7",
                                "text": " @dev Implementation of the {IERC20} interface.\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 For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."
                            },
                            "fullyImplemented": true,
                            "id": 1328,
                            "linearizedBaseContracts": [
                                1328,
                                1431,
                                1406,
                                1974
                            ],
                            "name": "ERC20",
                            "nameLocation": "1330:5:7",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "id": 837,
                                    "mutability": "mutable",
                                    "name": "_balances",
                                    "nameLocation": "1414:9:7",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1328,
                                    "src": "1377:46:7",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                    },
                                    "typeName": {
                                        "id": 836,
                                        "keyType": {
                                            "id": 834,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1386:7:7",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1377:28:7",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                        },
                                        "valueType": {
                                            "id": 835,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1397:7:7",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": false,
                                    "id": 843,
                                    "mutability": "mutable",
                                    "name": "_allowances",
                                    "nameLocation": "1488:11:7",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1328,
                                    "src": "1430:69:7",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                    },
                                    "typeName": {
                                        "id": 842,
                                        "keyType": {
                                            "id": 838,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1439:7:7",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1430:49:7",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                            "typeString": "mapping(address => mapping(address => uint256))"
                                        },
                                        "valueType": {
                                            "id": 841,
                                            "keyType": {
                                                "id": 839,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1459:7:7",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "nodeType": "Mapping",
                                            "src": "1450:28:7",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                            },
                                            "valueType": {
                                                "id": 840,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1470:7:7",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": false,
                                    "id": 845,
                                    "mutability": "mutable",
                                    "name": "_totalSupply",
                                    "nameLocation": "1522:12:7",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1328,
                                    "src": "1506:28:7",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 844,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1506:7:7",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": false,
                                    "id": 847,
                                    "mutability": "mutable",
                                    "name": "_name",
                                    "nameLocation": "1556:5:7",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1328,
                                    "src": "1541:20:7",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_storage",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 846,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1541:6:7",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": false,
                                    "id": 849,
                                    "mutability": "mutable",
                                    "name": "_symbol",
                                    "nameLocation": "1582:7:7",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1328,
                                    "src": "1567:22:7",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_storage",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 848,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1567:6:7",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 865,
                                        "nodeType": "Block",
                                        "src": "1955:57:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 859,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 857,
                                                        "name": "_name",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 847,
                                                        "src": "1965:5:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_storage",
                                                            "typeString": "string storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 858,
                                                        "name": "name_",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 852,
                                                        "src": "1973:5:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                        }
                                                    },
                                                    "src": "1965:13:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "id": 860,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1965:13:7"
                                            },
                                            {
                                                "expression": {
                                                    "id": 863,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 861,
                                                        "name": "_symbol",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 849,
                                                        "src": "1988:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_storage",
                                                            "typeString": "string storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 862,
                                                        "name": "symbol_",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 854,
                                                        "src": "1998:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                        }
                                                    },
                                                    "src": "1988:17:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "id": 864,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1988:17:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 850,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1596:297:7",
                                        "text": " @dev Sets the values for {name} and {symbol}.\n The defaut value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."
                                    },
                                    "id": 866,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 855,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 852,
                                                "mutability": "mutable",
                                                "name": "name_",
                                                "nameLocation": "1925:5:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 866,
                                                "src": "1911:19:7",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 851,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1911:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 854,
                                                "mutability": "mutable",
                                                "name": "symbol_",
                                                "nameLocation": "1946:7:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 866,
                                                "src": "1932:21:7",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 853,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1932:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1910:44:7"
                                    },
                                    "returnParameters": {
                                        "id": 856,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1955:0:7"
                                    },
                                    "scope": 1328,
                                    "src": "1898:114:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        1418
                                    ],
                                    "body": {
                                        "id": 875,
                                        "nodeType": "Block",
                                        "src": "2146:29:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 873,
                                                    "name": "_name",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 847,
                                                    "src": "2163:5:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "functionReturnParameters": 872,
                                                "id": 874,
                                                "nodeType": "Return",
                                                "src": "2156:12:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 867,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2018:54:7",
                                        "text": " @dev Returns the name of the token."
                                    },
                                    "functionSelector": "06fdde03",
                                    "id": 876,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "name",
                                    "nameLocation": "2086:4:7",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 869,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "2113:8:7"
                                    },
                                    "parameters": {
                                        "id": 868,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2090:2:7"
                                    },
                                    "returnParameters": {
                                        "id": 872,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 871,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 876,
                                                "src": "2131:13:7",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 870,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2131:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2130:15:7"
                                    },
                                    "scope": 1328,
                                    "src": "2077:98:7",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        1424
                                    ],
                                    "body": {
                                        "id": 885,
                                        "nodeType": "Block",
                                        "src": "2359:31:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 883,
                                                    "name": "_symbol",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 849,
                                                    "src": "2376:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "functionReturnParameters": 882,
                                                "id": 884,
                                                "nodeType": "Return",
                                                "src": "2369:14:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 877,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2181:102:7",
                                        "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                                    },
                                    "functionSelector": "95d89b41",
                                    "id": 886,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "symbol",
                                    "nameLocation": "2297:6:7",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 879,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "2326:8:7"
                                    },
                                    "parameters": {
                                        "id": 878,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2303:2:7"
                                    },
                                    "returnParameters": {
                                        "id": 882,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 881,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 886,
                                                "src": "2344:13:7",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 880,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2344:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2343:15:7"
                                    },
                                    "scope": 1328,
                                    "src": "2288:102:7",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        1430
                                    ],
                                    "body": {
                                        "id": 895,
                                        "nodeType": "Block",
                                        "src": "3079:26:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "hexValue": "3138",
                                                    "id": 893,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3096:2:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_18_by_1",
                                                        "typeString": "int_const 18"
                                                    },
                                                    "value": "18"
                                                },
                                                "functionReturnParameters": 892,
                                                "id": 894,
                                                "nodeType": "Return",
                                                "src": "3089:9:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 887,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2396:613:7",
                                        "text": " @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 Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\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}."
                                    },
                                    "functionSelector": "313ce567",
                                    "id": 896,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "decimals",
                                    "nameLocation": "3023:8:7",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 889,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3054:8:7"
                                    },
                                    "parameters": {
                                        "id": 888,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3031:2:7"
                                    },
                                    "returnParameters": {
                                        "id": 892,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 891,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 896,
                                                "src": "3072:5:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 890,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3072:5:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3071:7:7"
                                    },
                                    "scope": 1328,
                                    "src": "3014:91:7",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        1337
                                    ],
                                    "body": {
                                        "id": 905,
                                        "nodeType": "Block",
                                        "src": "3235:36:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 903,
                                                    "name": "_totalSupply",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 845,
                                                    "src": "3252:12:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 902,
                                                "id": 904,
                                                "nodeType": "Return",
                                                "src": "3245:19:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 897,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3111:49:7",
                                        "text": " @dev See {IERC20-totalSupply}."
                                    },
                                    "functionSelector": "18160ddd",
                                    "id": 906,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "totalSupply",
                                    "nameLocation": "3174:11:7",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 899,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3208:8:7"
                                    },
                                    "parameters": {
                                        "id": 898,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3185:2:7"
                                    },
                                    "returnParameters": {
                                        "id": 902,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 901,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 906,
                                                "src": "3226:7:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 900,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3226:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3225:9:7"
                                    },
                                    "scope": 1328,
                                    "src": "3165:106:7",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        1345
                                    ],
                                    "body": {
                                        "id": 919,
                                        "nodeType": "Block",
                                        "src": "3412:42:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "id": 915,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 837,
                                                        "src": "3429:9:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 917,
                                                    "indexExpression": {
                                                        "id": 916,
                                                        "name": "account",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 909,
                                                        "src": "3439:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "3429:18:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 914,
                                                "id": 918,
                                                "nodeType": "Return",
                                                "src": "3422:25:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 907,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3277:47:7",
                                        "text": " @dev See {IERC20-balanceOf}."
                                    },
                                    "functionSelector": "70a08231",
                                    "id": 920,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "balanceOf",
                                    "nameLocation": "3338:9:7",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 911,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3385:8:7"
                                    },
                                    "parameters": {
                                        "id": 910,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 909,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "3356:7:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 920,
                                                "src": "3348:15:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 908,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3348:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3347:17:7"
                                    },
                                    "returnParameters": {
                                        "id": 914,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 913,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 920,
                                                "src": "3403:7:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 912,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3403:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3402:9:7"
                                    },
                                    "scope": 1328,
                                    "src": "3329:125:7",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        1355
                                    ],
                                    "body": {
                                        "id": 940,
                                        "nodeType": "Block",
                                        "src": "3749:80:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 932,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1962,
                                                                "src": "3769:10:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 933,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3769:12:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 934,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 923,
                                                            "src": "3783:9:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 935,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 925,
                                                            "src": "3794:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 931,
                                                        "name": "_transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1162,
                                                        "src": "3759:9:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 936,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3759:42:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 937,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3759:42:7"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 938,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3818:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 930,
                                                "id": 939,
                                                "nodeType": "Return",
                                                "src": "3811:11:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 921,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3460:192:7",
                                        "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
                                    },
                                    "functionSelector": "a9059cbb",
                                    "id": 941,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "transfer",
                                    "nameLocation": "3666:8:7",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 927,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3725:8:7"
                                    },
                                    "parameters": {
                                        "id": 926,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 923,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "3683:9:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 941,
                                                "src": "3675:17:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 922,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3675:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 925,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "3702:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 941,
                                                "src": "3694:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 924,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3694:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3674:35:7"
                                    },
                                    "returnParameters": {
                                        "id": 930,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 929,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 941,
                                                "src": "3743:4:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 928,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3743:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3742:6:7"
                                    },
                                    "scope": 1328,
                                    "src": "3657:172:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        1365
                                    ],
                                    "body": {
                                        "id": 958,
                                        "nodeType": "Block",
                                        "src": "3985:51:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 952,
                                                            "name": "_allowances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 843,
                                                            "src": "4002:11:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                "typeString": "mapping(address => mapping(address => uint256))"
                                                            }
                                                        },
                                                        "id": 954,
                                                        "indexExpression": {
                                                            "id": 953,
                                                            "name": "owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 944,
                                                            "src": "4014:5:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "4002:18:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 956,
                                                    "indexExpression": {
                                                        "id": 955,
                                                        "name": "spender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 946,
                                                        "src": "4021:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "4002:27:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 951,
                                                "id": 957,
                                                "nodeType": "Return",
                                                "src": "3995:34:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 942,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3835:47:7",
                                        "text": " @dev See {IERC20-allowance}."
                                    },
                                    "functionSelector": "dd62ed3e",
                                    "id": 959,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "allowance",
                                    "nameLocation": "3896:9:7",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 948,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3958:8:7"
                                    },
                                    "parameters": {
                                        "id": 947,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 944,
                                                "mutability": "mutable",
                                                "name": "owner",
                                                "nameLocation": "3914:5:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 959,
                                                "src": "3906:13:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 943,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3906:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 946,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "3929:7:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 959,
                                                "src": "3921:15:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 945,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3921:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3905:32:7"
                                    },
                                    "returnParameters": {
                                        "id": 951,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 950,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 959,
                                                "src": "3976:7:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 949,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3976:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3975:9:7"
                                    },
                                    "scope": 1328,
                                    "src": "3887:149:7",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        1375
                                    ],
                                    "body": {
                                        "id": 979,
                                        "nodeType": "Block",
                                        "src": "4263:77:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 971,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1962,
                                                                "src": "4282:10:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 972,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4282:12:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 973,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 962,
                                                            "src": "4296:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 974,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 964,
                                                            "src": "4305:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 970,
                                                        "name": "_approve",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1316,
                                                        "src": "4273:8:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 975,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4273:39:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 976,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4273:39:7"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 977,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4329:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 969,
                                                "id": 978,
                                                "nodeType": "Return",
                                                "src": "4322:11:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 960,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4042:127:7",
                                        "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."
                                    },
                                    "functionSelector": "095ea7b3",
                                    "id": 980,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "approve",
                                    "nameLocation": "4183:7:7",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 966,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "4239:8:7"
                                    },
                                    "parameters": {
                                        "id": 965,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 962,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "4199:7:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 980,
                                                "src": "4191:15:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 961,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4191:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 964,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "4216:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 980,
                                                "src": "4208:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 963,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4208:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4190:33:7"
                                    },
                                    "returnParameters": {
                                        "id": 969,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 968,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 980,
                                                "src": "4257:4:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 967,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4257:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4256:6:7"
                                    },
                                    "scope": 1328,
                                    "src": "4174:166:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        1387
                                    ],
                                    "body": {
                                        "id": 1026,
                                        "nodeType": "Block",
                                        "src": "4919:302:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 994,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 983,
                                                            "src": "4939:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 995,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 985,
                                                            "src": "4947:9:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 996,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 987,
                                                            "src": "4958:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 993,
                                                        "name": "_transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1162,
                                                        "src": "4929:9:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 997,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4929:36:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 998,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4929:36:7"
                                            },
                                            {
                                                "assignments": [
                                                    1000
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1000,
                                                        "mutability": "mutable",
                                                        "name": "currentAllowance",
                                                        "nameLocation": "4984:16:7",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1026,
                                                        "src": "4976:24:7",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 999,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4976:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1007,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 1001,
                                                            "name": "_allowances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 843,
                                                            "src": "5003:11:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                "typeString": "mapping(address => mapping(address => uint256))"
                                                            }
                                                        },
                                                        "id": 1003,
                                                        "indexExpression": {
                                                            "id": 1002,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 983,
                                                            "src": "5015:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "5003:19:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 1006,
                                                    "indexExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 1004,
                                                            "name": "_msgSender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1962,
                                                            "src": "5023:10:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                "typeString": "function () view returns (address)"
                                                            }
                                                        },
                                                        "id": 1005,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5023:12:7",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "5003:33:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4976:60:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1011,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1009,
                                                                "name": "currentAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1000,
                                                                "src": "5054:16:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 1010,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 987,
                                                                "src": "5074:6:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5054:26:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                                                            "id": 1012,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5082:42:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                                            },
                                                            "value": "ERC20: transfer amount exceeds allowance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                                            }
                                                        ],
                                                        "id": 1008,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "5046:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1013,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5046:79:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1014,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5046:79:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1016,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 983,
                                                            "src": "5144:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 1017,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1962,
                                                                "src": "5152:10:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 1018,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5152:12:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1021,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1019,
                                                                "name": "currentAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1000,
                                                                "src": "5166:16:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "id": 1020,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 987,
                                                                "src": "5185:6:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5166:25:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1015,
                                                        "name": "_approve",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1316,
                                                        "src": "5135:8:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1022,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5135:57:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1023,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5135:57:7"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 1024,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "5210:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 992,
                                                "id": 1025,
                                                "nodeType": "Return",
                                                "src": "5203:11:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 981,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4346:456:7",
                                        "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."
                                    },
                                    "functionSelector": "23b872dd",
                                    "id": 1027,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "transferFrom",
                                    "nameLocation": "4816:12:7",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 989,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "4895:8:7"
                                    },
                                    "parameters": {
                                        "id": 988,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 983,
                                                "mutability": "mutable",
                                                "name": "sender",
                                                "nameLocation": "4837:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1027,
                                                "src": "4829:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 982,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4829:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 985,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "4853:9:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1027,
                                                "src": "4845:17:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 984,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4845:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 987,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "4872:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1027,
                                                "src": "4864:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 986,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4864:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4828:51:7"
                                    },
                                    "returnParameters": {
                                        "id": 992,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 991,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1027,
                                                "src": "4913:4:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 990,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4913:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4912:6:7"
                                    },
                                    "scope": 1328,
                                    "src": "4807:414:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 1053,
                                        "nodeType": "Block",
                                        "src": "5710:118:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 1038,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1962,
                                                                "src": "5729:10:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 1039,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5729:12:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1040,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1030,
                                                            "src": "5743:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1048,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "id": 1041,
                                                                        "name": "_allowances",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 843,
                                                                        "src": "5752:11:7",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                            "typeString": "mapping(address => mapping(address => uint256))"
                                                                        }
                                                                    },
                                                                    "id": 1044,
                                                                    "indexExpression": {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 1042,
                                                                            "name": "_msgSender",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1962,
                                                                            "src": "5764:10:7",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                                "typeString": "function () view returns (address)"
                                                                            }
                                                                        },
                                                                        "id": 1043,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "5764:12:7",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "5752:25:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                        "typeString": "mapping(address => uint256)"
                                                                    }
                                                                },
                                                                "id": 1046,
                                                                "indexExpression": {
                                                                    "id": 1045,
                                                                    "name": "spender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1030,
                                                                    "src": "5778:7:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "5752:34:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "id": 1047,
                                                                "name": "addedValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1032,
                                                                "src": "5789:10:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5752:47:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1037,
                                                        "name": "_approve",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1316,
                                                        "src": "5720:8:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1049,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5720:80:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1050,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5720:80:7"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 1051,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "5817:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 1036,
                                                "id": 1052,
                                                "nodeType": "Return",
                                                "src": "5810:11:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1028,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5227:384:7",
                                        "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
                                    },
                                    "functionSelector": "39509351",
                                    "id": 1054,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "increaseAllowance",
                                    "nameLocation": "5625:17:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1033,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1030,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "5651:7:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1054,
                                                "src": "5643:15:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1029,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5643:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1032,
                                                "mutability": "mutable",
                                                "name": "addedValue",
                                                "nameLocation": "5668:10:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1054,
                                                "src": "5660:18:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1031,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5660:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5642:37:7"
                                    },
                                    "returnParameters": {
                                        "id": 1036,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1035,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1054,
                                                "src": "5704:4:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1034,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5704:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5703:6:7"
                                    },
                                    "scope": 1328,
                                    "src": "5616:212:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 1091,
                                        "nodeType": "Block",
                                        "src": "6414:272:7",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1065
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1065,
                                                        "mutability": "mutable",
                                                        "name": "currentAllowance",
                                                        "nameLocation": "6432:16:7",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1091,
                                                        "src": "6424:24:7",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1064,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6424:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1072,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 1066,
                                                            "name": "_allowances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 843,
                                                            "src": "6451:11:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                "typeString": "mapping(address => mapping(address => uint256))"
                                                            }
                                                        },
                                                        "id": 1069,
                                                        "indexExpression": {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 1067,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1962,
                                                                "src": "6463:10:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 1068,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6463:12:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "6451:25:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 1071,
                                                    "indexExpression": {
                                                        "id": 1070,
                                                        "name": "spender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1057,
                                                        "src": "6477:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "6451:34:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6424:61:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1076,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1074,
                                                                "name": "currentAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1065,
                                                                "src": "6503:16:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 1075,
                                                                "name": "subtractedValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1059,
                                                                "src": "6523:15:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "6503:35:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                                            "id": 1077,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6540:39:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                                                "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                                            },
                                                            "value": "ERC20: decreased allowance below zero"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                                                "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                                            }
                                                        ],
                                                        "id": 1073,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6495:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1078,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6495:85:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1079,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6495:85:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 1081,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1962,
                                                                "src": "6599:10:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 1082,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6599:12:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1083,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1057,
                                                            "src": "6613:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1086,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1084,
                                                                "name": "currentAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1065,
                                                                "src": "6622:16:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "id": 1085,
                                                                "name": "subtractedValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1059,
                                                                "src": "6641:15:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "6622:34:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1080,
                                                        "name": "_approve",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1316,
                                                        "src": "6590:8:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1087,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6590:67:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1088,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6590:67:7"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 1089,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "6675:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 1063,
                                                "id": 1090,
                                                "nodeType": "Return",
                                                "src": "6668:11:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1055,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5834:476:7",
                                        "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
                                    },
                                    "functionSelector": "a457c2d7",
                                    "id": 1092,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "decreaseAllowance",
                                    "nameLocation": "6324:17:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1060,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1057,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "6350:7:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1092,
                                                "src": "6342:15:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1056,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6342:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1059,
                                                "mutability": "mutable",
                                                "name": "subtractedValue",
                                                "nameLocation": "6367:15:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1092,
                                                "src": "6359:23:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1058,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6359:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6341:42:7"
                                    },
                                    "returnParameters": {
                                        "id": 1063,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1062,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1092,
                                                "src": "6408:4:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1061,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6408:4:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6407:6:7"
                                    },
                                    "scope": 1328,
                                    "src": "6315:371:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 1161,
                                        "nodeType": "Block",
                                        "src": "7247:505:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 1108,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1103,
                                                                "name": "sender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1095,
                                                                "src": "7265:6:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1106,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7283:1:7",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 1105,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "7275:7:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1104,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7275:7:7",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1107,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7275:10:7",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "7265:20:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                                                            "id": 1109,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7287:39:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                                                            },
                                                            "value": "ERC20: transfer from the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                                                            }
                                                        ],
                                                        "id": 1102,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7257:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1110,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7257:70:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1111,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7257:70:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 1118,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1113,
                                                                "name": "recipient",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1097,
                                                                "src": "7345:9:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1116,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7366:1:7",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 1115,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "7358:7:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1114,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7358:7:7",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1117,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7358:10:7",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "7345:23:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                                                            "id": 1119,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7370:37:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                                                            },
                                                            "value": "ERC20: transfer to the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                                                            }
                                                        ],
                                                        "id": 1112,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7337:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1120,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7337:71:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1121,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7337:71:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1123,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1095,
                                                            "src": "7440:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1124,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1097,
                                                            "src": "7448:9:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1125,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1099,
                                                            "src": "7459:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1122,
                                                        "name": "_beforeTokenTransfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1327,
                                                        "src": "7419:20:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1126,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7419:47:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1127,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7419:47:7"
                                            },
                                            {
                                                "assignments": [
                                                    1129
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1129,
                                                        "mutability": "mutable",
                                                        "name": "senderBalance",
                                                        "nameLocation": "7485:13:7",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1161,
                                                        "src": "7477:21:7",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1128,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7477:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1133,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 1130,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 837,
                                                        "src": "7501:9:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 1132,
                                                    "indexExpression": {
                                                        "id": 1131,
                                                        "name": "sender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1095,
                                                        "src": "7511:6:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "7501:17:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "7477:41:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1137,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1135,
                                                                "name": "senderBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1129,
                                                                "src": "7536:13:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 1136,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1099,
                                                                "src": "7553:6:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "7536:23:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                                                            "id": 1138,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7561:40:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                                            },
                                                            "value": "ERC20: transfer amount exceeds balance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                                            }
                                                        ],
                                                        "id": 1134,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7528:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1139,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7528:74:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1140,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7528:74:7"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1147,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 1141,
                                                            "name": "_balances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 837,
                                                            "src": "7612:9:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 1143,
                                                        "indexExpression": {
                                                            "id": 1142,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1095,
                                                            "src": "7622:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "7612:17:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1146,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1144,
                                                            "name": "senderBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1129,
                                                            "src": "7632:13:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "-",
                                                        "rightExpression": {
                                                            "id": 1145,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1099,
                                                            "src": "7648:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "7632:22:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "7612:42:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 1148,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7612:42:7"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1153,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 1149,
                                                            "name": "_balances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 837,
                                                            "src": "7664:9:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 1151,
                                                        "indexExpression": {
                                                            "id": 1150,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1097,
                                                            "src": "7674:9:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "7664:20:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 1152,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1099,
                                                        "src": "7688:6:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "7664:30:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 1154,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7664:30:7"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 1156,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1095,
                                                            "src": "7719:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1157,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1097,
                                                            "src": "7727:9:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1158,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1099,
                                                            "src": "7738:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1155,
                                                        "name": "Transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1396,
                                                        "src": "7710:8:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1159,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7710:35:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1160,
                                                "nodeType": "EmitStatement",
                                                "src": "7705:40:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1093,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6692:463:7",
                                        "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."
                                    },
                                    "id": 1162,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_transfer",
                                    "nameLocation": "7169:9:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1100,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1095,
                                                "mutability": "mutable",
                                                "name": "sender",
                                                "nameLocation": "7187:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1162,
                                                "src": "7179:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1094,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7179:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1097,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "7203:9:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1162,
                                                "src": "7195:17:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1096,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7195:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1099,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "7222:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1162,
                                                "src": "7214:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1098,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7214:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7178:51:7"
                                    },
                                    "returnParameters": {
                                        "id": 1101,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "7247:0:7"
                                    },
                                    "scope": 1328,
                                    "src": "7160:592:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1208,
                                        "nodeType": "Block",
                                        "src": "8088:265:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 1176,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1171,
                                                                "name": "account",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1165,
                                                                "src": "8106:7:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1174,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "8125:1:7",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 1173,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "8117:7:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1172,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "8117:7:7",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1175,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8117:10:7",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "8106:21:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                                            "id": 1177,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8129:33:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                                                            },
                                                            "value": "ERC20: mint to the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                                                            }
                                                        ],
                                                        "id": 1170,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "8098:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1178,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8098:65:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1179,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8098:65:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 1183,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8203:1:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    }
                                                                ],
                                                                "id": 1182,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "8195:7:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1181,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "8195:7:7",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1184,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "8195:10:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1185,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1165,
                                                            "src": "8207:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1186,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1167,
                                                            "src": "8216:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1180,
                                                        "name": "_beforeTokenTransfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1327,
                                                        "src": "8174:20:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1187,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8174:49:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1188,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8174:49:7"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1191,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 1189,
                                                        "name": "_totalSupply",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 845,
                                                        "src": "8234:12:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 1190,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1167,
                                                        "src": "8250:6:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "8234:22:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 1192,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8234:22:7"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1197,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 1193,
                                                            "name": "_balances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 837,
                                                            "src": "8266:9:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 1195,
                                                        "indexExpression": {
                                                            "id": 1194,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1165,
                                                            "src": "8276:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "8266:18:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 1196,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1167,
                                                        "src": "8288:6:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "8266:28:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 1198,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8266:28:7"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 1202,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8326:1:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    }
                                                                ],
                                                                "id": 1201,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "8318:7:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1200,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "8318:7:7",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1203,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "8318:10:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1204,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1165,
                                                            "src": "8330:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1205,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1167,
                                                            "src": "8339:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1199,
                                                        "name": "Transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1396,
                                                        "src": "8309:8:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1206,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8309:37:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1207,
                                                "nodeType": "EmitStatement",
                                                "src": "8304:42:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1163,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7758:260:7",
                                        "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address."
                                    },
                                    "id": 1209,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_mint",
                                    "nameLocation": "8032:5:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1168,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1165,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "8046:7:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1209,
                                                "src": "8038:15:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1164,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8038:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1167,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "8063:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1209,
                                                "src": "8055:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1166,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8055:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8037:33:7"
                                    },
                                    "returnParameters": {
                                        "id": 1169,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8088:0:7"
                                    },
                                    "scope": 1328,
                                    "src": "8023:330:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1270,
                                        "nodeType": "Block",
                                        "src": "8738:418:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 1223,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1218,
                                                                "name": "account",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1212,
                                                                "src": "8756:7:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1221,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "8775:1:7",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 1220,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "8767:7:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1219,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "8767:7:7",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1222,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8767:10:7",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "8756:21:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                                                            "id": 1224,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8779:35:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                                                            },
                                                            "value": "ERC20: burn from the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                                                            }
                                                        ],
                                                        "id": 1217,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "8748:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1225,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8748:67:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1226,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8748:67:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1228,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1212,
                                                            "src": "8847:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 1231,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8864:1:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    }
                                                                ],
                                                                "id": 1230,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "8856:7:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1229,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "8856:7:7",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1232,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "8856:10:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1233,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1214,
                                                            "src": "8868:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1227,
                                                        "name": "_beforeTokenTransfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1327,
                                                        "src": "8826:20:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1234,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8826:49:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1235,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8826:49:7"
                                            },
                                            {
                                                "assignments": [
                                                    1237
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1237,
                                                        "mutability": "mutable",
                                                        "name": "accountBalance",
                                                        "nameLocation": "8894:14:7",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1270,
                                                        "src": "8886:22:7",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1236,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "8886:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1241,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 1238,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 837,
                                                        "src": "8911:9:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 1240,
                                                    "indexExpression": {
                                                        "id": 1239,
                                                        "name": "account",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1212,
                                                        "src": "8921:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "8911:18:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "8886:43:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1245,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1243,
                                                                "name": "accountBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1237,
                                                                "src": "8947:14:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 1244,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1214,
                                                                "src": "8965:6:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "8947:24:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                                            "id": 1246,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8973:36:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                                            },
                                                            "value": "ERC20: burn amount exceeds balance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                                            }
                                                        ],
                                                        "id": 1242,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "8939:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1247,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8939:71:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1248,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8939:71:7"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1255,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 1249,
                                                            "name": "_balances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 837,
                                                            "src": "9020:9:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 1251,
                                                        "indexExpression": {
                                                            "id": 1250,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1212,
                                                            "src": "9030:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "9020:18:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 1254,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 1252,
                                                            "name": "accountBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1237,
                                                            "src": "9041:14:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "-",
                                                        "rightExpression": {
                                                            "id": 1253,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1214,
                                                            "src": "9058:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "9041:23:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9020:44:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 1256,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9020:44:7"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1259,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 1257,
                                                        "name": "_totalSupply",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 845,
                                                        "src": "9074:12:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                        "id": 1258,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1214,
                                                        "src": "9090:6:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9074:22:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 1260,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9074:22:7"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 1262,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1212,
                                                            "src": "9121:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 1265,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "9138:1:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    }
                                                                ],
                                                                "id": 1264,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "9130:7:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1263,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "9130:7:7",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1266,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "9130:10:7",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1267,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1214,
                                                            "src": "9142:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1261,
                                                        "name": "Transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1396,
                                                        "src": "9112:8:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1268,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9112:37:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1269,
                                                "nodeType": "EmitStatement",
                                                "src": "9107:42:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1210,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8359:309:7",
                                        "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
                                    },
                                    "id": 1271,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_burn",
                                    "nameLocation": "8682:5:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1215,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1212,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "8696:7:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1271,
                                                "src": "8688:15:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1211,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8688:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1214,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "8713:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1271,
                                                "src": "8705:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1213,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8705:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8687:33:7"
                                    },
                                    "returnParameters": {
                                        "id": 1216,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8738:0:7"
                                    },
                                    "scope": 1328,
                                    "src": "8673:483:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1315,
                                        "nodeType": "Block",
                                        "src": "9662:257:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 1287,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1282,
                                                                "name": "owner",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1274,
                                                                "src": "9680:5:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1285,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "9697:1:7",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 1284,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "9689:7:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1283,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "9689:7:7",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1286,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9689:10:7",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "9680:19:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                                                            "id": 1288,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9701:38:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                                                            },
                                                            "value": "ERC20: approve from the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                                                            }
                                                        ],
                                                        "id": 1281,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "9672:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1289,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9672:68:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1290,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9672:68:7"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 1297,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1292,
                                                                "name": "spender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1276,
                                                                "src": "9758:7:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1295,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "9777:1:7",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 1294,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "9769:7:7",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1293,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "9769:7:7",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1296,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9769:10:7",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "9758:21:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                                                            "id": 1298,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9781:36:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                                                            },
                                                            "value": "ERC20: approve to the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                                                            }
                                                        ],
                                                        "id": 1291,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "9750:7:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1299,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9750:68:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1300,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9750:68:7"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1307,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 1301,
                                                                "name": "_allowances",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 843,
                                                                "src": "9829:11:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => uint256))"
                                                                }
                                                            },
                                                            "id": 1304,
                                                            "indexExpression": {
                                                                "id": 1302,
                                                                "name": "owner",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1274,
                                                                "src": "9841:5:7",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "9829:18:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 1305,
                                                        "indexExpression": {
                                                            "id": 1303,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1276,
                                                            "src": "9848:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "9829:27:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 1306,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1278,
                                                        "src": "9859:6:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9829:36:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 1308,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9829:36:7"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 1310,
                                                            "name": "owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1274,
                                                            "src": "9889:5:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1311,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1276,
                                                            "src": "9896:7:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1312,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1278,
                                                            "src": "9905:6:7",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1309,
                                                        "name": "Approval",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1405,
                                                        "src": "9880:8:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 1313,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9880:32:7",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1314,
                                                "nodeType": "EmitStatement",
                                                "src": "9875:37:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1272,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9162:412:7",
                                        "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
                                    },
                                    "id": 1316,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_approve",
                                    "nameLocation": "9588:8:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1279,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1274,
                                                "mutability": "mutable",
                                                "name": "owner",
                                                "nameLocation": "9605:5:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1316,
                                                "src": "9597:13:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1273,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9597:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1276,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "9620:7:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1316,
                                                "src": "9612:15:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1275,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9612:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1278,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "9637:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1316,
                                                "src": "9629:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1277,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9629:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9596:48:7"
                                    },
                                    "returnParameters": {
                                        "id": 1280,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "9662:0:7"
                                    },
                                    "scope": 1328,
                                    "src": "9579:340:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1326,
                                        "nodeType": "Block",
                                        "src": "10595:3:7",
                                        "statements": []
                                    },
                                    "documentation": {
                                        "id": 1317,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9925:576:7",
                                        "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                                    },
                                    "id": 1327,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_beforeTokenTransfer",
                                    "nameLocation": "10515:20:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1324,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1319,
                                                "mutability": "mutable",
                                                "name": "from",
                                                "nameLocation": "10544:4:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1327,
                                                "src": "10536:12:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1318,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10536:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1321,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "10558:2:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1327,
                                                "src": "10550:10:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1320,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10550:7:7",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1323,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "10570:6:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1327,
                                                "src": "10562:14:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1322,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10562:7:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10535:42:7"
                                    },
                                    "returnParameters": {
                                        "id": 1325,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "10595:0:7"
                                    },
                                    "scope": 1328,
                                    "src": "10506:92:7",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 1329,
                            "src": "1321:9279:7",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:10568:7"
                },
                "id": 7
            },
            "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                    "exportedSymbols": {
                        "IERC20": [
                            1406
                        ]
                    },
                    "id": 1407,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1330,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:8"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IERC20",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 1331,
                                "nodeType": "StructuredDocumentation",
                                "src": "58:70:8",
                                "text": " @dev Interface of the ERC20 standard as defined in the EIP."
                            },
                            "fullyImplemented": false,
                            "id": 1406,
                            "linearizedBaseContracts": [
                                1406
                            ],
                            "name": "IERC20",
                            "nameLocation": "139:6:8",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 1332,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "152:66:8",
                                        "text": " @dev Returns the amount of tokens in existence."
                                    },
                                    "functionSelector": "18160ddd",
                                    "id": 1337,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "totalSupply",
                                    "nameLocation": "232:11:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1333,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "243:2:8"
                                    },
                                    "returnParameters": {
                                        "id": 1336,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1335,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1337,
                                                "src": "269:7:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1334,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "269:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "268:9:8"
                                    },
                                    "scope": 1406,
                                    "src": "223:55:8",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 1338,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "284:72:8",
                                        "text": " @dev Returns the amount of tokens owned by `account`."
                                    },
                                    "functionSelector": "70a08231",
                                    "id": 1345,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "balanceOf",
                                    "nameLocation": "370:9:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1341,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1340,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "388:7:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1345,
                                                "src": "380:15:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1339,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "380:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "379:17:8"
                                    },
                                    "returnParameters": {
                                        "id": 1344,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1343,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1345,
                                                "src": "420:7:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1342,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "420:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "419:9:8"
                                    },
                                    "scope": 1406,
                                    "src": "361:68:8",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 1346,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "435:209:8",
                                        "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                                    },
                                    "functionSelector": "a9059cbb",
                                    "id": 1355,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "transfer",
                                    "nameLocation": "658:8:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1351,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1348,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "675:9:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1355,
                                                "src": "667:17:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1347,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "667:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1350,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "694:6:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1355,
                                                "src": "686:14:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1349,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "686:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "666:35:8"
                                    },
                                    "returnParameters": {
                                        "id": 1354,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1353,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1355,
                                                "src": "720:4:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1352,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "720:4:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "719:6:8"
                                    },
                                    "scope": 1406,
                                    "src": "649:77:8",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 1356,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "732:264:8",
                                        "text": " @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 This value changes when {approve} or {transferFrom} are called."
                                    },
                                    "functionSelector": "dd62ed3e",
                                    "id": 1365,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "allowance",
                                    "nameLocation": "1010:9:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1361,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1358,
                                                "mutability": "mutable",
                                                "name": "owner",
                                                "nameLocation": "1028:5:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1365,
                                                "src": "1020:13:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1357,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1020:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1360,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "1043:7:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1365,
                                                "src": "1035:15:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1359,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1035:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1019:32:8"
                                    },
                                    "returnParameters": {
                                        "id": 1364,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1363,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1365,
                                                "src": "1075:7:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1362,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1075:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1074:9:8"
                                    },
                                    "scope": 1406,
                                    "src": "1001:83:8",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 1366,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1090:642:8",
                                        "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\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 Emits an {Approval} event."
                                    },
                                    "functionSelector": "095ea7b3",
                                    "id": 1375,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "approve",
                                    "nameLocation": "1746:7:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1371,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1368,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "1762:7:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1375,
                                                "src": "1754:15:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1367,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1754:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1370,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "1779:6:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1375,
                                                "src": "1771:14:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1369,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1771:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1753:33:8"
                                    },
                                    "returnParameters": {
                                        "id": 1374,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1373,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1375,
                                                "src": "1805:4:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1372,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1805:4:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1804:6:8"
                                    },
                                    "scope": 1406,
                                    "src": "1737:74:8",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 1376,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1817:296:8",
                                        "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                                    },
                                    "functionSelector": "23b872dd",
                                    "id": 1387,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "transferFrom",
                                    "nameLocation": "2127:12:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1383,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1378,
                                                "mutability": "mutable",
                                                "name": "sender",
                                                "nameLocation": "2148:6:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1387,
                                                "src": "2140:14:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1377,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2140:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1380,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "2164:9:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1387,
                                                "src": "2156:17:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1379,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2156:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1382,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "2183:6:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1387,
                                                "src": "2175:14:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1381,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2175:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2139:51:8"
                                    },
                                    "returnParameters": {
                                        "id": 1386,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1385,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1387,
                                                "src": "2209:4:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1384,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2209:4:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2208:6:8"
                                    },
                                    "scope": 1406,
                                    "src": "2118:97:8",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "anonymous": false,
                                    "documentation": {
                                        "id": 1388,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2221:158:8",
                                        "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                                    },
                                    "id": 1396,
                                    "name": "Transfer",
                                    "nameLocation": "2390:8:8",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 1395,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1390,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "from",
                                                "nameLocation": "2415:4:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1396,
                                                "src": "2399:20:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1389,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2399:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1392,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "2437:2:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1396,
                                                "src": "2421:18:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1391,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2421:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1394,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "2449:5:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1396,
                                                "src": "2441:13:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1393,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2441:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2398:57:8"
                                    },
                                    "src": "2384:72:8"
                                },
                                {
                                    "anonymous": false,
                                    "documentation": {
                                        "id": 1397,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2462:148:8",
                                        "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                                    },
                                    "id": 1405,
                                    "name": "Approval",
                                    "nameLocation": "2621:8:8",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 1404,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1399,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "owner",
                                                "nameLocation": "2646:5:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1405,
                                                "src": "2630:21:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1398,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2630:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1401,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "2669:7:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1405,
                                                "src": "2653:23:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1400,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2653:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1403,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "2686:5:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1405,
                                                "src": "2678:13:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1402,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2678:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2629:63:8"
                                    },
                                    "src": "2615:78:8"
                                }
                            ],
                            "scope": 1407,
                            "src": "129:2566:8",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:2663:8"
                },
                "id": 8
            },
            "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
                    "exportedSymbols": {
                        "IERC20": [
                            1406
                        ],
                        "IERC20Metadata": [
                            1431
                        ]
                    },
                    "id": 1432,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1408,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:9"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "../IERC20.sol",
                            "id": 1409,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 1432,
                            "sourceUnit": 1407,
                            "src": "58:23:9",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 1411,
                                        "name": "IERC20",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1406,
                                        "src": "228:6:9"
                                    },
                                    "id": 1412,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "228:6:9"
                                }
                            ],
                            "canonicalName": "IERC20Metadata",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 1410,
                                "nodeType": "StructuredDocumentation",
                                "src": "83:116:9",
                                "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"
                            },
                            "fullyImplemented": false,
                            "id": 1431,
                            "linearizedBaseContracts": [
                                1431,
                                1406
                            ],
                            "name": "IERC20Metadata",
                            "nameLocation": "210:14:9",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 1413,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "241:54:9",
                                        "text": " @dev Returns the name of the token."
                                    },
                                    "functionSelector": "06fdde03",
                                    "id": 1418,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "name",
                                    "nameLocation": "309:4:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1414,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "313:2:9"
                                    },
                                    "returnParameters": {
                                        "id": 1417,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1416,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1418,
                                                "src": "339:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1415,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "339:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "338:15:9"
                                    },
                                    "scope": 1431,
                                    "src": "300:54:9",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 1419,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "360:56:9",
                                        "text": " @dev Returns the symbol of the token."
                                    },
                                    "functionSelector": "95d89b41",
                                    "id": 1424,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "symbol",
                                    "nameLocation": "430:6:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1420,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "436:2:9"
                                    },
                                    "returnParameters": {
                                        "id": 1423,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1422,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1424,
                                                "src": "462:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1421,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "462:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "461:15:9"
                                    },
                                    "scope": 1431,
                                    "src": "421:56:9",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 1425,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "483:65:9",
                                        "text": " @dev Returns the decimals places of the token."
                                    },
                                    "functionSelector": "313ce567",
                                    "id": 1430,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "decimals",
                                    "nameLocation": "562:8:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1426,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "570:2:9"
                                    },
                                    "returnParameters": {
                                        "id": 1429,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1428,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1430,
                                                "src": "596:5:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 1427,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "596:5:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "595:7:9"
                                    },
                                    "scope": 1431,
                                    "src": "553:50:9",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 1432,
                            "src": "200:405:9",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:573:9"
                },
                "id": 9
            },
            "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                    "exportedSymbols": {
                        "Address": [
                            1951
                        ],
                        "IERC20": [
                            1406
                        ],
                        "SafeERC20": [
                            1655
                        ]
                    },
                    "id": 1656,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1433,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:10"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "../IERC20.sol",
                            "id": 1434,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 1656,
                            "sourceUnit": 1407,
                            "src": "58:23:10",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
                            "file": "../../../utils/Address.sol",
                            "id": 1435,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 1656,
                            "sourceUnit": 1952,
                            "src": "82:36:10",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "SafeERC20",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 1436,
                                "nodeType": "StructuredDocumentation",
                                "src": "120:457:10",
                                "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."
                            },
                            "fullyImplemented": true,
                            "id": 1655,
                            "linearizedBaseContracts": [
                                1655
                            ],
                            "name": "SafeERC20",
                            "nameLocation": "586:9:10",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "id": 1439,
                                    "libraryName": {
                                        "id": 1437,
                                        "name": "Address",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1951,
                                        "src": "608:7:10"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "602:26:10",
                                    "typeName": {
                                        "id": 1438,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "620:7:10",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                },
                                {
                                    "body": {
                                        "id": 1461,
                                        "nodeType": "Block",
                                        "src": "706:103:10",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1450,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1442,
                                                            "src": "736:5:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 1453,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1442,
                                                                            "src": "766:5:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1454,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "transfer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1355,
                                                                        "src": "766:14:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 1455,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "766:23:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1456,
                                                                    "name": "to",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1444,
                                                                    "src": "791:2:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1457,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1446,
                                                                    "src": "795:5:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 1451,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "743:3:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 1452,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSelector",
                                                                "nodeType": "MemberAccess",
                                                                "src": "743:22:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 1458,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "743:58:10",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1449,
                                                        "name": "_callOptionalReturn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1654,
                                                        "src": "716:19:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1406_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (contract IERC20,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1459,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "716:86:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1460,
                                                "nodeType": "ExpressionStatement",
                                                "src": "716:86:10"
                                            }
                                        ]
                                    },
                                    "id": 1462,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeTransfer",
                                    "nameLocation": "643:12:10",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1447,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1442,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "663:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1462,
                                                "src": "656:12:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 1441,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1440,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "656:6:10"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "656:6:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1444,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "678:2:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1462,
                                                "src": "670:10:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1443,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "670:7:10",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1446,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "690:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1462,
                                                "src": "682:13:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1445,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "682:7:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "655:41:10"
                                    },
                                    "returnParameters": {
                                        "id": 1448,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "706:0:10"
                                    },
                                    "scope": 1655,
                                    "src": "634:175:10",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1487,
                                        "nodeType": "Block",
                                        "src": "905:113:10",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1475,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1465,
                                                            "src": "935:5:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 1478,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1465,
                                                                            "src": "965:5:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1479,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "transferFrom",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1387,
                                                                        "src": "965:18:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 1480,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "965:27:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1481,
                                                                    "name": "from",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1467,
                                                                    "src": "994:4:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1482,
                                                                    "name": "to",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1469,
                                                                    "src": "1000:2:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1483,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1471,
                                                                    "src": "1004:5:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 1476,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "942:3:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 1477,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSelector",
                                                                "nodeType": "MemberAccess",
                                                                "src": "942:22:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 1484,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "942:68:10",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1474,
                                                        "name": "_callOptionalReturn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1654,
                                                        "src": "915:19:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1406_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (contract IERC20,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1485,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "915:96:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1486,
                                                "nodeType": "ExpressionStatement",
                                                "src": "915:96:10"
                                            }
                                        ]
                                    },
                                    "id": 1488,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeTransferFrom",
                                    "nameLocation": "824:16:10",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1472,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1465,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "848:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1488,
                                                "src": "841:12:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 1464,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1463,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "841:6:10"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "841:6:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1467,
                                                "mutability": "mutable",
                                                "name": "from",
                                                "nameLocation": "863:4:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1488,
                                                "src": "855:12:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1466,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "855:7:10",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1469,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "877:2:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1488,
                                                "src": "869:10:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1468,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "869:7:10",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1471,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "889:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1488,
                                                "src": "881:13:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1470,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "881:7:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "840:55:10"
                                    },
                                    "returnParameters": {
                                        "id": 1473,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "905:0:10"
                                    },
                                    "scope": 1655,
                                    "src": "815:203:10",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1531,
                                        "nodeType": "Block",
                                        "src": "1354:537:10",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 1515,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 1502,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 1500,
                                                                            "name": "value",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1496,
                                                                            "src": "1643:5:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "==",
                                                                        "rightExpression": {
                                                                            "hexValue": "30",
                                                                            "id": 1501,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1652:1:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        },
                                                                        "src": "1643:10:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 1503,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1642:12:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "||",
                                                            "rightExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 1513,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 1508,
                                                                                            "name": "this",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": -28,
                                                                                            "src": "1683:4:10",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_contract$_SafeERC20_$1655",
                                                                                                "typeString": "library SafeERC20"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_contract$_SafeERC20_$1655",
                                                                                                "typeString": "library SafeERC20"
                                                                                            }
                                                                                        ],
                                                                                        "id": 1507,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                                        "src": "1675:7:10",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                                            "typeString": "type(address)"
                                                                                        },
                                                                                        "typeName": {
                                                                                            "id": 1506,
                                                                                            "name": "address",
                                                                                            "nodeType": "ElementaryTypeName",
                                                                                            "src": "1675:7:10",
                                                                                            "typeDescriptions": {}
                                                                                        }
                                                                                    },
                                                                                    "id": 1509,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "1675:13:10",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 1510,
                                                                                    "name": "spender",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1494,
                                                                                    "src": "1690:7:10",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "id": 1504,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1492,
                                                                                    "src": "1659:5:10",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                },
                                                                                "id": 1505,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "allowance",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 1365,
                                                                                "src": "1659:15:10",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                                                    "typeString": "function (address,address) view external returns (uint256)"
                                                                                }
                                                                            },
                                                                            "id": 1511,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "1659:39:10",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "==",
                                                                        "rightExpression": {
                                                                            "hexValue": "30",
                                                                            "id": 1512,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1702:1:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        },
                                                                        "src": "1659:44:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 1514,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1658:46:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "1642:62:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                                                            "id": 1516,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1718:56:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                                                            },
                                                            "value": "SafeERC20: approve from non-zero to non-zero allowance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                                                            }
                                                        ],
                                                        "id": 1499,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1634:7:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1517,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1634:150:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1518,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1634:150:10"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1520,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1492,
                                                            "src": "1814:5:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 1523,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1492,
                                                                            "src": "1844:5:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1524,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "approve",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1375,
                                                                        "src": "1844:13:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 1525,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "1844:22:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1526,
                                                                    "name": "spender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1494,
                                                                    "src": "1868:7:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1527,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1496,
                                                                    "src": "1877:5:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 1521,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "1821:3:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 1522,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSelector",
                                                                "nodeType": "MemberAccess",
                                                                "src": "1821:22:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 1528,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1821:62:10",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1519,
                                                        "name": "_callOptionalReturn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1654,
                                                        "src": "1794:19:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1406_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (contract IERC20,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1529,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1794:90:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1530,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1794:90:10"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1489,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1024:249:10",
                                        "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."
                                    },
                                    "id": 1532,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeApprove",
                                    "nameLocation": "1287:11:10",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1497,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1492,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "1306:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1532,
                                                "src": "1299:12:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 1491,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1490,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "1299:6:10"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "1299:6:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1494,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "1321:7:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1532,
                                                "src": "1313:15:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1493,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1313:7:10",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1496,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "1338:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1532,
                                                "src": "1330:13:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1495,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1330:7:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1298:46:10"
                                    },
                                    "returnParameters": {
                                        "id": 1498,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1354:0:10"
                                    },
                                    "scope": 1655,
                                    "src": "1278:613:10",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1567,
                                        "nodeType": "Block",
                                        "src": "1983:194:10",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1543
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1543,
                                                        "mutability": "mutable",
                                                        "name": "newAllowance",
                                                        "nameLocation": "2001:12:10",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1567,
                                                        "src": "1993:20:10",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1542,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1993:7:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1554,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1553,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1548,
                                                                        "name": "this",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -28,
                                                                        "src": "2040:4:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_SafeERC20_$1655",
                                                                            "typeString": "library SafeERC20"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_SafeERC20_$1655",
                                                                            "typeString": "library SafeERC20"
                                                                        }
                                                                    ],
                                                                    "id": 1547,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "2032:7:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1546,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "2032:7:10",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1549,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "2032:13:10",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "id": 1550,
                                                                "name": "spender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1537,
                                                                "src": "2047:7:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 1544,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1535,
                                                                "src": "2016:5:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 1545,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "allowance",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1365,
                                                            "src": "2016:15:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                                "typeString": "function (address,address) view external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 1551,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2016:39:10",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 1552,
                                                        "name": "value",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1539,
                                                        "src": "2058:5:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2016:47:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1993:70:10"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1556,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1535,
                                                            "src": "2093:5:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 1559,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1535,
                                                                            "src": "2123:5:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 1560,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "approve",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1375,
                                                                        "src": "2123:13:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 1561,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "2123:22:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1562,
                                                                    "name": "spender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1537,
                                                                    "src": "2147:7:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1563,
                                                                    "name": "newAllowance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1543,
                                                                    "src": "2156:12:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 1557,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "2100:3:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 1558,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSelector",
                                                                "nodeType": "MemberAccess",
                                                                "src": "2100:22:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 1564,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2100:69:10",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1555,
                                                        "name": "_callOptionalReturn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1654,
                                                        "src": "2073:19:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1406_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (contract IERC20,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1565,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2073:97:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1566,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2073:97:10"
                                            }
                                        ]
                                    },
                                    "id": 1568,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeIncreaseAllowance",
                                    "nameLocation": "1906:21:10",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1540,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1535,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "1935:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1568,
                                                "src": "1928:12:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 1534,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1533,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "1928:6:10"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "1928:6:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1537,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "1950:7:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1568,
                                                "src": "1942:15:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1536,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1942:7:10",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1539,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "1967:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1568,
                                                "src": "1959:13:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1538,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1959:7:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1927:46:10"
                                    },
                                    "returnParameters": {
                                        "id": 1541,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1983:0:10"
                                    },
                                    "scope": 1655,
                                    "src": "1897:280:10",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1615,
                                        "nodeType": "Block",
                                        "src": "2269:370:10",
                                        "statements": [
                                            {
                                                "id": 1614,
                                                "nodeType": "UncheckedBlock",
                                                "src": "2279:354:10",
                                                "statements": [
                                                    {
                                                        "assignments": [
                                                            1579
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 1579,
                                                                "mutability": "mutable",
                                                                "name": "oldAllowance",
                                                                "nameLocation": "2311:12:10",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 1614,
                                                                "src": "2303:20:10",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 1578,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "2303:7:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 1588,
                                                        "initialValue": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1584,
                                                                            "name": "this",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -28,
                                                                            "src": "2350:4:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_SafeERC20_$1655",
                                                                                "typeString": "library SafeERC20"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_SafeERC20_$1655",
                                                                                "typeString": "library SafeERC20"
                                                                            }
                                                                        ],
                                                                        "id": 1583,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "2342:7:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 1582,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "2342:7:10",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 1585,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2342:13:10",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1586,
                                                                    "name": "spender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1573,
                                                                    "src": "2357:7:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 1580,
                                                                    "name": "token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1571,
                                                                    "src": "2326:5:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                },
                                                                "id": 1581,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "allowance",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1365,
                                                                "src": "2326:15:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                                    "typeString": "function (address,address) view external returns (uint256)"
                                                                }
                                                            },
                                                            "id": 1587,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2326:39:10",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "2303:62:10"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1592,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1590,
                                                                        "name": "oldAllowance",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1579,
                                                                        "src": "2387:12:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">=",
                                                                    "rightExpression": {
                                                                        "id": 1591,
                                                                        "name": "value",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1575,
                                                                        "src": "2403:5:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2387:21:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                                                    "id": 1593,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "string",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "2410:43:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                                                                        "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                                                                    },
                                                                    "value": "SafeERC20: decreased allowance below zero"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                                                                        "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                                                                    }
                                                                ],
                                                                "id": 1589,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [
                                                                    -18,
                                                                    -18
                                                                ],
                                                                "referencedDeclaration": -18,
                                                                "src": "2379:7:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                    "typeString": "function (bool,string memory) pure"
                                                                }
                                                            },
                                                            "id": 1594,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2379:75:10",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 1595,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "2379:75:10"
                                                    },
                                                    {
                                                        "assignments": [
                                                            1597
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 1597,
                                                                "mutability": "mutable",
                                                                "name": "newAllowance",
                                                                "nameLocation": "2476:12:10",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 1614,
                                                                "src": "2468:20:10",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 1596,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "2468:7:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 1601,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1600,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1598,
                                                                "name": "oldAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1579,
                                                                "src": "2491:12:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "id": 1599,
                                                                "name": "value",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1575,
                                                                "src": "2506:5:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "2491:20:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "2468:43:10"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 1603,
                                                                    "name": "token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1571,
                                                                    "src": "2545:5:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "expression": {
                                                                                "expression": {
                                                                                    "id": 1606,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1571,
                                                                                    "src": "2575:5:10",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                },
                                                                                "id": 1607,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "approve",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 1375,
                                                                                "src": "2575:13:10",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                    "typeString": "function (address,uint256) external returns (bool)"
                                                                                }
                                                                            },
                                                                            "id": 1608,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "selector",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "2575:22:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes4",
                                                                                "typeString": "bytes4"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1609,
                                                                            "name": "spender",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1573,
                                                                            "src": "2599:7:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 1610,
                                                                            "name": "newAllowance",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1597,
                                                                            "src": "2608:12:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_bytes4",
                                                                                "typeString": "bytes4"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 1604,
                                                                            "name": "abi",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -1,
                                                                            "src": "2552:3:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_abi",
                                                                                "typeString": "abi"
                                                                            }
                                                                        },
                                                                        "id": 1605,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "memberName": "encodeWithSelector",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "2552:22:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                            "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 1611,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2552:69:10",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                        "typeString": "contract IERC20"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                ],
                                                                "id": 1602,
                                                                "name": "_callOptionalReturn",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1654,
                                                                "src": "2525:19:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1406_$_t_bytes_memory_ptr_$returns$__$",
                                                                    "typeString": "function (contract IERC20,bytes memory)"
                                                                }
                                                            },
                                                            "id": 1612,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2525:97:10",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 1613,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "2525:97:10"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "id": 1616,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeDecreaseAllowance",
                                    "nameLocation": "2192:21:10",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1576,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1571,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "2221:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1616,
                                                "src": "2214:12:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 1570,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1569,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "2214:6:10"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "2214:6:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1573,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "2236:7:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1616,
                                                "src": "2228:15:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1572,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2228:7:10",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1575,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "2253:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1616,
                                                "src": "2245:13:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1574,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2245:7:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2213:46:10"
                                    },
                                    "returnParameters": {
                                        "id": 1577,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2269:0:10"
                                    },
                                    "scope": 1655,
                                    "src": "2183:456:10",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1653,
                                        "nodeType": "Block",
                                        "src": "3092:681:10",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1626
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1626,
                                                        "mutability": "mutable",
                                                        "name": "returndata",
                                                        "nameLocation": "3454:10:10",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1653,
                                                        "src": "3441:23:10",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1625,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3441:5:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1635,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1632,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1622,
                                                            "src": "3495:4:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564",
                                                            "id": 1633,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3501:34:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                                                            },
                                                            "value": "SafeERC20: low-level call failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 1629,
                                                                    "name": "token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1620,
                                                                    "src": "3475:5:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                ],
                                                                "id": 1628,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3467:7:10",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1627,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3467:7:10",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1630,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3467:14:10",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 1631,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "functionCall",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1746,
                                                        "src": "3467:27:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$",
                                                            "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1634,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3467:69:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3441:95:10"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1639,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 1636,
                                                            "name": "returndata",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1626,
                                                            "src": "3550:10:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 1637,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "3550:17:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1638,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3570:1:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "3550:21:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1652,
                                                "nodeType": "IfStatement",
                                                "src": "3546:221:10",
                                                "trueBody": {
                                                    "id": 1651,
                                                    "nodeType": "Block",
                                                    "src": "3573:194:10",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 1643,
                                                                                "name": "returndata",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1626,
                                                                                "src": "3690:10:10",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            },
                                                                            {
                                                                                "components": [
                                                                                    {
                                                                                        "id": 1645,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                                        "src": "3703:4:10",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_bool_$",
                                                                                            "typeString": "type(bool)"
                                                                                        },
                                                                                        "typeName": {
                                                                                            "id": 1644,
                                                                                            "name": "bool",
                                                                                            "nodeType": "ElementaryTypeName",
                                                                                            "src": "3703:4:10",
                                                                                            "typeDescriptions": {}
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 1646,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "3702:6:10",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_bool_$",
                                                                                    "typeString": "type(bool)"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_type$_t_bool_$",
                                                                                    "typeString": "type(bool)"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 1641,
                                                                                "name": "abi",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -1,
                                                                                "src": "3679:3:10",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_abi",
                                                                                    "typeString": "abi"
                                                                                }
                                                                            },
                                                                            "id": 1642,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "memberName": "decode",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "3679:10:10",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                                                                "typeString": "function () pure"
                                                                            }
                                                                        },
                                                                        "id": 1647,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "3679:30:10",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564",
                                                                        "id": 1648,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "3711:44:10",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                                                            "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                                                        },
                                                                        "value": "SafeERC20: ERC20 operation did not succeed"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                                                            "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                                                        }
                                                                    ],
                                                                    "id": 1640,
                                                                    "name": "require",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [
                                                                        -18,
                                                                        -18
                                                                    ],
                                                                    "referencedDeclaration": -18,
                                                                    "src": "3671:7:10",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                        "typeString": "function (bool,string memory) pure"
                                                                    }
                                                                },
                                                                "id": 1649,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3671:85:10",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 1650,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3671:85:10"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1617,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2645:372:10",
                                        "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."
                                    },
                                    "id": 1654,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_callOptionalReturn",
                                    "nameLocation": "3031:19:10",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1623,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1620,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "3058:5:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1654,
                                                "src": "3051:12:10",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 1619,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1618,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "3051:6:10"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "3051:6:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1622,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "3078:4:10",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1654,
                                                "src": "3065:17:10",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1621,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3065:5:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3050:33:10"
                                    },
                                    "returnParameters": {
                                        "id": 1624,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3092:0:10"
                                    },
                                    "scope": 1655,
                                    "src": "3022:751:10",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "private"
                                }
                            ],
                            "scope": 1656,
                            "src": "578:3197:10",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:3743:10"
                },
                "id": 10
            },
            "@openzeppelin/contracts/utils/Address.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
                    "exportedSymbols": {
                        "Address": [
                            1951
                        ]
                    },
                    "id": 1952,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1657,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:11"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Address",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 1658,
                                "nodeType": "StructuredDocumentation",
                                "src": "58:67:11",
                                "text": " @dev Collection of functions related to the address type"
                            },
                            "fullyImplemented": true,
                            "id": 1951,
                            "linearizedBaseContracts": [
                                1951
                            ],
                            "name": "Address",
                            "nameLocation": "134:7:11",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 1674,
                                        "nodeType": "Block",
                                        "src": "784:347:11",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1667
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1667,
                                                        "mutability": "mutable",
                                                        "name": "size",
                                                        "nameLocation": "989:4:11",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1674,
                                                        "src": "981:12:11",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1666,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "981:7:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1668,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "981:12:11"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1068:32:11",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1070:28:11",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "account",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1090:7:11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "extcodesize",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1078:11:11"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1078:20:11"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "size",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1070:4:11"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 1661,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "1090:7:11",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 1667,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "1070:4:11",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 1669,
                                                "nodeType": "InlineAssembly",
                                                "src": "1059:41:11"
                                            },
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1672,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1670,
                                                        "name": "size",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1667,
                                                        "src": "1116:4:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1671,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1123:1:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "1116:8:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 1665,
                                                "id": 1673,
                                                "nodeType": "Return",
                                                "src": "1109:15:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1659,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "148:565:11",
                                        "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ===="
                                    },
                                    "id": 1675,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isContract",
                                    "nameLocation": "727:10:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1662,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1661,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "746:7:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1675,
                                                "src": "738:15:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1660,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "738:7:11",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "737:17:11"
                                    },
                                    "returnParameters": {
                                        "id": 1665,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1664,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1675,
                                                "src": "778:4:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1663,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "778:4:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "777:6:11"
                                    },
                                    "scope": 1951,
                                    "src": "718:413:11",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1708,
                                        "nodeType": "Block",
                                        "src": "2119:320:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1690,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1686,
                                                                            "name": "this",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -28,
                                                                            "src": "2145:4:11",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_Address_$1951",
                                                                                "typeString": "library Address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_Address_$1951",
                                                                                "typeString": "library Address"
                                                                            }
                                                                        ],
                                                                        "id": 1685,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "2137:7:11",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 1684,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "2137:7:11",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 1687,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2137:13:11",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "id": 1688,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "balance",
                                                                "nodeType": "MemberAccess",
                                                                "src": "2137:21:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 1689,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1680,
                                                                "src": "2162:6:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "2137:31:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                                                            "id": 1691,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2170:31:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                                                "typeString": "literal_string \"Address: insufficient balance\""
                                                            },
                                                            "value": "Address: insufficient balance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                                                "typeString": "literal_string \"Address: insufficient balance\""
                                                            }
                                                        ],
                                                        "id": 1683,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2129:7:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1692,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2129:73:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1693,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2129:73:11"
                                            },
                                            {
                                                "assignments": [
                                                    1695,
                                                    null
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1695,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "2296:7:11",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1708,
                                                        "src": "2291:12:11",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 1694,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2291:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    null
                                                ],
                                                "id": 1702,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "",
                                                            "id": 1700,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2341:2:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            },
                                                            "value": ""
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                    "typeString": "literal_string \"\""
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 1696,
                                                                "name": "recipient",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1678,
                                                                "src": "2309:9:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            },
                                                            "id": 1697,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "call",
                                                            "nodeType": "MemberAccess",
                                                            "src": "2309:14:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                                            }
                                                        },
                                                        "id": 1699,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "names": [
                                                            "value"
                                                        ],
                                                        "nodeType": "FunctionCallOptions",
                                                        "options": [
                                                            {
                                                                "id": 1698,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1680,
                                                                "src": "2332:6:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "src": "2309:31:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                                                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1701,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2309:35:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2290:54:11"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1704,
                                                            "name": "success",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1695,
                                                            "src": "2362:7:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                                                            "id": 1705,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2371:60:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                                                            },
                                                            "value": "Address: unable to send value, recipient may have reverted"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                                                            }
                                                        ],
                                                        "id": 1703,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2354:7:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1706,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2354:78:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1707,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2354:78:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1676,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1137:906:11",
                                        "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                                    },
                                    "id": 1709,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendValue",
                                    "nameLocation": "2057:9:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1681,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1678,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "2083:9:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1709,
                                                "src": "2067:25:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                "typeName": {
                                                    "id": 1677,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2067:15:11",
                                                    "stateMutability": "payable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1680,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "2102:6:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1709,
                                                "src": "2094:14:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1679,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2094:7:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2066:43:11"
                                    },
                                    "returnParameters": {
                                        "id": 1682,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2119:0:11"
                                    },
                                    "scope": 1951,
                                    "src": "2048:391:11",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1725,
                                        "nodeType": "Block",
                                        "src": "3269:82:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1720,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1712,
                                                            "src": "3297:6:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1721,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1714,
                                                            "src": "3305:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
                                                            "id": 1722,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3311:32:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                                                "typeString": "literal_string \"Address: low-level call failed\""
                                                            },
                                                            "value": "Address: low-level call failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                                                "typeString": "literal_string \"Address: low-level call failed\""
                                                            }
                                                        ],
                                                        "id": 1719,
                                                        "name": "functionCall",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            1726,
                                                            1746
                                                        ],
                                                        "referencedDeclaration": 1746,
                                                        "src": "3284:12:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1723,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3284:60:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1718,
                                                "id": 1724,
                                                "nodeType": "Return",
                                                "src": "3277:67:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1710,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2445:730:11",
                                        "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"
                                    },
                                    "id": 1726,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionCall",
                                    "nameLocation": "3189:12:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1715,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1712,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "3210:6:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1726,
                                                "src": "3202:14:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1711,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3202:7:11",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1714,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "3231:4:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1726,
                                                "src": "3218:17:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1713,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3218:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3201:35:11"
                                    },
                                    "returnParameters": {
                                        "id": 1718,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1717,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1726,
                                                "src": "3255:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1716,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3255:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3254:14:11"
                                    },
                                    "scope": 1951,
                                    "src": "3180:171:11",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1745,
                                        "nodeType": "Block",
                                        "src": "3690:76:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1739,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1729,
                                                            "src": "3729:6:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1740,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1731,
                                                            "src": "3737:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "30",
                                                            "id": 1741,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3743:1:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        {
                                                            "id": 1742,
                                                            "name": "errorMessage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1733,
                                                            "src": "3746:12:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        ],
                                                        "id": 1738,
                                                        "name": "functionCallWithValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            1766,
                                                            1816
                                                        ],
                                                        "referencedDeclaration": 1816,
                                                        "src": "3707:21:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1743,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3707:52:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1737,
                                                "id": 1744,
                                                "nodeType": "Return",
                                                "src": "3700:59:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1727,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3357:211:11",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                                    },
                                    "id": 1746,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionCall",
                                    "nameLocation": "3582:12:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1734,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1729,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "3603:6:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1746,
                                                "src": "3595:14:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1728,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3595:7:11",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1731,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "3624:4:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1746,
                                                "src": "3611:17:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1730,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3611:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1733,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "3644:12:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1746,
                                                "src": "3630:26:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1732,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3630:6:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3594:63:11"
                                    },
                                    "returnParameters": {
                                        "id": 1737,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1736,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1746,
                                                "src": "3676:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1735,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3676:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3675:14:11"
                                    },
                                    "scope": 1951,
                                    "src": "3573:193:11",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1765,
                                        "nodeType": "Block",
                                        "src": "4241:111:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1759,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1749,
                                                            "src": "4280:6:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1760,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1751,
                                                            "src": "4288:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1761,
                                                            "name": "value",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1753,
                                                            "src": "4294:5:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
                                                            "id": 1762,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4301:43:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                                                "typeString": "literal_string \"Address: low-level call with value failed\""
                                                            },
                                                            "value": "Address: low-level call with value failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                                                "typeString": "literal_string \"Address: low-level call with value failed\""
                                                            }
                                                        ],
                                                        "id": 1758,
                                                        "name": "functionCallWithValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            1766,
                                                            1816
                                                        ],
                                                        "referencedDeclaration": 1816,
                                                        "src": "4258:21:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1763,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4258:87:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1757,
                                                "id": 1764,
                                                "nodeType": "Return",
                                                "src": "4251:94:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1747,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3772:351:11",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"
                                    },
                                    "id": 1766,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionCallWithValue",
                                    "nameLocation": "4137:21:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1754,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1749,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "4167:6:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1766,
                                                "src": "4159:14:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1748,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4159:7:11",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1751,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "4188:4:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1766,
                                                "src": "4175:17:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1750,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4175:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1753,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "4202:5:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1766,
                                                "src": "4194:13:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1752,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4194:7:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4158:50:11"
                                    },
                                    "returnParameters": {
                                        "id": 1757,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1756,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1766,
                                                "src": "4227:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1755,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4227:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4226:14:11"
                                    },
                                    "scope": 1951,
                                    "src": "4128:224:11",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1815,
                                        "nodeType": "Block",
                                        "src": "4741:382:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1787,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 1783,
                                                                            "name": "this",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -28,
                                                                            "src": "4767:4:11",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_Address_$1951",
                                                                                "typeString": "library Address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_Address_$1951",
                                                                                "typeString": "library Address"
                                                                            }
                                                                        ],
                                                                        "id": 1782,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "4759:7:11",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 1781,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "4759:7:11",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 1784,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4759:13:11",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "id": 1785,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "balance",
                                                                "nodeType": "MemberAccess",
                                                                "src": "4759:21:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 1786,
                                                                "name": "value",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1773,
                                                                "src": "4784:5:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4759:30:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
                                                            "id": 1788,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4791:40:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                                                "typeString": "literal_string \"Address: insufficient balance for call\""
                                                            },
                                                            "value": "Address: insufficient balance for call"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                                                "typeString": "literal_string \"Address: insufficient balance for call\""
                                                            }
                                                        ],
                                                        "id": 1780,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4751:7:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1789,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4751:81:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1790,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4751:81:11"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1793,
                                                                    "name": "target",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1769,
                                                                    "src": "4861:6:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1792,
                                                                "name": "isContract",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1675,
                                                                "src": "4850:10:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 1794,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4850:18:11",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                                            "id": 1795,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4870:31:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                                                "typeString": "literal_string \"Address: call to non-contract\""
                                                            },
                                                            "value": "Address: call to non-contract"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                                                "typeString": "literal_string \"Address: call to non-contract\""
                                                            }
                                                        ],
                                                        "id": 1791,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4842:7:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1796,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4842:60:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1797,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4842:60:11"
                                            },
                                            {
                                                "assignments": [
                                                    1799,
                                                    1801
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1799,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "4978:7:11",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1815,
                                                        "src": "4973:12:11",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 1798,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4973:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    {
                                                        "constant": false,
                                                        "id": 1801,
                                                        "mutability": "mutable",
                                                        "name": "returndata",
                                                        "nameLocation": "5000:10:11",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1815,
                                                        "src": "4987:23:11",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1800,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4987:5:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1808,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1806,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1771,
                                                            "src": "5042:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 1802,
                                                                "name": "target",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1769,
                                                                "src": "5014:6:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "id": 1803,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "call",
                                                            "nodeType": "MemberAccess",
                                                            "src": "5014:11:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                                            }
                                                        },
                                                        "id": 1805,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "names": [
                                                            "value"
                                                        ],
                                                        "nodeType": "FunctionCallOptions",
                                                        "options": [
                                                            {
                                                                "id": 1804,
                                                                "name": "value",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1773,
                                                                "src": "5034:5:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "src": "5014:27:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                                                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1807,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5014:33:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4972:75:11"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1810,
                                                            "name": "success",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1799,
                                                            "src": "5082:7:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "id": 1811,
                                                            "name": "returndata",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1801,
                                                            "src": "5091:10:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1812,
                                                            "name": "errorMessage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1775,
                                                            "src": "5103:12:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        ],
                                                        "id": 1809,
                                                        "name": "_verifyCallResult",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1950,
                                                        "src": "5064:17:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1813,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5064:52:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1779,
                                                "id": 1814,
                                                "nodeType": "Return",
                                                "src": "5057:59:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1767,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4358:237:11",
                                        "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                                    },
                                    "id": 1816,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionCallWithValue",
                                    "nameLocation": "4609:21:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1776,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1769,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "4639:6:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1816,
                                                "src": "4631:14:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1768,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4631:7:11",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1771,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "4660:4:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1816,
                                                "src": "4647:17:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1770,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4647:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1773,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "4674:5:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1816,
                                                "src": "4666:13:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1772,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4666:7:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1775,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "4695:12:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1816,
                                                "src": "4681:26:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1774,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4681:6:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4630:78:11"
                                    },
                                    "returnParameters": {
                                        "id": 1779,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1778,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1816,
                                                "src": "4727:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1777,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4727:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4726:14:11"
                                    },
                                    "scope": 1951,
                                    "src": "4600:523:11",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1832,
                                        "nodeType": "Block",
                                        "src": "5400:97:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1827,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1819,
                                                            "src": "5436:6:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1828,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1821,
                                                            "src": "5444:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
                                                            "id": 1829,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5450:39:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                                                "typeString": "literal_string \"Address: low-level static call failed\""
                                                            },
                                                            "value": "Address: low-level static call failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                                                "typeString": "literal_string \"Address: low-level static call failed\""
                                                            }
                                                        ],
                                                        "id": 1826,
                                                        "name": "functionStaticCall",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            1833,
                                                            1868
                                                        ],
                                                        "referencedDeclaration": 1868,
                                                        "src": "5417:18:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1830,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5417:73:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1825,
                                                "id": 1831,
                                                "nodeType": "Return",
                                                "src": "5410:80:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1817,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5129:166:11",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                                    },
                                    "id": 1833,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionStaticCall",
                                    "nameLocation": "5309:18:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1822,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1819,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "5336:6:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1833,
                                                "src": "5328:14:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1818,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5328:7:11",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1821,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "5357:4:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1833,
                                                "src": "5344:17:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1820,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5344:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5327:35:11"
                                    },
                                    "returnParameters": {
                                        "id": 1825,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1824,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1833,
                                                "src": "5386:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1823,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5386:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5385:14:11"
                                    },
                                    "scope": 1951,
                                    "src": "5300:197:11",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1867,
                                        "nodeType": "Block",
                                        "src": "5809:288:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1847,
                                                                    "name": "target",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1836,
                                                                    "src": "5838:6:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1846,
                                                                "name": "isContract",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1675,
                                                                "src": "5827:10:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 1848,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5827:18:11",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                                                            "id": 1849,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5847:38:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                                                "typeString": "literal_string \"Address: static call to non-contract\""
                                                            },
                                                            "value": "Address: static call to non-contract"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                                                "typeString": "literal_string \"Address: static call to non-contract\""
                                                            }
                                                        ],
                                                        "id": 1845,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "5819:7:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1850,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5819:67:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1851,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5819:67:11"
                                            },
                                            {
                                                "assignments": [
                                                    1853,
                                                    1855
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1853,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "5962:7:11",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1867,
                                                        "src": "5957:12:11",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 1852,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5957:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    {
                                                        "constant": false,
                                                        "id": 1855,
                                                        "mutability": "mutable",
                                                        "name": "returndata",
                                                        "nameLocation": "5984:10:11",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1867,
                                                        "src": "5971:23:11",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1854,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5971:5:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1860,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1858,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1838,
                                                            "src": "6016:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1856,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1836,
                                                            "src": "5998:6:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 1857,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "staticcall",
                                                        "nodeType": "MemberAccess",
                                                        "src": "5998:17:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1859,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5998:23:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5956:65:11"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1862,
                                                            "name": "success",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1853,
                                                            "src": "6056:7:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "id": 1863,
                                                            "name": "returndata",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1855,
                                                            "src": "6065:10:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1864,
                                                            "name": "errorMessage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1840,
                                                            "src": "6077:12:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        ],
                                                        "id": 1861,
                                                        "name": "_verifyCallResult",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1950,
                                                        "src": "6038:17:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1865,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6038:52:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1844,
                                                "id": 1866,
                                                "nodeType": "Return",
                                                "src": "6031:59:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1834,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5503:173:11",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                                    },
                                    "id": 1868,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionStaticCall",
                                    "nameLocation": "5690:18:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1841,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1836,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "5717:6:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1868,
                                                "src": "5709:14:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1835,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5709:7:11",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1838,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "5738:4:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1868,
                                                "src": "5725:17:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1837,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5725:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1840,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "5758:12:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1868,
                                                "src": "5744:26:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1839,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5744:6:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5708:63:11"
                                    },
                                    "returnParameters": {
                                        "id": 1844,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1843,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1868,
                                                "src": "5795:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1842,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5795:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5794:14:11"
                                    },
                                    "scope": 1951,
                                    "src": "5681:416:11",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1884,
                                        "nodeType": "Block",
                                        "src": "6373:101:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1879,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1871,
                                                            "src": "6411:6:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1880,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1873,
                                                            "src": "6419:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
                                                            "id": 1881,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6425:41:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                                                            },
                                                            "value": "Address: low-level delegate call failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                                                            }
                                                        ],
                                                        "id": 1878,
                                                        "name": "functionDelegateCall",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            1885,
                                                            1920
                                                        ],
                                                        "referencedDeclaration": 1920,
                                                        "src": "6390:20:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (address,bytes memory,string memory) returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1882,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6390:77:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1877,
                                                "id": 1883,
                                                "nodeType": "Return",
                                                "src": "6383:84:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1869,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6103:168:11",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                                    },
                                    "id": 1885,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionDelegateCall",
                                    "nameLocation": "6285:20:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1874,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1871,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "6314:6:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1885,
                                                "src": "6306:14:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1870,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6306:7:11",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1873,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "6335:4:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1885,
                                                "src": "6322:17:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1872,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6322:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6305:35:11"
                                    },
                                    "returnParameters": {
                                        "id": 1877,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1876,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1885,
                                                "src": "6359:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1875,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6359:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6358:14:11"
                                    },
                                    "scope": 1951,
                                    "src": "6276:198:11",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1919,
                                        "nodeType": "Block",
                                        "src": "6785:292:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1899,
                                                                    "name": "target",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1888,
                                                                    "src": "6814:6:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1898,
                                                                "name": "isContract",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1675,
                                                                "src": "6803:10:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 1900,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6803:18:11",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374",
                                                            "id": 1901,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6823:40:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                                                            },
                                                            "value": "Address: delegate call to non-contract"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                                                            }
                                                        ],
                                                        "id": 1897,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6795:7:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1902,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6795:69:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1903,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6795:69:11"
                                            },
                                            {
                                                "assignments": [
                                                    1905,
                                                    1907
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1905,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "6940:7:11",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1919,
                                                        "src": "6935:12:11",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 1904,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6935:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    {
                                                        "constant": false,
                                                        "id": 1907,
                                                        "mutability": "mutable",
                                                        "name": "returndata",
                                                        "nameLocation": "6962:10:11",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1919,
                                                        "src": "6949:23:11",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1906,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6949:5:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1912,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1910,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1890,
                                                            "src": "6996:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1908,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1888,
                                                            "src": "6976:6:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 1909,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "delegatecall",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6976:19:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1911,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6976:25:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6934:67:11"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1914,
                                                            "name": "success",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1905,
                                                            "src": "7036:7:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "id": 1915,
                                                            "name": "returndata",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1907,
                                                            "src": "7045:10:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1916,
                                                            "name": "errorMessage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1892,
                                                            "src": "7057:12:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        ],
                                                        "id": 1913,
                                                        "name": "_verifyCallResult",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1950,
                                                        "src": "7018:17:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1917,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7018:52:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1896,
                                                "id": 1918,
                                                "nodeType": "Return",
                                                "src": "7011:59:11"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1886,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6480:175:11",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                                    },
                                    "id": 1920,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionDelegateCall",
                                    "nameLocation": "6669:20:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1893,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1888,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "6698:6:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1920,
                                                "src": "6690:14:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1887,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6690:7:11",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1890,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "6719:4:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1920,
                                                "src": "6706:17:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1889,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6706:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1892,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "6739:12:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1920,
                                                "src": "6725:26:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1891,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6725:6:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6689:63:11"
                                    },
                                    "returnParameters": {
                                        "id": 1896,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1895,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1920,
                                                "src": "6771:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1894,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6771:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6770:14:11"
                                    },
                                    "scope": 1951,
                                    "src": "6660:417:11",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1949,
                                        "nodeType": "Block",
                                        "src": "7212:596:11",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "id": 1931,
                                                    "name": "success",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1922,
                                                    "src": "7226:7:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 1947,
                                                    "nodeType": "Block",
                                                    "src": "7283:519:11",
                                                    "statements": [
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1938,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 1935,
                                                                        "name": "returndata",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1924,
                                                                        "src": "7367:10:11",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 1936,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7367:17:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": ">",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 1937,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "7387:1:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "7367:21:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "falseBody": {
                                                                "id": 1945,
                                                                "nodeType": "Block",
                                                                "src": "7739:53:11",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1942,
                                                                                    "name": "errorMessage",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1926,
                                                                                    "src": "7764:12:11",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                    }
                                                                                ],
                                                                                "id": 1941,
                                                                                "name": "revert",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [
                                                                                    -19,
                                                                                    -19
                                                                                ],
                                                                                "referencedDeclaration": -19,
                                                                                "src": "7757:6:11",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                                                    "typeString": "function (string memory) pure"
                                                                                }
                                                                            },
                                                                            "id": 1943,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "7757:20:11",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 1944,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "7757:20:11"
                                                                    }
                                                                ]
                                                            },
                                                            "id": 1946,
                                                            "nodeType": "IfStatement",
                                                            "src": "7363:429:11",
                                                            "trueBody": {
                                                                "id": 1940,
                                                                "nodeType": "Block",
                                                                "src": "7390:343:11",
                                                                "statements": [
                                                                    {
                                                                        "AST": {
                                                                            "nodeType": "YulBlock",
                                                                            "src": "7574:145:11",
                                                                            "statements": [
                                                                                {
                                                                                    "nodeType": "YulVariableDeclaration",
                                                                                    "src": "7596:40:11",
                                                                                    "value": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "returndata",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "7625:10:11"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "mload",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "7619:5:11"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "7619:17:11"
                                                                                    },
                                                                                    "variables": [
                                                                                        {
                                                                                            "name": "returndata_size",
                                                                                            "nodeType": "YulTypedName",
                                                                                            "src": "7600:15:11",
                                                                                            "type": ""
                                                                                        }
                                                                                    ]
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "7668:2:11",
                                                                                                        "type": "",
                                                                                                        "value": "32"
                                                                                                    },
                                                                                                    {
                                                                                                        "name": "returndata",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "7672:10:11"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "7664:3:11"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "7664:19:11"
                                                                                            },
                                                                                            {
                                                                                                "name": "returndata_size",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "7685:15:11"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "revert",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "7657:6:11"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "7657:44:11"
                                                                                    },
                                                                                    "nodeType": "YulExpressionStatement",
                                                                                    "src": "7657:44:11"
                                                                                }
                                                                            ]
                                                                        },
                                                                        "evmVersion": "london",
                                                                        "externalReferences": [
                                                                            {
                                                                                "declaration": 1924,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "7625:10:11",
                                                                                "valueSize": 1
                                                                            },
                                                                            {
                                                                                "declaration": 1924,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "7672:10:11",
                                                                                "valueSize": 1
                                                                            }
                                                                        ],
                                                                        "id": 1939,
                                                                        "nodeType": "InlineAssembly",
                                                                        "src": "7565:154:11"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                },
                                                "id": 1948,
                                                "nodeType": "IfStatement",
                                                "src": "7222:580:11",
                                                "trueBody": {
                                                    "id": 1934,
                                                    "nodeType": "Block",
                                                    "src": "7235:42:11",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1932,
                                                                "name": "returndata",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1924,
                                                                "src": "7256:10:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1930,
                                                            "id": 1933,
                                                            "nodeType": "Return",
                                                            "src": "7249:17:11"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "id": 1950,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_verifyCallResult",
                                    "nameLocation": "7092:17:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1927,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1922,
                                                "mutability": "mutable",
                                                "name": "success",
                                                "nameLocation": "7115:7:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1950,
                                                "src": "7110:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1921,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7110:4:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1924,
                                                "mutability": "mutable",
                                                "name": "returndata",
                                                "nameLocation": "7137:10:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1950,
                                                "src": "7124:23:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1923,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7124:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1926,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "7163:12:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1950,
                                                "src": "7149:26:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1925,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7149:6:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7109:67:11"
                                    },
                                    "returnParameters": {
                                        "id": 1930,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1929,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1950,
                                                "src": "7198:12:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1928,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7198:5:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7197:14:11"
                                    },
                                    "scope": 1951,
                                    "src": "7083:725:11",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                }
                            ],
                            "scope": 1952,
                            "src": "126:7684:11",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:7778:11"
                },
                "id": 11
            },
            "@openzeppelin/contracts/utils/Context.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
                    "exportedSymbols": {
                        "Context": [
                            1974
                        ]
                    },
                    "id": 1975,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1953,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:12"
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "Context",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 1974,
                            "linearizedBaseContracts": [
                                1974
                            ],
                            "name": "Context",
                            "nameLocation": "572:7:12",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 1961,
                                        "nodeType": "Block",
                                        "src": "648:34:12",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "expression": {
                                                        "id": 1958,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -15,
                                                        "src": "665:3:12",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 1959,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "665:10:12",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "functionReturnParameters": 1957,
                                                "id": 1960,
                                                "nodeType": "Return",
                                                "src": "658:17:12"
                                            }
                                        ]
                                    },
                                    "id": 1962,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_msgSender",
                                    "nameLocation": "595:10:12",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1954,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "605:2:12"
                                    },
                                    "returnParameters": {
                                        "id": 1957,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1956,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1962,
                                                "src": "639:7:12",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1955,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "639:7:12",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "638:9:12"
                                    },
                                    "scope": 1974,
                                    "src": "586:96:12",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1972,
                                        "nodeType": "Block",
                                        "src": "755:165:12",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 1967,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -28,
                                                    "src": "765:4:12",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_Context_$1974",
                                                        "typeString": "contract Context"
                                                    }
                                                },
                                                "id": 1968,
                                                "nodeType": "ExpressionStatement",
                                                "src": "765:4:12"
                                            },
                                            {
                                                "expression": {
                                                    "expression": {
                                                        "id": 1969,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -15,
                                                        "src": "905:3:12",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 1970,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "data",
                                                    "nodeType": "MemberAccess",
                                                    "src": "905:8:12",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                },
                                                "functionReturnParameters": 1966,
                                                "id": 1971,
                                                "nodeType": "Return",
                                                "src": "898:15:12"
                                            }
                                        ]
                                    },
                                    "id": 1973,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_msgData",
                                    "nameLocation": "697:8:12",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1963,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "705:2:12"
                                    },
                                    "returnParameters": {
                                        "id": 1966,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1965,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1973,
                                                "src": "739:14:12",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1964,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "739:5:12",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "738:16:12"
                                    },
                                    "scope": 1974,
                                    "src": "688:232:12",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 1975,
                            "src": "554:368:12",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:890:12"
                },
                "id": 12
            },
            "@openzeppelin/contracts/utils/Strings.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/Strings.sol",
                    "exportedSymbols": {
                        "Strings": [
                            2177
                        ]
                    },
                    "id": 2178,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1976,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:13"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Strings",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 1977,
                                "nodeType": "StructuredDocumentation",
                                "src": "58:34:13",
                                "text": " @dev String operations."
                            },
                            "fullyImplemented": true,
                            "id": 2177,
                            "linearizedBaseContracts": [
                                2177
                            ],
                            "name": "Strings",
                            "nameLocation": "101:7:13",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": true,
                                    "id": 1980,
                                    "mutability": "constant",
                                    "name": "alphabet",
                                    "nameLocation": "140:8:13",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2177,
                                    "src": "115:54:13",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes16",
                                        "typeString": "bytes16"
                                    },
                                    "typeName": {
                                        "id": 1978,
                                        "name": "bytes16",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "115:7:13",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes16",
                                            "typeString": "bytes16"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "30313233343536373839616263646566",
                                        "id": 1979,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "151:18:13",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
                                            "typeString": "literal_string \"0123456789abcdef\""
                                        },
                                        "value": "0123456789abcdef"
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 2058,
                                        "nodeType": "Block",
                                        "src": "342:632:13",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1990,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1988,
                                                        "name": "value",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1983,
                                                        "src": "544:5:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1989,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "553:1:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "544:10:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1994,
                                                "nodeType": "IfStatement",
                                                "src": "540:51:13",
                                                "trueBody": {
                                                    "id": 1993,
                                                    "nodeType": "Block",
                                                    "src": "556:35:13",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "hexValue": "30",
                                                                "id": 1991,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "string",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "577:3:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                                    "typeString": "literal_string \"0\""
                                                                },
                                                                "value": "0"
                                                            },
                                                            "functionReturnParameters": 1987,
                                                            "id": 1992,
                                                            "nodeType": "Return",
                                                            "src": "570:10:13"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "assignments": [
                                                    1996
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1996,
                                                        "mutability": "mutable",
                                                        "name": "temp",
                                                        "nameLocation": "608:4:13",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2058,
                                                        "src": "600:12:13",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1995,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "600:7:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1998,
                                                "initialValue": {
                                                    "id": 1997,
                                                    "name": "value",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1983,
                                                    "src": "615:5:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "600:20:13"
                                            },
                                            {
                                                "assignments": [
                                                    2000
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2000,
                                                        "mutability": "mutable",
                                                        "name": "digits",
                                                        "nameLocation": "638:6:13",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2058,
                                                        "src": "630:14:13",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1999,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "630:7:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2001,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "630:14:13"
                                            },
                                            {
                                                "body": {
                                                    "id": 2012,
                                                    "nodeType": "Block",
                                                    "src": "672:57:13",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 2006,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "++",
                                                                "prefix": false,
                                                                "src": "686:8:13",
                                                                "subExpression": {
                                                                    "id": 2005,
                                                                    "name": "digits",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2000,
                                                                    "src": "686:6:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 2007,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "686:8:13"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 2010,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 2008,
                                                                    "name": "temp",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1996,
                                                                    "src": "708:4:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "/=",
                                                                "rightHandSide": {
                                                                    "hexValue": "3130",
                                                                    "id": 2009,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "716:2:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_10_by_1",
                                                                        "typeString": "int_const 10"
                                                                    },
                                                                    "value": "10"
                                                                },
                                                                "src": "708:10:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 2011,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "708:10:13"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2004,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2002,
                                                        "name": "temp",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1996,
                                                        "src": "661:4:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 2003,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "669:1:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "661:9:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 2013,
                                                "nodeType": "WhileStatement",
                                                "src": "654:75:13"
                                            },
                                            {
                                                "assignments": [
                                                    2015
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2015,
                                                        "mutability": "mutable",
                                                        "name": "buffer",
                                                        "nameLocation": "751:6:13",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2058,
                                                        "src": "738:19:13",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 2014,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "738:5:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2020,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 2018,
                                                            "name": "digits",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2000,
                                                            "src": "770:6:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2017,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "NewExpression",
                                                        "src": "760:9:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (uint256) pure returns (bytes memory)"
                                                        },
                                                        "typeName": {
                                                            "id": 2016,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "764:5:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        }
                                                    },
                                                    "id": 2019,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "760:17:13",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "738:39:13"
                                            },
                                            {
                                                "body": {
                                                    "id": 2051,
                                                    "nodeType": "Block",
                                                    "src": "806:131:13",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 2026,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 2024,
                                                                    "name": "digits",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2000,
                                                                    "src": "820:6:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "-=",
                                                                "rightHandSide": {
                                                                    "hexValue": "31",
                                                                    "id": 2025,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "830:1:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    },
                                                                    "value": "1"
                                                                },
                                                                "src": "820:11:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 2027,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "820:11:13"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 2045,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 2028,
                                                                        "name": "buffer",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2015,
                                                                        "src": "845:6:13",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 2030,
                                                                    "indexExpression": {
                                                                        "id": 2029,
                                                                        "name": "digits",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2000,
                                                                        "src": "852:6:13",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "845:14:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    "id": 2042,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                        "hexValue": "3438",
                                                                                        "id": 2035,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "number",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "875:2:13",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_rational_48_by_1",
                                                                                            "typeString": "int_const 48"
                                                                                        },
                                                                                        "value": "48"
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "+",
                                                                                    "rightExpression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "commonType": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                },
                                                                                                "id": 2040,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "leftExpression": {
                                                                                                    "id": 2038,
                                                                                                    "name": "value",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 1983,
                                                                                                    "src": "888:5:13",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    }
                                                                                                },
                                                                                                "nodeType": "BinaryOperation",
                                                                                                "operator": "%",
                                                                                                "rightExpression": {
                                                                                                    "hexValue": "3130",
                                                                                                    "id": 2039,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "kind": "number",
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "Literal",
                                                                                                    "src": "896:2:13",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_rational_10_by_1",
                                                                                                        "typeString": "int_const 10"
                                                                                                    },
                                                                                                    "value": "10"
                                                                                                },
                                                                                                "src": "888:10:13",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "id": 2037,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                                            "src": "880:7:13",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                                                                "typeString": "type(uint256)"
                                                                                            },
                                                                                            "typeName": {
                                                                                                "id": 2036,
                                                                                                "name": "uint256",
                                                                                                "nodeType": "ElementaryTypeName",
                                                                                                "src": "880:7:13",
                                                                                                "typeDescriptions": {}
                                                                                            }
                                                                                        },
                                                                                        "id": 2041,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "880:19:13",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "src": "875:24:13",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "id": 2034,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "869:5:13",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_uint8_$",
                                                                                    "typeString": "type(uint8)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 2033,
                                                                                    "name": "uint8",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "869:5:13",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 2043,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "869:31:13",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            }
                                                                        ],
                                                                        "id": 2032,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "862:6:13",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_bytes1_$",
                                                                            "typeString": "type(bytes1)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 2031,
                                                                            "name": "bytes1",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "862:6:13",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 2044,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "862:39:13",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "src": "845:56:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes1",
                                                                    "typeString": "bytes1"
                                                                }
                                                            },
                                                            "id": 2046,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "845:56:13"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 2049,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 2047,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1983,
                                                                    "src": "915:5:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "/=",
                                                                "rightHandSide": {
                                                                    "hexValue": "3130",
                                                                    "id": 2048,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "924:2:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_10_by_1",
                                                                        "typeString": "int_const 10"
                                                                    },
                                                                    "value": "10"
                                                                },
                                                                "src": "915:11:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 2050,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "915:11:13"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2023,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2021,
                                                        "name": "value",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1983,
                                                        "src": "794:5:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 2022,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "803:1:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "794:10:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 2052,
                                                "nodeType": "WhileStatement",
                                                "src": "787:150:13"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2055,
                                                            "name": "buffer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2015,
                                                            "src": "960:6:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 2054,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "953:6:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                            "typeString": "type(string storage pointer)"
                                                        },
                                                        "typeName": {
                                                            "id": 2053,
                                                            "name": "string",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "953:6:13",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 2056,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "953:14:13",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_memory_ptr",
                                                        "typeString": "string memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1987,
                                                "id": 2057,
                                                "nodeType": "Return",
                                                "src": "946:21:13"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1981,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "176:90:13",
                                        "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."
                                    },
                                    "id": 2059,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toString",
                                    "nameLocation": "280:8:13",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1984,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1983,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "297:5:13",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2059,
                                                "src": "289:13:13",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1982,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "289:7:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "288:15:13"
                                    },
                                    "returnParameters": {
                                        "id": 1987,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1986,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2059,
                                                "src": "327:13:13",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1985,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "327:6:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "326:15:13"
                                    },
                                    "scope": 2177,
                                    "src": "271:703:13",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2099,
                                        "nodeType": "Block",
                                        "src": "1153:255:13",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2069,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2067,
                                                        "name": "value",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2062,
                                                        "src": "1167:5:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 2068,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1176:1:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "1167:10:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 2073,
                                                "nodeType": "IfStatement",
                                                "src": "1163:54:13",
                                                "trueBody": {
                                                    "id": 2072,
                                                    "nodeType": "Block",
                                                    "src": "1179:38:13",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "hexValue": "30783030",
                                                                "id": 2070,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "string",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1200:6:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_stringliteral_27489e20a0060b723a1748bdff5e44570ee9fae64141728105692eac6031e8a4",
                                                                    "typeString": "literal_string \"0x00\""
                                                                },
                                                                "value": "0x00"
                                                            },
                                                            "functionReturnParameters": 2066,
                                                            "id": 2071,
                                                            "nodeType": "Return",
                                                            "src": "1193:13:13"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "assignments": [
                                                    2075
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2075,
                                                        "mutability": "mutable",
                                                        "name": "temp",
                                                        "nameLocation": "1234:4:13",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2099,
                                                        "src": "1226:12:13",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2074,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1226:7:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2077,
                                                "initialValue": {
                                                    "id": 2076,
                                                    "name": "value",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2062,
                                                    "src": "1241:5:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1226:20:13"
                                            },
                                            {
                                                "assignments": [
                                                    2079
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2079,
                                                        "mutability": "mutable",
                                                        "name": "length",
                                                        "nameLocation": "1264:6:13",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2099,
                                                        "src": "1256:14:13",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2078,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1256:7:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2081,
                                                "initialValue": {
                                                    "hexValue": "30",
                                                    "id": 2080,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1273:1:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1256:18:13"
                                            },
                                            {
                                                "body": {
                                                    "id": 2092,
                                                    "nodeType": "Block",
                                                    "src": "1302:57:13",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 2086,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "++",
                                                                "prefix": false,
                                                                "src": "1316:8:13",
                                                                "subExpression": {
                                                                    "id": 2085,
                                                                    "name": "length",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2079,
                                                                    "src": "1316:6:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 2087,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1316:8:13"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 2090,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 2088,
                                                                    "name": "temp",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2075,
                                                                    "src": "1338:4:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": ">>=",
                                                                "rightHandSide": {
                                                                    "hexValue": "38",
                                                                    "id": 2089,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1347:1:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_8_by_1",
                                                                        "typeString": "int_const 8"
                                                                    },
                                                                    "value": "8"
                                                                },
                                                                "src": "1338:10:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 2091,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1338:10:13"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2084,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2082,
                                                        "name": "temp",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2075,
                                                        "src": "1291:4:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 2083,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1299:1:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "1291:9:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 2093,
                                                "nodeType": "WhileStatement",
                                                "src": "1284:75:13"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2095,
                                                            "name": "value",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2062,
                                                            "src": "1387:5:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2096,
                                                            "name": "length",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2079,
                                                            "src": "1394:6:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2094,
                                                        "name": "toHexString",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2100,
                                                            2176
                                                        ],
                                                        "referencedDeclaration": 2176,
                                                        "src": "1375:11:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                                                            "typeString": "function (uint256,uint256) pure returns (string memory)"
                                                        }
                                                    },
                                                    "id": 2097,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1375:26:13",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_memory_ptr",
                                                        "typeString": "string memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2066,
                                                "id": 2098,
                                                "nodeType": "Return",
                                                "src": "1368:33:13"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2060,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "980:94:13",
                                        "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."
                                    },
                                    "id": 2100,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toHexString",
                                    "nameLocation": "1088:11:13",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2063,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2062,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "1108:5:13",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2100,
                                                "src": "1100:13:13",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2061,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1100:7:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1099:15:13"
                                    },
                                    "returnParameters": {
                                        "id": 2066,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2065,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2100,
                                                "src": "1138:13:13",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 2064,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1138:6:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1137:15:13"
                                    },
                                    "scope": 2177,
                                    "src": "1079:329:13",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2175,
                                        "nodeType": "Block",
                                        "src": "1621:347:13",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    2111
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2111,
                                                        "mutability": "mutable",
                                                        "name": "buffer",
                                                        "nameLocation": "1644:6:13",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2175,
                                                        "src": "1631:19:13",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 2110,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1631:5:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2120,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2118,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 2116,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "hexValue": "32",
                                                                    "id": 2114,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1663:1:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_2_by_1",
                                                                        "typeString": "int_const 2"
                                                                    },
                                                                    "value": "2"
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "*",
                                                                "rightExpression": {
                                                                    "id": 2115,
                                                                    "name": "length",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2105,
                                                                    "src": "1667:6:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "1663:10:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "hexValue": "32",
                                                                "id": 2117,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1676:1:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                    "typeString": "int_const 2"
                                                                },
                                                                "value": "2"
                                                            },
                                                            "src": "1663:14:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2113,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "NewExpression",
                                                        "src": "1653:9:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (uint256) pure returns (bytes memory)"
                                                        },
                                                        "typeName": {
                                                            "id": 2112,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1657:5:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        }
                                                    },
                                                    "id": 2119,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1653:25:13",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1631:47:13"
                                            },
                                            {
                                                "expression": {
                                                    "id": 2125,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 2121,
                                                            "name": "buffer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2111,
                                                            "src": "1688:6:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 2123,
                                                        "indexExpression": {
                                                            "hexValue": "30",
                                                            "id": 2122,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1695:1:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "1688:9:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes1",
                                                            "typeString": "bytes1"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "30",
                                                        "id": 2124,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1700:3:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                            "typeString": "literal_string \"0\""
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "1688:15:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                    }
                                                },
                                                "id": 2126,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1688:15:13"
                                            },
                                            {
                                                "expression": {
                                                    "id": 2131,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 2127,
                                                            "name": "buffer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2111,
                                                            "src": "1713:6:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 2129,
                                                        "indexExpression": {
                                                            "hexValue": "31",
                                                            "id": 2128,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1720:1:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                "typeString": "int_const 1"
                                                            },
                                                            "value": "1"
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "1713:9:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes1",
                                                            "typeString": "bytes1"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "78",
                                                        "id": 2130,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "string",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1725:3:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83",
                                                            "typeString": "literal_string \"x\""
                                                        },
                                                        "value": "x"
                                                    },
                                                    "src": "1713:15:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes1",
                                                        "typeString": "bytes1"
                                                    }
                                                },
                                                "id": 2132,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1713:15:13"
                                            },
                                            {
                                                "body": {
                                                    "id": 2161,
                                                    "nodeType": "Block",
                                                    "src": "1783:83:13",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 2155,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 2147,
                                                                        "name": "buffer",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2111,
                                                                        "src": "1797:6:13",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 2149,
                                                                    "indexExpression": {
                                                                        "id": 2148,
                                                                        "name": "i",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2134,
                                                                        "src": "1804:1:13",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "1797:9:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 2150,
                                                                        "name": "alphabet",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1980,
                                                                        "src": "1809:8:13",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes16",
                                                                            "typeString": "bytes16"
                                                                        }
                                                                    },
                                                                    "id": 2154,
                                                                    "indexExpression": {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 2153,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 2151,
                                                                            "name": "value",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2103,
                                                                            "src": "1818:5:13",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "&",
                                                                        "rightExpression": {
                                                                            "hexValue": "307866",
                                                                            "id": 2152,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1826:3:13",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_15_by_1",
                                                                                "typeString": "int_const 15"
                                                                            },
                                                                            "value": "0xf"
                                                                        },
                                                                        "src": "1818:11:13",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "1809:21:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "src": "1797:33:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes1",
                                                                    "typeString": "bytes1"
                                                                }
                                                            },
                                                            "id": 2156,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1797:33:13"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 2159,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 2157,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2103,
                                                                    "src": "1844:5:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": ">>=",
                                                                "rightHandSide": {
                                                                    "hexValue": "34",
                                                                    "id": 2158,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1854:1:13",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_4_by_1",
                                                                        "typeString": "int_const 4"
                                                                    },
                                                                    "value": "4"
                                                                },
                                                                "src": "1844:11:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 2160,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1844:11:13"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2143,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2141,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2134,
                                                        "src": "1771:1:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "31",
                                                        "id": 2142,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1775:1:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "1771:5:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 2162,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        2134
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 2134,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "1751:1:13",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 2162,
                                                            "src": "1743:9:13",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 2133,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "1743:7:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 2140,
                                                    "initialValue": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 2139,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2137,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "hexValue": "32",
                                                                "id": 2135,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1755:1:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                    "typeString": "int_const 2"
                                                                },
                                                                "value": "2"
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "id": 2136,
                                                                "name": "length",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2105,
                                                                "src": "1759:6:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1755:10:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                            "hexValue": "31",
                                                            "id": 2138,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1768:1:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                "typeString": "int_const 1"
                                                            },
                                                            "value": "1"
                                                        },
                                                        "src": "1755:14:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "1743:26:13"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 2145,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "--",
                                                        "prefix": true,
                                                        "src": "1778:3:13",
                                                        "subExpression": {
                                                            "id": 2144,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2134,
                                                            "src": "1780:1:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 2146,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "1778:3:13"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "1738:128:13"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2166,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2164,
                                                                "name": "value",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2103,
                                                                "src": "1883:5:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 2165,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1892:1:13",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "1883:10:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                                                            "id": 2167,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1895:34:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                                                "typeString": "literal_string \"Strings: hex length insufficient\""
                                                            },
                                                            "value": "Strings: hex length insufficient"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                                                                "typeString": "literal_string \"Strings: hex length insufficient\""
                                                            }
                                                        ],
                                                        "id": 2163,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1875:7:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 2168,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1875:55:13",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2169,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1875:55:13"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2172,
                                                            "name": "buffer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2111,
                                                            "src": "1954:6:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 2171,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "1947:6:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                            "typeString": "type(string storage pointer)"
                                                        },
                                                        "typeName": {
                                                            "id": 2170,
                                                            "name": "string",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1947:6:13",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 2173,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1947:14:13",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_memory_ptr",
                                                        "typeString": "string memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2109,
                                                "id": 2174,
                                                "nodeType": "Return",
                                                "src": "1940:21:13"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2101,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1414:112:13",
                                        "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."
                                    },
                                    "id": 2176,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toHexString",
                                    "nameLocation": "1540:11:13",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2106,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2103,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "1560:5:13",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2176,
                                                "src": "1552:13:13",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2102,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1552:7:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2105,
                                                "mutability": "mutable",
                                                "name": "length",
                                                "nameLocation": "1575:6:13",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2176,
                                                "src": "1567:14:13",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2104,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1567:7:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1551:31:13"
                                    },
                                    "returnParameters": {
                                        "id": 2109,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2108,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2176,
                                                "src": "1606:13:13",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 2107,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1606:6:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1605:15:13"
                                    },
                                    "scope": 2177,
                                    "src": "1531:437:13",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 2178,
                            "src": "93:1878:13",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:1939:13"
                },
                "id": 13
            },
            "@openzeppelin/contracts/utils/introspection/ERC165.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
                    "exportedSymbols": {
                        "ERC165": [
                            2201
                        ],
                        "IERC165": [
                            2213
                        ]
                    },
                    "id": 2202,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 2179,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:14"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
                            "file": "./IERC165.sol",
                            "id": 2180,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 2202,
                            "sourceUnit": 2214,
                            "src": "58:23:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 2182,
                                        "name": "IERC165",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2213,
                                        "src": "688:7:14"
                                    },
                                    "id": 2183,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "688:7:14"
                                }
                            ],
                            "canonicalName": "ERC165",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 2181,
                                "nodeType": "StructuredDocumentation",
                                "src": "83:576:14",
                                "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."
                            },
                            "fullyImplemented": true,
                            "id": 2201,
                            "linearizedBaseContracts": [
                                2201,
                                2213
                            ],
                            "name": "ERC165",
                            "nameLocation": "678:6:14",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "baseFunctions": [
                                        2212
                                    ],
                                    "body": {
                                        "id": 2199,
                                        "nodeType": "Block",
                                        "src": "854:64:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    },
                                                    "id": 2197,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2192,
                                                        "name": "interfaceId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2186,
                                                        "src": "871:11:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2194,
                                                                    "name": "IERC165",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2213,
                                                                    "src": "891:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IERC165_$2213_$",
                                                                        "typeString": "type(contract IERC165)"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_type$_t_contract$_IERC165_$2213_$",
                                                                        "typeString": "type(contract IERC165)"
                                                                    }
                                                                ],
                                                                "id": 2193,
                                                                "name": "type",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -27,
                                                                "src": "886:4:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                                    "typeString": "function () pure"
                                                                }
                                                            },
                                                            "id": 2195,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "886:13:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$2213",
                                                                "typeString": "type(contract IERC165)"
                                                            }
                                                        },
                                                        "id": 2196,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "interfaceId",
                                                        "nodeType": "MemberAccess",
                                                        "src": "886:25:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "src": "871:40:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2191,
                                                "id": 2198,
                                                "nodeType": "Return",
                                                "src": "864:47:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2184,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "702:56:14",
                                        "text": " @dev See {IERC165-supportsInterface}."
                                    },
                                    "functionSelector": "01ffc9a7",
                                    "id": 2200,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "supportsInterface",
                                    "nameLocation": "772:17:14",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 2188,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "830:8:14"
                                    },
                                    "parameters": {
                                        "id": 2187,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2186,
                                                "mutability": "mutable",
                                                "name": "interfaceId",
                                                "nameLocation": "797:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2200,
                                                "src": "790:18:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 2185,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "790:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "789:20:14"
                                    },
                                    "returnParameters": {
                                        "id": 2191,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2190,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2200,
                                                "src": "848:4:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2189,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "848:4:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "847:6:14"
                                    },
                                    "scope": 2201,
                                    "src": "763:155:14",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 2202,
                            "src": "660:260:14",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:888:14"
                },
                "id": 14
            },
            "@openzeppelin/contracts/utils/introspection/IERC165.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
                    "exportedSymbols": {
                        "IERC165": [
                            2213
                        ]
                    },
                    "id": 2214,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 2203,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:15"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IERC165",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 2204,
                                "nodeType": "StructuredDocumentation",
                                "src": "58:279:15",
                                "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."
                            },
                            "fullyImplemented": false,
                            "id": 2213,
                            "linearizedBaseContracts": [
                                2213
                            ],
                            "name": "IERC165",
                            "nameLocation": "348:7:15",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 2205,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "362:340:15",
                                        "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."
                                    },
                                    "functionSelector": "01ffc9a7",
                                    "id": 2212,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "supportsInterface",
                                    "nameLocation": "716:17:15",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2208,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2207,
                                                "mutability": "mutable",
                                                "name": "interfaceId",
                                                "nameLocation": "741:11:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2212,
                                                "src": "734:18:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 2206,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "734:6:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "733:20:15"
                                    },
                                    "returnParameters": {
                                        "id": 2211,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2210,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2212,
                                                "src": "777:4:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2209,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "777:4:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "776:6:15"
                                    },
                                    "scope": 2213,
                                    "src": "707:76:15",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 2214,
                            "src": "338:447:15",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:753:15"
                },
                "id": 15
            },
            "@openzeppelin/contracts/utils/math/SafeMath.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/math/SafeMath.sol",
                    "exportedSymbols": {
                        "SafeMath": [
                            2525
                        ]
                    },
                    "id": 2526,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 2215,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:16"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "SafeMath",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 2216,
                                "nodeType": "StructuredDocumentation",
                                "src": "211:186:16",
                                "text": " @dev Wrappers over Solidity's arithmetic operations.\n NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler\n now has built in overflow checking."
                            },
                            "fullyImplemented": true,
                            "id": 2525,
                            "linearizedBaseContracts": [
                                2525
                            ],
                            "name": "SafeMath",
                            "nameLocation": "406:8:16",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 2247,
                                        "nodeType": "Block",
                                        "src": "633:140:16",
                                        "statements": [
                                            {
                                                "id": 2246,
                                                "nodeType": "UncheckedBlock",
                                                "src": "643:124:16",
                                                "statements": [
                                                    {
                                                        "assignments": [
                                                            2229
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 2229,
                                                                "mutability": "mutable",
                                                                "name": "c",
                                                                "nameLocation": "675:1:16",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 2246,
                                                                "src": "667:9:16",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 2228,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "667:7:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 2233,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2232,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2230,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2219,
                                                                "src": "679:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "id": 2231,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2221,
                                                                "src": "683:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "679:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "667:17:16"
                                                    },
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2236,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2234,
                                                                "name": "c",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2229,
                                                                "src": "702:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<",
                                                            "rightExpression": {
                                                                "id": 2235,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2219,
                                                                "src": "706:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "702:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 2241,
                                                        "nodeType": "IfStatement",
                                                        "src": "698:28:16",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 2237,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "717:5:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 2238,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "724:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 2239,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "716:10:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2227,
                                                            "id": 2240,
                                                            "nodeType": "Return",
                                                            "src": "709:17:16"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 2242,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "748:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "id": 2243,
                                                                    "name": "c",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2229,
                                                                    "src": "754:1:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 2244,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "747:9:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 2227,
                                                        "id": 2245,
                                                        "nodeType": "Return",
                                                        "src": "740:16:16"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2217,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "421:131:16",
                                        "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"
                                    },
                                    "id": 2248,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "tryAdd",
                                    "nameLocation": "566:6:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2222,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2219,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "581:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2248,
                                                "src": "573:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2218,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "573:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2221,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "592:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2248,
                                                "src": "584:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2220,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "584:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "572:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2227,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2224,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2248,
                                                "src": "618:4:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2223,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "618:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2226,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2248,
                                                "src": "624:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2225,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "624:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "617:15:16"
                                    },
                                    "scope": 2525,
                                    "src": "557:216:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2275,
                                        "nodeType": "Block",
                                        "src": "995:113:16",
                                        "statements": [
                                            {
                                                "id": 2274,
                                                "nodeType": "UncheckedBlock",
                                                "src": "1005:97:16",
                                                "statements": [
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2262,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2260,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2253,
                                                                "src": "1033:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "id": 2261,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2251,
                                                                "src": "1037:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1033:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 2267,
                                                        "nodeType": "IfStatement",
                                                        "src": "1029:28:16",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 2263,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1048:5:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 2264,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1055:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 2265,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1047:10:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2259,
                                                            "id": 2266,
                                                            "nodeType": "Return",
                                                            "src": "1040:17:16"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 2268,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1079:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 2271,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 2269,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2251,
                                                                        "src": "1085:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                        "id": 2270,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2253,
                                                                        "src": "1089:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "1085:5:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 2272,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "1078:13:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 2259,
                                                        "id": 2273,
                                                        "nodeType": "Return",
                                                        "src": "1071:20:16"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2249,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "779:135:16",
                                        "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"
                                    },
                                    "id": 2276,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "trySub",
                                    "nameLocation": "928:6:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2254,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2251,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "943:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2276,
                                                "src": "935:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2250,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "935:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2253,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "954:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2276,
                                                "src": "946:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2252,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "946:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "934:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2259,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2256,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2276,
                                                "src": "980:4:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2255,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "980:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2258,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2276,
                                                "src": "986:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2257,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "986:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "979:15:16"
                                    },
                                    "scope": 2525,
                                    "src": "919:189:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2317,
                                        "nodeType": "Block",
                                        "src": "1332:417:16",
                                        "statements": [
                                            {
                                                "id": 2316,
                                                "nodeType": "UncheckedBlock",
                                                "src": "1342:401:16",
                                                "statements": [
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2290,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2288,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2279,
                                                                "src": "1600:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 2289,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1605:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "1600:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 2295,
                                                        "nodeType": "IfStatement",
                                                        "src": "1596:28:16",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "74727565",
                                                                        "id": 2291,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1616:4:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "true"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 2292,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1622:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 2293,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1615:9:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2287,
                                                            "id": 2294,
                                                            "nodeType": "Return",
                                                            "src": "1608:16:16"
                                                        }
                                                    },
                                                    {
                                                        "assignments": [
                                                            2297
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 2297,
                                                                "mutability": "mutable",
                                                                "name": "c",
                                                                "nameLocation": "1646:1:16",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 2316,
                                                                "src": "1638:9:16",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 2296,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1638:7:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 2301,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2300,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2298,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2279,
                                                                "src": "1650:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "id": 2299,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2281,
                                                                "src": "1654:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1650:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1638:17:16"
                                                    },
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2306,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 2304,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 2302,
                                                                    "name": "c",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2297,
                                                                    "src": "1673:1:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "/",
                                                                "rightExpression": {
                                                                    "id": 2303,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2279,
                                                                    "src": "1677:1:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "1673:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "id": 2305,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2281,
                                                                "src": "1682:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1673:10:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 2311,
                                                        "nodeType": "IfStatement",
                                                        "src": "1669:33:16",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 2307,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1693:5:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 2308,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1700:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 2309,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1692:10:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2287,
                                                            "id": 2310,
                                                            "nodeType": "Return",
                                                            "src": "1685:17:16"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 2312,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1724:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "id": 2313,
                                                                    "name": "c",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2297,
                                                                    "src": "1730:1:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 2314,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "1723:9:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 2287,
                                                        "id": 2315,
                                                        "nodeType": "Return",
                                                        "src": "1716:16:16"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2277,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1114:137:16",
                                        "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"
                                    },
                                    "id": 2318,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "tryMul",
                                    "nameLocation": "1265:6:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2282,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2279,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1280:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2318,
                                                "src": "1272:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2278,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1272:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2281,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1291:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2318,
                                                "src": "1283:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2280,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1283:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1271:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2287,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2284,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2318,
                                                "src": "1317:4:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2283,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1317:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2286,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2318,
                                                "src": "1323:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2285,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1323:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1316:15:16"
                                    },
                                    "scope": 2525,
                                    "src": "1256:493:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2345,
                                        "nodeType": "Block",
                                        "src": "1974:114:16",
                                        "statements": [
                                            {
                                                "id": 2344,
                                                "nodeType": "UncheckedBlock",
                                                "src": "1984:98:16",
                                                "statements": [
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2332,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2330,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2323,
                                                                "src": "2012:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 2331,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "2017:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "2012:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 2337,
                                                        "nodeType": "IfStatement",
                                                        "src": "2008:29:16",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 2333,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2028:5:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 2334,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2035:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 2335,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "2027:10:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2329,
                                                            "id": 2336,
                                                            "nodeType": "Return",
                                                            "src": "2020:17:16"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 2338,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "2059:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 2341,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 2339,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2321,
                                                                        "src": "2065:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 2340,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2323,
                                                                        "src": "2069:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2065:5:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 2342,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "2058:13:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 2329,
                                                        "id": 2343,
                                                        "nodeType": "Return",
                                                        "src": "2051:20:16"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2319,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1755:138:16",
                                        "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"
                                    },
                                    "id": 2346,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "tryDiv",
                                    "nameLocation": "1907:6:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2324,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2321,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1922:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2346,
                                                "src": "1914:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2320,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1914:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2323,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1933:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2346,
                                                "src": "1925:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2322,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1925:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1913:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2329,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2326,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2346,
                                                "src": "1959:4:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2325,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1959:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2328,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2346,
                                                "src": "1965:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2327,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1965:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1958:15:16"
                                    },
                                    "scope": 2525,
                                    "src": "1898:190:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2373,
                                        "nodeType": "Block",
                                        "src": "2323:114:16",
                                        "statements": [
                                            {
                                                "id": 2372,
                                                "nodeType": "UncheckedBlock",
                                                "src": "2333:98:16",
                                                "statements": [
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2360,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2358,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2351,
                                                                "src": "2361:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 2359,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "2366:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "2361:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 2365,
                                                        "nodeType": "IfStatement",
                                                        "src": "2357:29:16",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 2361,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2377:5:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 2362,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2384:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 2363,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "2376:10:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2357,
                                                            "id": 2364,
                                                            "nodeType": "Return",
                                                            "src": "2369:17:16"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 2366,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "2408:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 2369,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 2367,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2349,
                                                                        "src": "2414:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "%",
                                                                    "rightExpression": {
                                                                        "id": 2368,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2351,
                                                                        "src": "2418:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2414:5:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 2370,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "2407:13:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 2357,
                                                        "id": 2371,
                                                        "nodeType": "Return",
                                                        "src": "2400:20:16"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2347,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2094:148:16",
                                        "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"
                                    },
                                    "id": 2374,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "tryMod",
                                    "nameLocation": "2256:6:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2352,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2349,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2271:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2374,
                                                "src": "2263:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2348,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2263:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2351,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2282:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2374,
                                                "src": "2274:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2350,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2274:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2262:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2357,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2354,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2374,
                                                "src": "2308:4:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2353,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2308:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2356,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2374,
                                                "src": "2314:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2355,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2314:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2307:15:16"
                                    },
                                    "scope": 2525,
                                    "src": "2247:190:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2388,
                                        "nodeType": "Block",
                                        "src": "2739:29:16",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2386,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2384,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2377,
                                                        "src": "2756:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 2385,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2379,
                                                        "src": "2760:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2756:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 2383,
                                                "id": 2387,
                                                "nodeType": "Return",
                                                "src": "2749:12:16"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2375,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2443:224:16",
                                        "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                                    },
                                    "id": 2389,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "2681:3:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2380,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2377,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2693:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2389,
                                                "src": "2685:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2376,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2685:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2379,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2704:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2389,
                                                "src": "2696:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2378,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2696:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2684:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2383,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2382,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2389,
                                                "src": "2730:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2381,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2730:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2729:9:16"
                                    },
                                    "scope": 2525,
                                    "src": "2672:96:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2403,
                                        "nodeType": "Block",
                                        "src": "3106:29:16",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2401,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2399,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2392,
                                                        "src": "3123:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "id": 2400,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2394,
                                                        "src": "3127:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3123:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 2398,
                                                "id": 2402,
                                                "nodeType": "Return",
                                                "src": "3116:12:16"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2390,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2774:260:16",
                                        "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                                    },
                                    "id": 2404,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "3048:3:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2395,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2392,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3060:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2404,
                                                "src": "3052:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2391,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3052:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2394,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3071:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2404,
                                                "src": "3063:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2393,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3063:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3051:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2398,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2397,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2404,
                                                "src": "3097:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2396,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3097:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3096:9:16"
                                    },
                                    "scope": 2525,
                                    "src": "3039:96:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2418,
                                        "nodeType": "Block",
                                        "src": "3449:29:16",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2416,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2414,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2407,
                                                        "src": "3466:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 2415,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2409,
                                                        "src": "3470:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3466:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 2413,
                                                "id": 2417,
                                                "nodeType": "Return",
                                                "src": "3459:12:16"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2405,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3141:236:16",
                                        "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                                    },
                                    "id": 2419,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "3391:3:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2410,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2407,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3403:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2419,
                                                "src": "3395:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2406,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3395:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2409,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3414:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2419,
                                                "src": "3406:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2408,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3406:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3394:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2413,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2412,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2419,
                                                "src": "3440:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2411,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3440:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3439:9:16"
                                    },
                                    "scope": 2525,
                                    "src": "3382:96:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2433,
                                        "nodeType": "Block",
                                        "src": "3834:29:16",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2431,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2429,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2422,
                                                        "src": "3851:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "id": 2430,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2424,
                                                        "src": "3855:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3851:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 2428,
                                                "id": 2432,
                                                "nodeType": "Return",
                                                "src": "3844:12:16"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2420,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3484:278:16",
                                        "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator.\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 2434,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "3776:3:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2425,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2422,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3788:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2434,
                                                "src": "3780:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2421,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3780:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2424,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3799:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2434,
                                                "src": "3791:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2423,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3791:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3779:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2428,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2427,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2434,
                                                "src": "3825:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2426,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3825:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3824:9:16"
                                    },
                                    "scope": 2525,
                                    "src": "3767:96:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2448,
                                        "nodeType": "Block",
                                        "src": "4383:29:16",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2446,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2444,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2437,
                                                        "src": "4400:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "%",
                                                    "rightExpression": {
                                                        "id": 2445,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2439,
                                                        "src": "4404:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4400:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 2443,
                                                "id": 2447,
                                                "nodeType": "Return",
                                                "src": "4393:12:16"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2435,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3869:442:16",
                                        "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 2449,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mod",
                                    "nameLocation": "4325:3:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2440,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2437,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4337:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2449,
                                                "src": "4329:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2436,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4329:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2439,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4348:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2449,
                                                "src": "4340:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2438,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4340:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4328:22:16"
                                    },
                                    "returnParameters": {
                                        "id": 2443,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2442,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2449,
                                                "src": "4374:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2441,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4374:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4373:9:16"
                                    },
                                    "scope": 2525,
                                    "src": "4316:96:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2473,
                                        "nodeType": "Block",
                                        "src": "4971:106:16",
                                        "statements": [
                                            {
                                                "id": 2472,
                                                "nodeType": "UncheckedBlock",
                                                "src": "4981:90:16",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 2464,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 2462,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2454,
                                                                        "src": "5013:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<=",
                                                                    "rightExpression": {
                                                                        "id": 2463,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2452,
                                                                        "src": "5018:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "5013:6:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 2465,
                                                                    "name": "errorMessage",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2456,
                                                                    "src": "5021:12:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                ],
                                                                "id": 2461,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [
                                                                    -18,
                                                                    -18
                                                                ],
                                                                "referencedDeclaration": -18,
                                                                "src": "5005:7:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                    "typeString": "function (bool,string memory) pure"
                                                                }
                                                            },
                                                            "id": 2466,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5005:29:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 2467,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "5005:29:16"
                                                    },
                                                    {
                                                        "expression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2470,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2468,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2452,
                                                                "src": "5055:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "id": 2469,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2454,
                                                                "src": "5059:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5055:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "functionReturnParameters": 2460,
                                                        "id": 2471,
                                                        "nodeType": "Return",
                                                        "src": "5048:12:16"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2450,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4418:453:16",
                                        "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                                    },
                                    "id": 2474,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "4885:3:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2457,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2452,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4897:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2474,
                                                "src": "4889:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2451,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4889:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2454,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4908:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2474,
                                                "src": "4900:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2453,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4900:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2456,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "4925:12:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2474,
                                                "src": "4911:26:16",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 2455,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4911:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4888:50:16"
                                    },
                                    "returnParameters": {
                                        "id": 2460,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2459,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2474,
                                                "src": "4962:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2458,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4962:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4961:9:16"
                                    },
                                    "scope": 2525,
                                    "src": "4876:201:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2498,
                                        "nodeType": "Block",
                                        "src": "5879:105:16",
                                        "statements": [
                                            {
                                                "id": 2497,
                                                "nodeType": "UncheckedBlock",
                                                "src": "5889:89:16",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 2489,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 2487,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2479,
                                                                        "src": "5921:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">",
                                                                    "rightExpression": {
                                                                        "hexValue": "30",
                                                                        "id": 2488,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "5925:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "src": "5921:5:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 2490,
                                                                    "name": "errorMessage",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2481,
                                                                    "src": "5928:12:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                ],
                                                                "id": 2486,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [
                                                                    -18,
                                                                    -18
                                                                ],
                                                                "referencedDeclaration": -18,
                                                                "src": "5913:7:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                    "typeString": "function (bool,string memory) pure"
                                                                }
                                                            },
                                                            "id": 2491,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5913:28:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 2492,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "5913:28:16"
                                                    },
                                                    {
                                                        "expression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2495,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2493,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2477,
                                                                "src": "5962:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "id": 2494,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2479,
                                                                "src": "5966:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5962:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "functionReturnParameters": 2485,
                                                        "id": 2496,
                                                        "nodeType": "Return",
                                                        "src": "5955:12:16"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2475,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5083:696:16",
                                        "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 2499,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "5793:3:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2482,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2477,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "5805:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2499,
                                                "src": "5797:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2476,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5797:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2479,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "5816:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2499,
                                                "src": "5808:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2478,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5808:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2481,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "5833:12:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2499,
                                                "src": "5819:26:16",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 2480,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5819:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5796:50:16"
                                    },
                                    "returnParameters": {
                                        "id": 2485,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2484,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2499,
                                                "src": "5870:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2483,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5870:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5869:9:16"
                                    },
                                    "scope": 2525,
                                    "src": "5784:200:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2523,
                                        "nodeType": "Block",
                                        "src": "6725:105:16",
                                        "statements": [
                                            {
                                                "id": 2522,
                                                "nodeType": "UncheckedBlock",
                                                "src": "6735:89:16",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 2514,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 2512,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2504,
                                                                        "src": "6767:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">",
                                                                    "rightExpression": {
                                                                        "hexValue": "30",
                                                                        "id": 2513,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "6771:1:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "src": "6767:5:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 2515,
                                                                    "name": "errorMessage",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2506,
                                                                    "src": "6774:12:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                ],
                                                                "id": 2511,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [
                                                                    -18,
                                                                    -18
                                                                ],
                                                                "referencedDeclaration": -18,
                                                                "src": "6759:7:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                    "typeString": "function (bool,string memory) pure"
                                                                }
                                                            },
                                                            "id": 2516,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6759:28:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 2517,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "6759:28:16"
                                                    },
                                                    {
                                                        "expression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2520,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 2518,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2502,
                                                                "src": "6808:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "%",
                                                            "rightExpression": {
                                                                "id": 2519,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2504,
                                                                "src": "6812:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "6808:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "functionReturnParameters": 2510,
                                                        "id": 2521,
                                                        "nodeType": "Return",
                                                        "src": "6801:12:16"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2500,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5990:635:16",
                                        "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 2524,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mod",
                                    "nameLocation": "6639:3:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2507,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2502,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "6651:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2524,
                                                "src": "6643:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2501,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6643:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2504,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "6662:1:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2524,
                                                "src": "6654:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2503,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6654:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2506,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "6679:12:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2524,
                                                "src": "6665:26:16",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 2505,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6665:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6642:50:16"
                                    },
                                    "returnParameters": {
                                        "id": 2510,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2509,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2524,
                                                "src": "6716:7:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2508,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6716:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6715:9:16"
                                    },
                                    "scope": 2525,
                                    "src": "6630:200:16",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 2526,
                            "src": "398:6434:16",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:6800:16"
                },
                "id": 16
            },
            "@openzeppelin/contracts/utils/math/SignedSafeMath.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/math/SignedSafeMath.sol",
                    "exportedSymbols": {
                        "SignedSafeMath": [
                            2589
                        ]
                    },
                    "id": 2590,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 2527,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:17"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "SignedSafeMath",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 2528,
                                "nodeType": "StructuredDocumentation",
                                "src": "58:192:17",
                                "text": " @dev Wrappers over Solidity's arithmetic operations.\n NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\n now has built in overflow checking."
                            },
                            "fullyImplemented": true,
                            "id": 2589,
                            "linearizedBaseContracts": [
                                2589
                            ],
                            "name": "SignedSafeMath",
                            "nameLocation": "259:14:17",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 2542,
                                        "nodeType": "Block",
                                        "src": "583:29:17",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2540,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2538,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2531,
                                                        "src": "600:1:17",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 2539,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2533,
                                                        "src": "604:1:17",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "600:5:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "functionReturnParameters": 2537,
                                                "id": 2541,
                                                "nodeType": "Return",
                                                "src": "593:12:17"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2529,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "280:234:17",
                                        "text": " @dev Returns the multiplication of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                                    },
                                    "id": 2543,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "528:3:17",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2534,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2531,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "539:1:17",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2543,
                                                "src": "532:8:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2530,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "532:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2533,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "549:1:17",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2543,
                                                "src": "542:8:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2532,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "542:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "531:20:17"
                                    },
                                    "returnParameters": {
                                        "id": 2537,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2536,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2543,
                                                "src": "575:6:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2535,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "575:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "574:8:17"
                                    },
                                    "scope": 2589,
                                    "src": "519:93:17",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2557,
                                        "nodeType": "Block",
                                        "src": "961:29:17",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2555,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2553,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2546,
                                                        "src": "978:1:17",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "id": 2554,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2548,
                                                        "src": "982:1:17",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "978:5:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "functionReturnParameters": 2552,
                                                "id": 2556,
                                                "nodeType": "Return",
                                                "src": "971:12:17"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2544,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "618:274:17",
                                        "text": " @dev Returns the integer division of two signed integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator.\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 2558,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "906:3:17",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2549,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2546,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "917:1:17",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2558,
                                                "src": "910:8:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2545,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "910:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2548,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "927:1:17",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2558,
                                                "src": "920:8:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2547,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "920:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "909:20:17"
                                    },
                                    "returnParameters": {
                                        "id": 2552,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2551,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2558,
                                                "src": "953:6:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2550,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "953:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "952:8:17"
                                    },
                                    "scope": 2589,
                                    "src": "897:93:17",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2572,
                                        "nodeType": "Block",
                                        "src": "1293:29:17",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2570,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2568,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2561,
                                                        "src": "1310:1:17",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "id": 2569,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2563,
                                                        "src": "1314:1:17",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "1310:5:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "functionReturnParameters": 2567,
                                                "id": 2571,
                                                "nodeType": "Return",
                                                "src": "1303:12:17"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2559,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "996:228:17",
                                        "text": " @dev Returns the subtraction of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                                    },
                                    "id": 2573,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "1238:3:17",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2564,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2561,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1249:1:17",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2573,
                                                "src": "1242:8:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2560,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1242:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2563,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1259:1:17",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2573,
                                                "src": "1252:8:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2562,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1252:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1241:20:17"
                                    },
                                    "returnParameters": {
                                        "id": 2567,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2566,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2573,
                                                "src": "1285:6:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2565,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1285:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1284:8:17"
                                    },
                                    "scope": 2589,
                                    "src": "1229:93:17",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2587,
                                        "nodeType": "Block",
                                        "src": "1619:29:17",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2585,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2583,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2576,
                                                        "src": "1636:1:17",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 2584,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2578,
                                                        "src": "1640:1:17",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "1636:5:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "functionReturnParameters": 2582,
                                                "id": 2586,
                                                "nodeType": "Return",
                                                "src": "1629:12:17"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2574,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1328:222:17",
                                        "text": " @dev Returns the addition of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                                    },
                                    "id": 2588,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "1564:3:17",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2579,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2576,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1575:1:17",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2588,
                                                "src": "1568:8:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2575,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1568:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2578,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1585:1:17",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2588,
                                                "src": "1578:8:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2577,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1578:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1567:20:17"
                                    },
                                    "returnParameters": {
                                        "id": 2582,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2581,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2588,
                                                "src": "1611:6:17",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2580,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1611:6:17",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1610:8:17"
                                    },
                                    "scope": 2589,
                                    "src": "1555:93:17",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 2590,
                            "src": "251:1399:17",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:1618:17"
                },
                "id": 17
            },
            "@uma/core/contracts/common/implementation/Lockable.sol": {
                "ast": {
                    "absolutePath": "@uma/core/contracts/common/implementation/Lockable.sol",
                    "exportedSymbols": {
                        "Lockable": [
                            2650
                        ]
                    },
                    "id": 2651,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 2591,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:18"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Lockable",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 2592,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:337:18",
                                "text": " @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol."
                            },
                            "fullyImplemented": true,
                            "id": 2650,
                            "linearizedBaseContracts": [
                                2650
                            ],
                            "name": "Lockable",
                            "nameLocation": "414:8:18",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "id": 2594,
                                    "mutability": "mutable",
                                    "name": "_notEntered",
                                    "nameLocation": "442:11:18",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 2650,
                                    "src": "429:24:18",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 2593,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "429:4:18",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 2601,
                                        "nodeType": "Block",
                                        "src": "474:425:18",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 2599,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 2597,
                                                        "name": "_notEntered",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2594,
                                                        "src": "874:11:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "74727565",
                                                        "id": 2598,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "888:4:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "src": "874:18:18",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 2600,
                                                "nodeType": "ExpressionStatement",
                                                "src": "874:18:18"
                                            }
                                        ]
                                    },
                                    "id": 2602,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2595,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "471:2:18"
                                    },
                                    "returnParameters": {
                                        "id": 2596,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "474:0:18"
                                    },
                                    "scope": 2650,
                                    "src": "460:439:18",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2615,
                                        "nodeType": "Block",
                                        "src": "1307:104:18",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 2605,
                                                        "name": "_preEntranceCheck",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2633,
                                                        "src": "1317:17:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 2606,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1317:19:18",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2607,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1317:19:18"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 2608,
                                                        "name": "_preEntranceSet",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2641,
                                                        "src": "1346:15:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 2609,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1346:17:18",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2610,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1346:17:18"
                                            },
                                            {
                                                "id": 2611,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1373:1:18"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 2612,
                                                        "name": "_postEntranceReset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2649,
                                                        "src": "1384:18:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 2613,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1384:20:18",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2614,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1384:20:18"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2603,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "905:373:18",
                                        "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n function that does the actual state modification."
                                    },
                                    "id": 2616,
                                    "name": "nonReentrant",
                                    "nameLocation": "1292:12:18",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 2604,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1304:2:18"
                                    },
                                    "src": "1283:128:18",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2623,
                                        "nodeType": "Block",
                                        "src": "1593:47:18",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 2619,
                                                        "name": "_preEntranceCheck",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2633,
                                                        "src": "1603:17:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 2620,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1603:19:18",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2621,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1603:19:18"
                                            },
                                            {
                                                "id": 2622,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1632:1:18"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2617,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1417:143:18",
                                        "text": " @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method."
                                    },
                                    "id": 2624,
                                    "name": "nonReentrantView",
                                    "nameLocation": "1574:16:18",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 2618,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1590:2:18"
                                    },
                                    "src": "1565:75:18",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2632,
                                        "nodeType": "Block",
                                        "src": "2186:143:18",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2628,
                                                            "name": "_notEntered",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2594,
                                                            "src": "2275:11:18",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                            "id": 2629,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2288:33:18",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                                                            },
                                                            "value": "ReentrancyGuard: reentrant call"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                                                            }
                                                        ],
                                                        "id": 2627,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2267:7:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 2630,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2267:55:18",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2631,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2267:55:18"
                                            }
                                        ]
                                    },
                                    "id": 2633,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_preEntranceCheck",
                                    "nameLocation": "2152:17:18",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2625,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2169:2:18"
                                    },
                                    "returnParameters": {
                                        "id": 2626,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2186:0:18"
                                    },
                                    "scope": 2650,
                                    "src": "2143:186:18",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2640,
                                        "nodeType": "Block",
                                        "src": "2371:100:18",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 2638,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 2636,
                                                        "name": "_notEntered",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2594,
                                                        "src": "2445:11:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "66616c7365",
                                                        "id": 2637,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2459:5:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "false"
                                                    },
                                                    "src": "2445:19:18",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 2639,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2445:19:18"
                                            }
                                        ]
                                    },
                                    "id": 2641,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_preEntranceSet",
                                    "nameLocation": "2344:15:18",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2634,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2359:2:18"
                                    },
                                    "returnParameters": {
                                        "id": 2635,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2371:0:18"
                                    },
                                    "scope": 2650,
                                    "src": "2335:136:18",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2648,
                                        "nodeType": "Block",
                                        "src": "2516:167:18",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 2646,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 2644,
                                                        "name": "_notEntered",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2594,
                                                        "src": "2658:11:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "74727565",
                                                        "id": 2645,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2672:4:18",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "src": "2658:18:18",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 2647,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2658:18:18"
                                            }
                                        ]
                                    },
                                    "id": 2649,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_postEntranceReset",
                                    "nameLocation": "2486:18:18",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2642,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2504:2:18"
                                    },
                                    "returnParameters": {
                                        "id": 2643,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2516:0:18"
                                    },
                                    "scope": 2650,
                                    "src": "2477:206:18",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 2651,
                            "src": "405:2280:18",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:2644:18"
                },
                "id": 18
            },
            "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol": {
                "ast": {
                    "absolutePath": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol",
                    "exportedSymbols": {
                        "Arbitrum_CrossDomainEnabled": [
                            3335
                        ],
                        "Arbitrum_ParentMessenger": [
                            3003
                        ],
                        "Context": [
                            1974
                        ],
                        "IBridge": [
                            3198
                        ],
                        "Lockable": [
                            2650
                        ],
                        "Ownable": [
                            729
                        ],
                        "ParentMessengerBase": [
                            3167
                        ],
                        "ParentMessengerConsumerInterface": [
                            3177
                        ],
                        "ParentMessengerInterface": [
                            3190
                        ],
                        "iArbitrum_Inbox": [
                            3225
                        ],
                        "iArbitrum_Outbox": [
                            3233
                        ]
                    },
                    "id": 3004,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 2652,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:19"
                        },
                        {
                            "absolutePath": "@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol",
                            "file": "../../insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol",
                            "id": 2653,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3004,
                            "sourceUnit": 3336,
                            "src": "67:66:19",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol",
                            "file": "../interfaces/ParentMessengerInterface.sol",
                            "id": 2654,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3004,
                            "sourceUnit": 3191,
                            "src": "134:52:19",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol",
                            "file": "../interfaces/ParentMessengerConsumerInterface.sol",
                            "id": 2655,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3004,
                            "sourceUnit": 3178,
                            "src": "187:60:19",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol",
                            "file": "./ParentMessengerBase.sol",
                            "id": 2656,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3004,
                            "sourceUnit": 3168,
                            "src": "248:35:19",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@uma/core/contracts/common/implementation/Lockable.sol",
                            "file": "../../common/implementation/Lockable.sol",
                            "id": 2657,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3004,
                            "sourceUnit": 2651,
                            "src": "284:50:19",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 2659,
                                        "name": "Arbitrum_CrossDomainEnabled",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 3335,
                                        "src": "538:27:19"
                                    },
                                    "id": 2660,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "538:27:19"
                                },
                                {
                                    "baseName": {
                                        "id": 2661,
                                        "name": "ParentMessengerInterface",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 3190,
                                        "src": "571:24:19"
                                    },
                                    "id": 2662,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "571:24:19"
                                },
                                {
                                    "baseName": {
                                        "id": 2663,
                                        "name": "ParentMessengerBase",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 3167,
                                        "src": "601:19:19"
                                    },
                                    "id": 2664,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "601:19:19"
                                },
                                {
                                    "baseName": {
                                        "id": 2665,
                                        "name": "Lockable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2650,
                                        "src": "626:8:19"
                                    },
                                    "id": 2666,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "626:8:19"
                                }
                            ],
                            "canonicalName": "Arbitrum_ParentMessenger",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 2658,
                                "nodeType": "StructuredDocumentation",
                                "src": "336:160:19",
                                "text": " @notice Sends cross chain messages from Ethereum L1 to Arbitrum L2 network.\n @dev This contract is ownable and should be owned by the DVM governor."
                            },
                            "fullyImplemented": true,
                            "id": 3003,
                            "linearizedBaseContracts": [
                                3003,
                                2650,
                                3167,
                                3190,
                                729,
                                1974,
                                3335
                            ],
                            "name": "Arbitrum_ParentMessenger",
                            "nameLocation": "506:24:19",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "anonymous": false,
                                    "id": 2670,
                                    "name": "SetDefaultGasLimit",
                                    "nameLocation": "647:18:19",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 2669,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2668,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newDefaultGasLimit",
                                                "nameLocation": "673:18:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2670,
                                                "src": "666:25:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 2667,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "666:6:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "665:27:19"
                                    },
                                    "src": "641:52:19"
                                },
                                {
                                    "anonymous": false,
                                    "id": 2674,
                                    "name": "SetDefaultMaxSubmissionCost",
                                    "nameLocation": "704:27:19",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 2673,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2672,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newMaxSubmissionCost",
                                                "nameLocation": "740:20:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2674,
                                                "src": "732:28:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2671,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "732:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "731:30:19"
                                    },
                                    "src": "698:64:19"
                                },
                                {
                                    "anonymous": false,
                                    "id": 2678,
                                    "name": "SetDefaultGasPrice",
                                    "nameLocation": "773:18:19",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 2677,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2676,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newDefaultGasPrice",
                                                "nameLocation": "800:18:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2678,
                                                "src": "792:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2675,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "792:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "791:28:19"
                                    },
                                    "src": "767:53:19"
                                },
                                {
                                    "anonymous": false,
                                    "id": 2682,
                                    "name": "SetRefundL2Address",
                                    "nameLocation": "831:18:19",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 2681,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2680,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newRefundL2Address",
                                                "nameLocation": "858:18:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2682,
                                                "src": "850:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2679,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "850:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "849:28:19"
                                    },
                                    "src": "825:53:19"
                                },
                                {
                                    "anonymous": false,
                                    "id": 2702,
                                    "name": "MessageSentToChild",
                                    "nameLocation": "889:18:19",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 2701,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2684,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "923:4:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2702,
                                                "src": "917:10:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 2683,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "917:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2686,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "targetSpoke",
                                                "nameLocation": "953:11:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2702,
                                                "src": "937:27:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2685,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "937:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2688,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "982:11:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2702,
                                                "src": "974:19:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2687,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "974:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2690,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "gasLimit",
                                                "nameLocation": "1010:8:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2702,
                                                "src": "1003:15:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 2689,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1003:6:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2692,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "gasPrice",
                                                "nameLocation": "1036:8:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2702,
                                                "src": "1028:16:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2691,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1028:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2694,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "1062:17:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2702,
                                                "src": "1054:25:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2693,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1054:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2696,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "refundL2Address",
                                                "nameLocation": "1097:15:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2702,
                                                "src": "1089:23:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2695,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1089:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2698,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "childMessenger",
                                                "nameLocation": "1138:14:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2702,
                                                "src": "1122:30:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2697,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1122:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2700,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "sequenceNumber",
                                                "nameLocation": "1170:14:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2702,
                                                "src": "1162:22:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2699,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1162:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "907:283:19"
                                    },
                                    "src": "883:308:19"
                                },
                                {
                                    "anonymous": false,
                                    "id": 2710,
                                    "name": "MessageReceivedFromChild",
                                    "nameLocation": "1202:24:19",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 2709,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2704,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "1233:4:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2710,
                                                "src": "1227:10:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 2703,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1227:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2706,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "childMessenger",
                                                "nameLocation": "1255:14:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2710,
                                                "src": "1239:30:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2705,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1239:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2708,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "targetHub",
                                                "nameLocation": "1287:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2710,
                                                "src": "1271:25:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2707,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1271:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1226:71:19"
                                    },
                                    "src": "1196:102:19"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "95368d2e",
                                    "id": 2713,
                                    "mutability": "mutable",
                                    "name": "defaultGasLimit",
                                    "nameLocation": "1637:15:19",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3003,
                                    "src": "1623:41:19",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                    },
                                    "typeName": {
                                        "id": 2711,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1623:6:19",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "355f3030305f303030",
                                        "id": 2712,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1655:9:19",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_5000000_by_1",
                                            "typeString": "int_const 5000000"
                                        },
                                        "value": "5_000_000"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "d78eb11f",
                                    "id": 2716,
                                    "mutability": "mutable",
                                    "name": "defaultMaxSubmissionCost",
                                    "nameLocation": "2170:24:19",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3003,
                                    "src": "2155:48:19",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2714,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2155:7:19",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "302e31653138",
                                        "id": 2715,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2197:6:19",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_100000000000000000_by_1",
                                            "typeString": "int_const 100000000000000000"
                                        },
                                        "value": "0.1e18"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "e7b4294c",
                                    "id": 2719,
                                    "mutability": "mutable",
                                    "name": "defaultGasPrice",
                                    "nameLocation": "2326:15:19",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3003,
                                    "src": "2311:37:19",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 2717,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2311:7:19",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "31306539",
                                        "id": 2718,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2344:4:19",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10000000000_by_1",
                                            "typeString": "int_const 10000000000"
                                        },
                                        "value": "10e9"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "bcafec13",
                                    "id": 2721,
                                    "mutability": "mutable",
                                    "name": "refundL2Address",
                                    "nameLocation": "2484:15:19",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3003,
                                    "src": "2469:30:19",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 2720,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2469:7:19",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2740,
                                        "nodeType": "Block",
                                        "src": "2916:42:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 2738,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 2735,
                                                        "name": "refundL2Address",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2721,
                                                        "src": "2926:15:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 2736,
                                                            "name": "owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 664,
                                                            "src": "2944:5:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                "typeString": "function () view returns (address)"
                                                            }
                                                        },
                                                        "id": 2737,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2944:7:19",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "2926:25:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 2739,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2926:25:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2722,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2506:263:19",
                                        "text": " @notice Construct the Optimism_ParentMessenger contract.\n @param _inbox Contract that sends generalized messages to the Arbitrum chain.\n @param _childChainId The chain id of the Optimism L2 network this messenger should connect to.*"
                                    },
                                    "id": 2741,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 2729,
                                                    "name": "_inbox",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2724,
                                                    "src": "2861:6:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 2730,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 2728,
                                                "name": "Arbitrum_CrossDomainEnabled",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3335,
                                                "src": "2833:27:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2833:35:19"
                                        },
                                        {
                                            "arguments": [
                                                {
                                                    "id": 2732,
                                                    "name": "_childChainId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2726,
                                                    "src": "2897:13:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 2733,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 2731,
                                                "name": "ParentMessengerBase",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3167,
                                                "src": "2877:19:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2877:34:19"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2727,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2724,
                                                "mutability": "mutable",
                                                "name": "_inbox",
                                                "nameLocation": "2794:6:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2741,
                                                "src": "2786:14:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2723,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2786:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2726,
                                                "mutability": "mutable",
                                                "name": "_childChainId",
                                                "nameLocation": "2810:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2741,
                                                "src": "2802:21:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2725,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2802:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2785:39:19"
                                    },
                                    "returnParameters": {
                                        "id": 2734,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2916:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "2774:184:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2759,
                                        "nodeType": "Block",
                                        "src": "3366:103:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 2753,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 2751,
                                                        "name": "refundL2Address",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2721,
                                                        "src": "3376:15:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 2752,
                                                        "name": "newRefundl2Address",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2744,
                                                        "src": "3394:18:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "3376:36:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 2754,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3376:36:19"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2756,
                                                            "name": "refundL2Address",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2721,
                                                            "src": "3446:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 2755,
                                                        "name": "SetRefundL2Address",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2682,
                                                        "src": "3427:18:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 2757,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3427:35:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2758,
                                                "nodeType": "EmitStatement",
                                                "src": "3422:40:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2742,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2964:309:19",
                                        "text": " @notice Changes the refund address on L2 that receives excess gas or the full msg.value if the retryable\n ticket reverts.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @param newRefundl2Address the new refund address to set."
                                    },
                                    "functionSelector": "816c2444",
                                    "id": 2760,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 2747,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2746,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "3341:9:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3341:9:19"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 2749,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2748,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 2616,
                                                "src": "3351:12:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3351:14:19"
                                        }
                                    ],
                                    "name": "setRefundL2Address",
                                    "nameLocation": "3287:18:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2745,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2744,
                                                "mutability": "mutable",
                                                "name": "newRefundl2Address",
                                                "nameLocation": "3314:18:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2760,
                                                "src": "3306:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2743,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3306:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3305:28:19"
                                    },
                                    "returnParameters": {
                                        "id": 2750,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3366:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "3278:191:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2778,
                                        "nodeType": "Block",
                                        "src": "3837:106:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 2772,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 2770,
                                                        "name": "defaultGasLimit",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2713,
                                                        "src": "3847:15:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 2771,
                                                        "name": "newDefaultGasLimit",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2763,
                                                        "src": "3865:18:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "src": "3847:36:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "id": 2773,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3847:36:19"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2775,
                                                            "name": "newDefaultGasLimit",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2763,
                                                            "src": "3917:18:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        ],
                                                        "id": 2774,
                                                        "name": "SetDefaultGasLimit",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2670,
                                                        "src": "3898:18:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$returns$__$",
                                                            "typeString": "function (uint32)"
                                                        }
                                                    },
                                                    "id": 2776,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3898:38:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2777,
                                                "nodeType": "EmitStatement",
                                                "src": "3893:43:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2761,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3475:270:19",
                                        "text": " @notice Changes the default gas limit that is sent along with transactions to Arbitrum.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @param newDefaultGasLimit the new L2 gas limit to be set."
                                    },
                                    "functionSelector": "524b6f70",
                                    "id": 2779,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 2766,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2765,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "3812:9:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3812:9:19"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 2768,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2767,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 2616,
                                                "src": "3822:12:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3822:14:19"
                                        }
                                    ],
                                    "name": "setDefaultGasLimit",
                                    "nameLocation": "3759:18:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2764,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2763,
                                                "mutability": "mutable",
                                                "name": "newDefaultGasLimit",
                                                "nameLocation": "3785:18:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2779,
                                                "src": "3778:25:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 2762,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3778:6:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3777:27:19"
                                    },
                                    "returnParameters": {
                                        "id": 2769,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3837:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "3750:193:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2797,
                                        "nodeType": "Block",
                                        "src": "4312:106:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 2791,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 2789,
                                                        "name": "defaultGasPrice",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2719,
                                                        "src": "4322:15:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 2790,
                                                        "name": "newDefaultGasPrice",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2782,
                                                        "src": "4340:18:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4322:36:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 2792,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4322:36:19"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2794,
                                                            "name": "newDefaultGasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2782,
                                                            "src": "4392:18:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2793,
                                                        "name": "SetDefaultGasPrice",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2678,
                                                        "src": "4373:18:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256)"
                                                        }
                                                    },
                                                    "id": 2795,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4373:38:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2796,
                                                "nodeType": "EmitStatement",
                                                "src": "4368:43:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2780,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3949:270:19",
                                        "text": " @notice Changes the default gas price that is sent along with transactions to Arbitrum.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @param newDefaultGasPrice the new L2 gas price to be set."
                                    },
                                    "functionSelector": "8b42a40a",
                                    "id": 2798,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 2785,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2784,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "4287:9:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4287:9:19"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 2787,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2786,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 2616,
                                                "src": "4297:12:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4297:14:19"
                                        }
                                    ],
                                    "name": "setDefaultGasPrice",
                                    "nameLocation": "4233:18:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2783,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2782,
                                                "mutability": "mutable",
                                                "name": "newDefaultGasPrice",
                                                "nameLocation": "4260:18:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2798,
                                                "src": "4252:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2781,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4252:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4251:28:19"
                                    },
                                    "returnParameters": {
                                        "id": 2788,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4312:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "4224:194:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2816,
                                        "nodeType": "Block",
                                        "src": "4834:142:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 2810,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 2808,
                                                        "name": "defaultMaxSubmissionCost",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2716,
                                                        "src": "4844:24:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 2809,
                                                        "name": "newDefaultMaxSubmissionCost",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2801,
                                                        "src": "4871:27:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4844:54:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 2811,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4844:54:19"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2813,
                                                            "name": "newDefaultMaxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2801,
                                                            "src": "4941:27:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2812,
                                                        "name": "SetDefaultMaxSubmissionCost",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2674,
                                                        "src": "4913:27:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256)"
                                                        }
                                                    },
                                                    "id": 2814,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4913:56:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2815,
                                                "nodeType": "EmitStatement",
                                                "src": "4908:61:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2799,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4424:299:19",
                                        "text": " @notice Changes the default max submission cost that is sent along with transactions to Arbitrum.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @param newDefaultMaxSubmissionCost the new L2 max submission cost to be set."
                                    },
                                    "functionSelector": "a0cadf0b",
                                    "id": 2817,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 2804,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2803,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "4809:9:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4809:9:19"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 2806,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2805,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 2616,
                                                "src": "4819:12:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4819:14:19"
                                        }
                                    ],
                                    "name": "setDefaultMaxSubmissionCost",
                                    "nameLocation": "4737:27:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2802,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2801,
                                                "mutability": "mutable",
                                                "name": "newDefaultMaxSubmissionCost",
                                                "nameLocation": "4773:27:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2817,
                                                "src": "4765:35:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2800,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4765:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4764:37:19"
                                    },
                                    "returnParameters": {
                                        "id": 2807,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4834:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "4728:248:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2838,
                                        "nodeType": "Block",
                                        "src": "5438:176:19",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    2826
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2826,
                                                        "mutability": "mutable",
                                                        "name": "dataSentToChild",
                                                        "nameLocation": "5461:15:19",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2838,
                                                        "src": "5448:28:19",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 2825,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5448:5:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2832,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "7365744f7261636c6553706f6b65286164647265737329",
                                                            "id": 2829,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5503:25:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_1a50ad30afe108cbd2a96ba8e9efdf0412777e51acc155ac624eb3ddaffd27a9",
                                                                "typeString": "literal_string \"setOracleSpoke(address)\""
                                                            },
                                                            "value": "setOracleSpoke(address)"
                                                        },
                                                        {
                                                            "id": 2830,
                                                            "name": "newOracleSpoke",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2820,
                                                            "src": "5530:14:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_1a50ad30afe108cbd2a96ba8e9efdf0412777e51acc155ac624eb3ddaffd27a9",
                                                                "typeString": "literal_string \"setOracleSpoke(address)\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2827,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "5479:3:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 2828,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodeWithSignature",
                                                        "nodeType": "MemberAccess",
                                                        "src": "5479:23:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (string memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 2831,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5479:66:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5448:97:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2834,
                                                            "name": "dataSentToChild",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2826,
                                                            "src": "5575:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 2835,
                                                            "name": "childMessenger",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3015,
                                                            "src": "5592:14:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 2833,
                                                        "name": "_sendMessageToChild",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3002,
                                                        "src": "5555:19:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes memory,address)"
                                                        }
                                                    },
                                                    "id": 2836,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5555:52:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2837,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5555:52:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2818,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4982:381:19",
                                        "text": " @notice Changes the address of the oracle spoke on L2 via the child messenger.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\n @param newOracleSpoke the new oracle spoke address set on L2."
                                    },
                                    "functionSelector": "acab324c",
                                    "id": 2839,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 2823,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2822,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "5428:9:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5428:9:19"
                                        }
                                    ],
                                    "name": "setChildOracleSpoke",
                                    "nameLocation": "5377:19:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2821,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2820,
                                                "mutability": "mutable",
                                                "name": "newOracleSpoke",
                                                "nameLocation": "5405:14:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2839,
                                                "src": "5397:22:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2819,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5397:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5396:24:19"
                                    },
                                    "returnParameters": {
                                        "id": 2824,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5438:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "5368:246:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2860,
                                        "nodeType": "Block",
                                        "src": "6103:184:19",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    2848
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2848,
                                                        "mutability": "mutable",
                                                        "name": "dataSentToChild",
                                                        "nameLocation": "6126:15:19",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2860,
                                                        "src": "6113:28:19",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 2847,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6113:5:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2854,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "736574506172656e744d657373656e676572286164647265737329",
                                                            "id": 2851,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6168:29:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c948564b5a04e08a6be41106ba6c1074c324a701aa17be0efb537d89edcb58c2",
                                                                "typeString": "literal_string \"setParentMessenger(address)\""
                                                            },
                                                            "value": "setParentMessenger(address)"
                                                        },
                                                        {
                                                            "id": 2852,
                                                            "name": "newParentMessenger",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2842,
                                                            "src": "6199:18:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c948564b5a04e08a6be41106ba6c1074c324a701aa17be0efb537d89edcb58c2",
                                                                "typeString": "literal_string \"setParentMessenger(address)\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2849,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "6144:3:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 2850,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodeWithSignature",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6144:23:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (string memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 2853,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6144:74:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6113:105:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2856,
                                                            "name": "dataSentToChild",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2848,
                                                            "src": "6248:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 2857,
                                                            "name": "childMessenger",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3015,
                                                            "src": "6265:14:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 2855,
                                                        "name": "_sendMessageToChild",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3002,
                                                        "src": "6228:19:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes memory,address)"
                                                        }
                                                    },
                                                    "id": 2858,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6228:52:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2859,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6228:52:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2840,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5620:400:19",
                                        "text": " @notice Changes the address of the parent messenger on L2 via the child messenger.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\n @param newParentMessenger the new parent messenger contract to be set on L2."
                                    },
                                    "functionSelector": "0e28c764",
                                    "id": 2861,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 2845,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2844,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "6093:9:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6093:9:19"
                                        }
                                    ],
                                    "name": "setChildParentMessenger",
                                    "nameLocation": "6034:23:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2843,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2842,
                                                "mutability": "mutable",
                                                "name": "newParentMessenger",
                                                "nameLocation": "6066:18:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2861,
                                                "src": "6058:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2841,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6058:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6057:28:19"
                                    },
                                    "returnParameters": {
                                        "id": 2846,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6103:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "6025:262:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        3184
                                    ],
                                    "body": {
                                        "id": 2896,
                                        "nodeType": "Block",
                                        "src": "7166:284:19",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    2873
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2873,
                                                        "mutability": "mutable",
                                                        "name": "target",
                                                        "nameLocation": "7184:6:19",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2896,
                                                        "src": "7176:14:19",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 2872,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7176:7:19",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2881,
                                                "initialValue": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 2877,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 2874,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "7193:3:19",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 2875,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "7193:10:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "id": 2876,
                                                            "name": "oracleHub",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3017,
                                                            "src": "7207:9:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "src": "7193:23:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 2879,
                                                        "name": "governorSpoke",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3023,
                                                        "src": "7233:13:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "id": 2880,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "7193:53:19",
                                                    "trueExpression": {
                                                        "id": 2878,
                                                        "name": "oracleSpoke",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3021,
                                                        "src": "7219:11:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "7176:70:19"
                                            },
                                            {
                                                "assignments": [
                                                    2883
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2883,
                                                        "mutability": "mutable",
                                                        "name": "dataSentToChild",
                                                        "nameLocation": "7269:15:19",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2896,
                                                        "src": "7256:28:19",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 2882,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7256:5:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2890,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "70726f636573734d65737361676546726f6d43726f7373436861696e506172656e742862797465732c6164647265737329",
                                                            "id": 2886,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7323:51:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_187717ceae5f70356c0fc7aaeeb6e5b749ca32403b4589c58957289741f1ec60",
                                                                "typeString": "literal_string \"processMessageFromCrossChainParent(bytes,address)\""
                                                            },
                                                            "value": "processMessageFromCrossChainParent(bytes,address)"
                                                        },
                                                        {
                                                            "id": 2887,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2864,
                                                            "src": "7376:4:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 2888,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2873,
                                                            "src": "7382:6:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_187717ceae5f70356c0fc7aaeeb6e5b749ca32403b4589c58957289741f1ec60",
                                                                "typeString": "literal_string \"processMessageFromCrossChainParent(bytes,address)\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2884,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "7299:3:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 2885,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodeWithSignature",
                                                        "nodeType": "MemberAccess",
                                                        "src": "7299:23:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (string memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 2889,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7299:90:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "7256:133:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2892,
                                                            "name": "dataSentToChild",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2883,
                                                            "src": "7419:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 2893,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2873,
                                                            "src": "7436:6:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 2891,
                                                        "name": "_sendMessageToChild",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3002,
                                                        "src": "7399:19:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes memory,address)"
                                                        }
                                                    },
                                                    "id": 2894,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7399:44:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2895,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7399:44:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2862,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6293:770:19",
                                        "text": " @notice Sends a message to the child messenger via the canonical message bridge.\n @dev The caller must be the either the OracleHub or the GovernorHub. This is to send either a\n price or initiate a governance action to the OracleSpoke or GovernorSpoke on the child network.\n @dev The recipient of this message is the child messenger. The messenger must implement processMessageFromParent\n which then forwards the data to the target either the OracleSpoke or the governorSpoke depending on the caller.\n @dev This function will only succeed if this contract has enough ETH to cover the approximate L1 call value.\n @param data data message sent to the child messenger. Should be an encoded function call or packed data."
                                    },
                                    "functionSelector": "4c09e6e8",
                                    "id": 2897,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 2868,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2867,
                                                "name": "onlyHubContract",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3060,
                                                "src": "7133:15:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "7133:17:19"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 2870,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2869,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 2616,
                                                "src": "7151:12:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "7151:14:19"
                                        }
                                    ],
                                    "name": "sendMessageToChild",
                                    "nameLocation": "7077:18:19",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 2866,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "7124:8:19"
                                    },
                                    "parameters": {
                                        "id": 2865,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2864,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "7109:4:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2897,
                                                "src": "7096:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 2863,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7096:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7095:19:19"
                                    },
                                    "returnParameters": {
                                        "id": 2871,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "7166:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "7068:382:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 2922,
                                        "nodeType": "Block",
                                        "src": "8175:176:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2912,
                                                            "name": "childChainId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3013,
                                                            "src": "8253:12:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2913,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2900,
                                                            "src": "8267:4:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2909,
                                                                    "name": "oracleHub",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3017,
                                                                    "src": "8218:9:19",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 2908,
                                                                "name": "ParentMessengerConsumerInterface",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3177,
                                                                "src": "8185:32:19",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_ParentMessengerConsumerInterface_$3177_$",
                                                                    "typeString": "type(contract ParentMessengerConsumerInterface)"
                                                                }
                                                            },
                                                            "id": 2910,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "8185:43:19",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ParentMessengerConsumerInterface_$3177",
                                                                "typeString": "contract ParentMessengerConsumerInterface"
                                                            }
                                                        },
                                                        "id": 2911,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "processMessageFromChild",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3176,
                                                        "src": "8185:67:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (uint256,bytes memory) external"
                                                        }
                                                    },
                                                    "id": 2914,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8185:87:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2915,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8185:87:19"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2917,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2900,
                                                            "src": "8312:4:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 2918,
                                                            "name": "childMessenger",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3015,
                                                            "src": "8318:14:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 2919,
                                                            "name": "oracleHub",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3017,
                                                            "src": "8334:9:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 2916,
                                                        "name": "MessageReceivedFromChild",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2710,
                                                        "src": "8287:24:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes memory,address,address)"
                                                        }
                                                    },
                                                    "id": 2920,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8287:57:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2921,
                                                "nodeType": "EmitStatement",
                                                "src": "8282:62:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2898,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7456:559:19",
                                        "text": " @notice Process a received message from the child messenger via the canonical message bridge.\n @dev The caller must be the the child messenger, sent over the canonical message bridge.\n @dev Note that only the OracleHub can receive messages from the child messenger. Therefore we can always forward\n these messages to this contract. The OracleHub must implement processMessageFromChild to handle this message.\n @param data data message sent from the child messenger. Should be an encoded function call or packed data."
                                    },
                                    "functionSelector": "109ff9a9",
                                    "id": 2923,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 2903,
                                                    "name": "childMessenger",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3015,
                                                    "src": "8132:14:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 2904,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2902,
                                                "name": "onlyFromCrossDomainAccount",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3334,
                                                "src": "8105:26:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "8105:42:19"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 2906,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2905,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 2616,
                                                "src": "8156:12:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "8156:14:19"
                                        }
                                    ],
                                    "name": "processMessageFromCrossChainChild",
                                    "nameLocation": "8029:33:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2901,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2900,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "8076:4:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2923,
                                                "src": "8063:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 2899,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8063:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8062:19:19"
                                    },
                                    "returnParameters": {
                                        "id": 2907,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8175:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "8020:331:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        3166,
                                        3189
                                    ],
                                    "body": {
                                        "id": 2937,
                                        "nodeType": "Block",
                                        "src": "8797:41:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 2934,
                                                        "name": "_getL1CallValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2954,
                                                        "src": "8814:15:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                            "typeString": "function () view returns (uint256)"
                                                        }
                                                    },
                                                    "id": 2935,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8814:17:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 2933,
                                                "id": 2936,
                                                "nodeType": "Return",
                                                "src": "8807:24:19"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2924,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8357:260:19",
                                        "text": " @notice This function is expected to be queried by Hub contracts that need to determine how much ETH\n to include in msg.value when calling `sendMessageToChild`.\n @return Amount of msg.value to include to send cross-chain message."
                                    },
                                    "functionSelector": "08f1ed15",
                                    "id": 2938,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 2930,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 2929,
                                                "name": "nonReentrantView",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 2624,
                                                "src": "8748:16:19"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "8748:18:19"
                                        }
                                    ],
                                    "name": "getL1CallValue",
                                    "nameLocation": "8631:14:19",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 2928,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [
                                            {
                                                "id": 2926,
                                                "name": "ParentMessengerBase",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3167,
                                                "src": "8693:19:19"
                                            },
                                            {
                                                "id": 2927,
                                                "name": "ParentMessengerInterface",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3190,
                                                "src": "8714:24:19"
                                            }
                                        ],
                                        "src": "8684:55:19"
                                    },
                                    "parameters": {
                                        "id": 2925,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8645:2:19"
                                    },
                                    "returnParameters": {
                                        "id": 2933,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2932,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2938,
                                                "src": "8784:7:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2931,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8784:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8783:9:19"
                                    },
                                    "scope": 3003,
                                    "src": "8622:216:19",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2941,
                                        "nodeType": "Block",
                                        "src": "9226:2:19",
                                        "statements": []
                                    },
                                    "id": 2942,
                                    "implemented": true,
                                    "kind": "fallback",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2939,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "9206:2:19"
                                    },
                                    "returnParameters": {
                                        "id": 2940,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "9226:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "9198:30:19",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 2953,
                                        "nodeType": "Block",
                                        "src": "9462:235:19",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2951,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2947,
                                                        "name": "defaultMaxSubmissionCost",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2716,
                                                        "src": "9630:24:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 2950,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 2948,
                                                            "name": "defaultGasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2719,
                                                            "src": "9657:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "id": 2949,
                                                            "name": "defaultGasLimit",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2713,
                                                            "src": "9675:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        "src": "9657:33:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9630:60:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 2946,
                                                "id": 2952,
                                                "nodeType": "Return",
                                                "src": "9623:67:19"
                                            }
                                        ]
                                    },
                                    "id": 2954,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getL1CallValue",
                                    "nameLocation": "9412:15:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2943,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "9427:2:19"
                                    },
                                    "returnParameters": {
                                        "id": 2946,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2945,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2954,
                                                "src": "9453:7:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2944,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9453:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9452:9:19"
                                    },
                                    "scope": 3003,
                                    "src": "9403:294:19",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3001,
                                        "nodeType": "Block",
                                        "src": "9887:755:19",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    2962
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2962,
                                                        "mutability": "mutable",
                                                        "name": "requiredL1CallValue",
                                                        "nameLocation": "9905:19:19",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3001,
                                                        "src": "9897:27:19",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2961,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9897:7:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2965,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 2963,
                                                        "name": "_getL1CallValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2954,
                                                        "src": "9927:15:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                            "typeString": "function () view returns (uint256)"
                                                        }
                                                    },
                                                    "id": 2964,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9927:17:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9897:47:19"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2973,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 2969,
                                                                            "name": "this",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -28,
                                                                            "src": "9970:4:19",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_Arbitrum_ParentMessenger_$3003",
                                                                                "typeString": "contract Arbitrum_ParentMessenger"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_Arbitrum_ParentMessenger_$3003",
                                                                                "typeString": "contract Arbitrum_ParentMessenger"
                                                                            }
                                                                        ],
                                                                        "id": 2968,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "9962:7:19",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 2967,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "9962:7:19",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 2970,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "9962:13:19",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "id": 2971,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "balance",
                                                                "nodeType": "MemberAccess",
                                                                "src": "9962:21:19",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 2972,
                                                                "name": "requiredL1CallValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2962,
                                                                "src": "9987:19:19",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "9962:44:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e73756666696369656e74204554482062616c616e6365",
                                                            "id": 2974,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "10008:26:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_70ee5ddf30f34aa4e2eb2bd0652d4a9466378abefb991f116e502fdb578d384e",
                                                                "typeString": "literal_string \"Insufficient ETH balance\""
                                                            },
                                                            "value": "Insufficient ETH balance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_70ee5ddf30f34aa4e2eb2bd0652d4a9466378abefb991f116e502fdb578d384e",
                                                                "typeString": "literal_string \"Insufficient ETH balance\""
                                                            }
                                                        ],
                                                        "id": 2966,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "9954:7:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 2975,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9954:81:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2976,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9954:81:19"
                                            },
                                            {
                                                "assignments": [
                                                    2978
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2978,
                                                        "mutability": "mutable",
                                                        "name": "seqNumber",
                                                        "nameLocation": "10054:9:19",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3001,
                                                        "src": "10046:17:19",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2977,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "10046:7:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2988,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 2980,
                                                            "name": "childMessenger",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3015,
                                                            "src": "10117:14:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 2981,
                                                            "name": "refundL2Address",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2721,
                                                            "src": "10149:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 2982,
                                                            "name": "requiredL1CallValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2962,
                                                            "src": "10182:19:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2983,
                                                            "name": "defaultMaxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2716,
                                                            "src": "10219:24:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2984,
                                                            "name": "defaultGasLimit",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2713,
                                                            "src": "10261:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 2985,
                                                            "name": "defaultGasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2719,
                                                            "src": "10294:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2986,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2956,
                                                            "src": "10327:4:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 2979,
                                                        "name": "sendTxToL2NoAliassing",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3291,
                                                        "src": "10078:21:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                                            "typeString": "function (address,address,uint256,uint256,uint256,uint256,bytes memory) returns (uint256)"
                                                        }
                                                    },
                                                    "id": 2987,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "10078:267:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "10046:299:19"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 2990,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2956,
                                                            "src": "10392:4:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 2991,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2958,
                                                            "src": "10410:6:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 2992,
                                                            "name": "requiredL1CallValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2962,
                                                            "src": "10430:19:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2993,
                                                            "name": "defaultGasLimit",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2713,
                                                            "src": "10463:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 2994,
                                                            "name": "defaultGasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2719,
                                                            "src": "10492:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2995,
                                                            "name": "defaultMaxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2716,
                                                            "src": "10521:24:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 2996,
                                                            "name": "refundL2Address",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2721,
                                                            "src": "10559:15:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 2997,
                                                            "name": "childMessenger",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3015,
                                                            "src": "10588:14:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 2998,
                                                            "name": "seqNumber",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2978,
                                                            "src": "10616:9:19",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2989,
                                                        "name": "MessageSentToChild",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2702,
                                                        "src": "10360:18:19",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_address_$_t_uint256_$_t_uint32_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (bytes memory,address,uint256,uint32,uint256,uint256,address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 2999,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "10360:275:19",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3000,
                                                "nodeType": "EmitStatement",
                                                "src": "10355:280:19"
                                            }
                                        ]
                                    },
                                    "id": 3002,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_sendMessageToChild",
                                    "nameLocation": "9823:19:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2959,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2956,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "9856:4:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3002,
                                                "src": "9843:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 2955,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9843:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2958,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "9870:6:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3002,
                                                "src": "9862:14:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 2957,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9862:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9842:35:19"
                                    },
                                    "returnParameters": {
                                        "id": 2960,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "9887:0:19"
                                    },
                                    "scope": 3003,
                                    "src": "9814:828:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 3004,
                            "src": "497:10147:19",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:10603:19"
                },
                "id": 19
            },
            "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol": {
                "ast": {
                    "absolutePath": "@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol",
                    "exportedSymbols": {
                        "Context": [
                            1974
                        ],
                        "Ownable": [
                            729
                        ],
                        "ParentMessengerBase": [
                            3167
                        ],
                        "ParentMessengerInterface": [
                            3190
                        ]
                    },
                    "id": 3168,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3005,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:20"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                            "file": "@openzeppelin/contracts/access/Ownable.sol",
                            "id": 3006,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3168,
                            "sourceUnit": 730,
                            "src": "67:52:20",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol",
                            "file": "../interfaces/ParentMessengerInterface.sol",
                            "id": 3007,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3168,
                            "sourceUnit": 3191,
                            "src": "120:52:20",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 3008,
                                        "name": "Ownable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 729,
                                        "src": "215:7:20"
                                    },
                                    "id": 3009,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "215:7:20"
                                },
                                {
                                    "baseName": {
                                        "id": 3010,
                                        "name": "ParentMessengerInterface",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 3190,
                                        "src": "224:24:20"
                                    },
                                    "id": 3011,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "224:24:20"
                                }
                            ],
                            "canonicalName": "ParentMessengerBase",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": false,
                            "id": 3167,
                            "linearizedBaseContracts": [
                                3167,
                                3190,
                                729,
                                1974
                            ],
                            "name": "ParentMessengerBase",
                            "nameLocation": "192:19:20",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "b14b0f56",
                                    "id": 3013,
                                    "mutability": "mutable",
                                    "name": "childChainId",
                                    "nameLocation": "270:12:20",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3167,
                                    "src": "255:27:20",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3012,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "255:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "5f234d53",
                                    "id": 3015,
                                    "mutability": "mutable",
                                    "name": "childMessenger",
                                    "nameLocation": "304:14:20",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3167,
                                    "src": "289:29:20",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3014,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "289:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "73d62b46",
                                    "id": 3017,
                                    "mutability": "mutable",
                                    "name": "oracleHub",
                                    "nameLocation": "340:9:20",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3167,
                                    "src": "325:24:20",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3016,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "325:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "8d09550e",
                                    "id": 3019,
                                    "mutability": "mutable",
                                    "name": "governorHub",
                                    "nameLocation": "370:11:20",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3167,
                                    "src": "355:26:20",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3018,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "355:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "98e1e16f",
                                    "id": 3021,
                                    "mutability": "mutable",
                                    "name": "oracleSpoke",
                                    "nameLocation": "403:11:20",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3167,
                                    "src": "388:26:20",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3020,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "388:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "7092a2b2",
                                    "id": 3023,
                                    "mutability": "mutable",
                                    "name": "governorSpoke",
                                    "nameLocation": "435:13:20",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3167,
                                    "src": "420:28:20",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3022,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "420:7:20",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "id": 3027,
                                    "name": "SetChildMessenger",
                                    "nameLocation": "461:17:20",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 3026,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3025,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "childMessenger",
                                                "nameLocation": "495:14:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3027,
                                                "src": "479:30:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3024,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "479:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "478:32:20"
                                    },
                                    "src": "455:56:20"
                                },
                                {
                                    "anonymous": false,
                                    "id": 3031,
                                    "name": "SetOracleHub",
                                    "nameLocation": "522:12:20",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 3030,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3029,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "oracleHub",
                                                "nameLocation": "551:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3031,
                                                "src": "535:25:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3028,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "535:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "534:27:20"
                                    },
                                    "src": "516:46:20"
                                },
                                {
                                    "anonymous": false,
                                    "id": 3035,
                                    "name": "SetGovernorHub",
                                    "nameLocation": "573:14:20",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 3034,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3033,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "governorHub",
                                                "nameLocation": "604:11:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3035,
                                                "src": "588:27:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3032,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "588:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "587:29:20"
                                    },
                                    "src": "567:50:20"
                                },
                                {
                                    "anonymous": false,
                                    "id": 3039,
                                    "name": "SetOracleSpoke",
                                    "nameLocation": "628:14:20",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 3038,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3037,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "oracleSpoke",
                                                "nameLocation": "659:11:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3039,
                                                "src": "643:27:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3036,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "643:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "642:29:20"
                                    },
                                    "src": "622:50:20"
                                },
                                {
                                    "anonymous": false,
                                    "id": 3043,
                                    "name": "SetGovernorSpoke",
                                    "nameLocation": "683:16:20",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 3042,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3041,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "governorSpoke",
                                                "nameLocation": "716:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3043,
                                                "src": "700:29:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3040,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "700:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "699:31:20"
                                    },
                                    "src": "677:54:20"
                                },
                                {
                                    "body": {
                                        "id": 3059,
                                        "nodeType": "Block",
                                        "src": "764:115:20",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 3054,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                "id": 3049,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 3046,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "782:3:20",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 3047,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "782:10:20",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "id": 3048,
                                                                    "name": "oracleHub",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3017,
                                                                    "src": "796:9:20",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "782:23:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "||",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                "id": 3053,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 3050,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "809:3:20",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 3051,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "809:10:20",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "id": 3052,
                                                                    "name": "governorHub",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3019,
                                                                    "src": "823:11:20",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "809:25:20",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "782:52:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f6e6c792070726976696c656765642063616c6c6572",
                                                            "id": 3055,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "836:24:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_dce940e9463884772b08b5c2d125d003dd63aee1d70e14047fe87aa68736c951",
                                                                "typeString": "literal_string \"Only privileged caller\""
                                                            },
                                                            "value": "Only privileged caller"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_dce940e9463884772b08b5c2d125d003dd63aee1d70e14047fe87aa68736c951",
                                                                "typeString": "literal_string \"Only privileged caller\""
                                                            }
                                                        ],
                                                        "id": 3045,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "774:7:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 3056,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "774:87:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3057,
                                                "nodeType": "ExpressionStatement",
                                                "src": "774:87:20"
                                            },
                                            {
                                                "id": 3058,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "871:1:20"
                                            }
                                        ]
                                    },
                                    "id": 3060,
                                    "name": "onlyHubContract",
                                    "nameLocation": "746:15:20",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 3044,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "761:2:20"
                                    },
                                    "src": "737:142:20",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3070,
                                        "nodeType": "Block",
                                        "src": "1089:45:20",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3068,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3066,
                                                        "name": "childChainId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3013,
                                                        "src": "1099:12:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 3067,
                                                        "name": "_childChainId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3063,
                                                        "src": "1114:13:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "1099:28:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 3069,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1099:28:20"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3061,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "885:164:20",
                                        "text": " @notice Construct the ParentMessengerBase contract.\n @param _childChainId The chain id of the L2 network this messenger should connect to.*"
                                    },
                                    "id": 3071,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3064,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3063,
                                                "mutability": "mutable",
                                                "name": "_childChainId",
                                                "nameLocation": "1074:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3071,
                                                "src": "1066:21:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3062,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1066:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1065:23:20"
                                    },
                                    "returnParameters": {
                                        "id": 3065,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1089:0:20"
                                    },
                                    "scope": 3167,
                                    "src": "1054:80:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3087,
                                        "nodeType": "Block",
                                        "src": "1569:99:20",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3081,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3079,
                                                        "name": "childMessenger",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3015,
                                                        "src": "1579:14:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 3080,
                                                        "name": "newChildMessenger",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3074,
                                                        "src": "1596:17:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "1579:34:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 3082,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1579:34:20"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 3084,
                                                            "name": "childMessenger",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3015,
                                                            "src": "1646:14:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 3083,
                                                        "name": "SetChildMessenger",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3027,
                                                        "src": "1628:17:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 3085,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1628:33:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3086,
                                                "nodeType": "EmitStatement",
                                                "src": "1623:38:20"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3072,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1217:276:20",
                                        "text": " @notice Changes the stored address of the child messenger, deployed on L2.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @param newChildMessenger address of the new child messenger, deployed on L2."
                                    },
                                    "functionSelector": "81e8ea46",
                                    "id": 3088,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 3077,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 3076,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "1559:9:20"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1559:9:20"
                                        }
                                    ],
                                    "name": "setChildMessenger",
                                    "nameLocation": "1507:17:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3075,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3074,
                                                "mutability": "mutable",
                                                "name": "newChildMessenger",
                                                "nameLocation": "1533:17:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3088,
                                                "src": "1525:25:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3073,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1525:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1524:27:20"
                                    },
                                    "returnParameters": {
                                        "id": 3078,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1569:0:20"
                                    },
                                    "scope": 3167,
                                    "src": "1498:170:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 3104,
                                        "nodeType": "Block",
                                        "src": "2010:79:20",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3098,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3096,
                                                        "name": "oracleHub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3017,
                                                        "src": "2020:9:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 3097,
                                                        "name": "newOracleHub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3091,
                                                        "src": "2032:12:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "2020:24:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 3099,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2020:24:20"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 3101,
                                                            "name": "oracleHub",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3017,
                                                            "src": "2072:9:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 3100,
                                                        "name": "SetOracleHub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3031,
                                                        "src": "2059:12:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 3102,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2059:23:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3103,
                                                "nodeType": "EmitStatement",
                                                "src": "2054:28:20"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3089,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1674:270:20",
                                        "text": " @notice Changes the stored address of the Oracle hub, deployed on L1.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @param newOracleHub address of the new oracle hub, deployed on L1 Ethereum."
                                    },
                                    "functionSelector": "62315c42",
                                    "id": 3105,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 3094,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 3093,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "2000:9:20"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2000:9:20"
                                        }
                                    ],
                                    "name": "setOracleHub",
                                    "nameLocation": "1958:12:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3092,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3091,
                                                "mutability": "mutable",
                                                "name": "newOracleHub",
                                                "nameLocation": "1979:12:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3105,
                                                "src": "1971:20:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3090,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1971:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1970:22:20"
                                    },
                                    "returnParameters": {
                                        "id": 3095,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2010:0:20"
                                    },
                                    "scope": 3167,
                                    "src": "1949:140:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 3121,
                                        "nodeType": "Block",
                                        "src": "2441:87:20",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3115,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3113,
                                                        "name": "governorHub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3019,
                                                        "src": "2451:11:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 3114,
                                                        "name": "newGovernorHub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3108,
                                                        "src": "2465:14:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "2451:28:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 3116,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2451:28:20"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 3118,
                                                            "name": "governorHub",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3019,
                                                            "src": "2509:11:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 3117,
                                                        "name": "SetGovernorHub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3035,
                                                        "src": "2494:14:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 3119,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2494:27:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3120,
                                                "nodeType": "EmitStatement",
                                                "src": "2489:32:20"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3106,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2095:276:20",
                                        "text": " @notice Changes the stored address of the Governor hub, deployed on L1.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @param newGovernorHub address of the new governor hub, deployed on L1 Ethereum."
                                    },
                                    "functionSelector": "0a2b5e03",
                                    "id": 3122,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 3111,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 3110,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "2431:9:20"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2431:9:20"
                                        }
                                    ],
                                    "name": "setGovernorHub",
                                    "nameLocation": "2385:14:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3109,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3108,
                                                "mutability": "mutable",
                                                "name": "newGovernorHub",
                                                "nameLocation": "2408:14:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3122,
                                                "src": "2400:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3107,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2400:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2399:24:20"
                                    },
                                    "returnParameters": {
                                        "id": 3112,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2441:0:20"
                                    },
                                    "scope": 3167,
                                    "src": "2376:152:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 3138,
                                        "nodeType": "Block",
                                        "src": "2871:87:20",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3132,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3130,
                                                        "name": "oracleSpoke",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3021,
                                                        "src": "2881:11:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 3131,
                                                        "name": "newOracleSpoke",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3125,
                                                        "src": "2895:14:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "2881:28:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 3133,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2881:28:20"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 3135,
                                                            "name": "oracleSpoke",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3021,
                                                            "src": "2939:11:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 3134,
                                                        "name": "SetOracleSpoke",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3039,
                                                        "src": "2924:14:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 3136,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2924:27:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3137,
                                                "nodeType": "EmitStatement",
                                                "src": "2919:32:20"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3123,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2534:267:20",
                                        "text": " @notice Changes the stored address of the oracle spoke, deployed on L2.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @param newOracleSpoke address of the new oracle spoke, deployed on L2."
                                    },
                                    "functionSelector": "1a50ad30",
                                    "id": 3139,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 3128,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 3127,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "2861:9:20"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2861:9:20"
                                        }
                                    ],
                                    "name": "setOracleSpoke",
                                    "nameLocation": "2815:14:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3126,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3125,
                                                "mutability": "mutable",
                                                "name": "newOracleSpoke",
                                                "nameLocation": "2838:14:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3139,
                                                "src": "2830:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3124,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2830:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2829:24:20"
                                    },
                                    "returnParameters": {
                                        "id": 3129,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2871:0:20"
                                    },
                                    "scope": 3167,
                                    "src": "2806:152:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 3155,
                                        "nodeType": "Block",
                                        "src": "3311:95:20",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3149,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3147,
                                                        "name": "governorSpoke",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3023,
                                                        "src": "3321:13:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 3148,
                                                        "name": "newGovernorSpoke",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3142,
                                                        "src": "3337:16:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "3321:32:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 3150,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3321:32:20"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 3152,
                                                            "name": "governorSpoke",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3023,
                                                            "src": "3385:13:20",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 3151,
                                                        "name": "SetGovernorSpoke",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3043,
                                                        "src": "3368:16:20",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 3153,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3368:31:20",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3154,
                                                "nodeType": "EmitStatement",
                                                "src": "3363:36:20"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3140,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2964:273:20",
                                        "text": " @notice Changes the stored address of the governor spoke, deployed on L2.\n @dev The caller of this function must be the owner. This should be set to the DVM governor.\n @param newGovernorSpoke address of the new governor spoke, deployed on L2."
                                    },
                                    "functionSelector": "c75ba1f4",
                                    "id": 3156,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 3145,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 3144,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "3301:9:20"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3301:9:20"
                                        }
                                    ],
                                    "name": "setGovernorSpoke",
                                    "nameLocation": "3251:16:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3143,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3142,
                                                "mutability": "mutable",
                                                "name": "newGovernorSpoke",
                                                "nameLocation": "3276:16:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3156,
                                                "src": "3268:24:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3141,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3268:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3267:26:20"
                                    },
                                    "returnParameters": {
                                        "id": 3146,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3311:0:20"
                                    },
                                    "scope": 3167,
                                    "src": "3242:164:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        3189
                                    ],
                                    "body": {
                                        "id": 3165,
                                        "nodeType": "Block",
                                        "src": "3733:25:20",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "hexValue": "30",
                                                    "id": 3163,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3750:1:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "functionReturnParameters": 3162,
                                                "id": 3164,
                                                "nodeType": "Return",
                                                "src": "3743:8:20"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3157,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3412:241:20",
                                        "text": " @notice Returns the amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`.\n @return The amount of ETH required for a caller to pass as msg.value when calling `sendMessageToChild`."
                                    },
                                    "functionSelector": "08f1ed15",
                                    "id": 3166,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getL1CallValue",
                                    "nameLocation": "3667:14:20",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 3159,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3706:8:20"
                                    },
                                    "parameters": {
                                        "id": 3158,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3681:2:20"
                                    },
                                    "returnParameters": {
                                        "id": 3162,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3161,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3166,
                                                "src": "3724:7:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3160,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3724:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3723:9:20"
                                    },
                                    "scope": 3167,
                                    "src": "3658:100:20",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 3168,
                            "src": "174:3586:20",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:3719:20"
                },
                "id": 20
            },
            "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol": {
                "ast": {
                    "absolutePath": "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol",
                    "exportedSymbols": {
                        "ParentMessengerConsumerInterface": [
                            3177
                        ]
                    },
                    "id": 3178,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3169,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:21"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "ParentMessengerConsumerInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 3177,
                            "linearizedBaseContracts": [
                                3177
                            ],
                            "name": "ParentMessengerConsumerInterface",
                            "nameLocation": "77:32:21",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "6423b60e",
                                    "id": 3176,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "processMessageFromChild",
                                    "nameLocation": "207:23:21",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3174,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3171,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "239:7:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3176,
                                                "src": "231:15:21",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3170,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "231:7:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3173,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "261:4:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3176,
                                                "src": "248:17:21",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3172,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "248:5:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "230:36:21"
                                    },
                                    "returnParameters": {
                                        "id": 3175,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "275:0:21"
                                    },
                                    "scope": 3177,
                                    "src": "198:78:21",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 3178,
                            "src": "67:211:21",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:237:21"
                },
                "id": 21
            },
            "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol": {
                "ast": {
                    "absolutePath": "@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol",
                    "exportedSymbols": {
                        "ParentMessengerInterface": [
                            3190
                        ]
                    },
                    "id": 3191,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3179,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:22"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "ParentMessengerInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 3190,
                            "linearizedBaseContracts": [
                                3190
                            ],
                            "name": "ParentMessengerInterface",
                            "nameLocation": "77:24:22",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "4c09e6e8",
                                    "id": 3184,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendMessageToChild",
                                    "nameLocation": "195:18:22",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3182,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3181,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "227:4:22",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3184,
                                                "src": "214:17:22",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3180,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "214:5:22",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "213:19:22"
                                    },
                                    "returnParameters": {
                                        "id": 3183,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "241:0:22"
                                    },
                                    "scope": 3190,
                                    "src": "186:56:22",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "08f1ed15",
                                    "id": 3189,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getL1CallValue",
                                    "nameLocation": "346:14:22",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3185,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "360:2:22"
                                    },
                                    "returnParameters": {
                                        "id": 3188,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3187,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3189,
                                                "src": "386:7:22",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3186,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "386:7:22",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "385:9:22"
                                    },
                                    "scope": 3190,
                                    "src": "337:58:22",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 3191,
                            "src": "67:330:22",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:356:22"
                },
                "id": 22
            },
            "@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol": {
                "ast": {
                    "absolutePath": "@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol",
                    "exportedSymbols": {
                        "IBridge": [
                            3198
                        ],
                        "iArbitrum_Inbox": [
                            3225
                        ]
                    },
                    "id": 3226,
                    "license": "Apache-2.0",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3192,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "40:23:23"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IBridge",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 3198,
                            "linearizedBaseContracts": [
                                3198
                            ],
                            "name": "IBridge",
                            "nameLocation": "75:7:23",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "ab5d8943",
                                    "id": 3197,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "activeOutbox",
                                    "nameLocation": "98:12:23",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3193,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "110:2:23"
                                    },
                                    "returnParameters": {
                                        "id": 3196,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3195,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3197,
                                                "src": "136:7:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3194,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "136:7:23",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "135:9:23"
                                    },
                                    "scope": 3198,
                                    "src": "89:56:23",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 3226,
                            "src": "65:82:23",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "iArbitrum_Inbox",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 3225,
                            "linearizedBaseContracts": [
                                3225
                            ],
                            "name": "iArbitrum_Inbox",
                            "nameLocation": "159:15:23",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "1b871c8d",
                                    "id": 3219,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "createRetryableTicketNoRefundAliasRewrite",
                                    "nameLocation": "820:41:23",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3215,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3200,
                                                "mutability": "mutable",
                                                "name": "destAddr",
                                                "nameLocation": "879:8:23",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3219,
                                                "src": "871:16:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3199,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "871:7:23",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3202,
                                                "mutability": "mutable",
                                                "name": "l2CallValue",
                                                "nameLocation": "905:11:23",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3219,
                                                "src": "897:19:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3201,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "897:7:23",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3204,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "934:17:23",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3219,
                                                "src": "926:25:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3203,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "926:7:23",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3206,
                                                "mutability": "mutable",
                                                "name": "excessFeeRefundAddress",
                                                "nameLocation": "969:22:23",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3219,
                                                "src": "961:30:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3205,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "961:7:23",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3208,
                                                "mutability": "mutable",
                                                "name": "callValueRefundAddress",
                                                "nameLocation": "1009:22:23",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3219,
                                                "src": "1001:30:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3207,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1001:7:23",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3210,
                                                "mutability": "mutable",
                                                "name": "maxGas",
                                                "nameLocation": "1049:6:23",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3219,
                                                "src": "1041:14:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3209,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1041:7:23",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3212,
                                                "mutability": "mutable",
                                                "name": "gasPriceBid",
                                                "nameLocation": "1073:11:23",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3219,
                                                "src": "1065:19:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3211,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1065:7:23",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3214,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "1109:4:23",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3219,
                                                "src": "1094:19:23",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3213,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1094:5:23",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "861:258:23"
                                    },
                                    "returnParameters": {
                                        "id": 3218,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3217,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3219,
                                                "src": "1146:7:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3216,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1146:7:23",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1145:9:23"
                                    },
                                    "scope": 3225,
                                    "src": "811:344:23",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "e78cea92",
                                    "id": 3224,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "bridge",
                                    "nameLocation": "1170:6:23",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3220,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1176:2:23"
                                    },
                                    "returnParameters": {
                                        "id": 3223,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3222,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3224,
                                                "src": "1202:7:23",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3221,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1202:7:23",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1201:9:23"
                                    },
                                    "scope": 3225,
                                    "src": "1161:50:23",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 3226,
                            "src": "149:1064:23",
                            "usedErrors": []
                        }
                    ],
                    "src": "40:1174:23"
                },
                "id": 23
            },
            "@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol": {
                "ast": {
                    "absolutePath": "@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol",
                    "exportedSymbols": {
                        "iArbitrum_Outbox": [
                            3233
                        ]
                    },
                    "id": 3234,
                    "license": "Apache-2.0",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3227,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "863:23:24"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "iArbitrum_Outbox",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 3233,
                            "linearizedBaseContracts": [
                                3233
                            ],
                            "name": "iArbitrum_Outbox",
                            "nameLocation": "898:16:24",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "80648b02",
                                    "id": 3232,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "l2ToL1Sender",
                                    "nameLocation": "930:12:24",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3228,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "942:2:24"
                                    },
                                    "returnParameters": {
                                        "id": 3231,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3230,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3232,
                                                "src": "968:7:24",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3229,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "968:7:24",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "967:9:24"
                                    },
                                    "scope": 3233,
                                    "src": "921:56:24",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 3234,
                            "src": "888:91:24",
                            "usedErrors": []
                        }
                    ],
                    "src": "863:117:24"
                },
                "id": 24
            },
            "@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol": {
                "ast": {
                    "absolutePath": "@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol",
                    "exportedSymbols": {
                        "Arbitrum_CrossDomainEnabled": [
                            3335
                        ],
                        "IBridge": [
                            3198
                        ],
                        "iArbitrum_Inbox": [
                            3225
                        ],
                        "iArbitrum_Outbox": [
                            3233
                        ]
                    },
                    "id": 3336,
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3235,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "195:23:25"
                        },
                        {
                            "absolutePath": "@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol",
                            "file": "../../external/avm/interfaces/iArbitrum_Inbox.sol",
                            "id": 3236,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3336,
                            "sourceUnit": 3226,
                            "src": "220:59:25",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol",
                            "file": "../../external/avm/interfaces/iArbitrum_Outbox.sol",
                            "id": 3237,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3336,
                            "sourceUnit": 3234,
                            "src": "280:60:25",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "Arbitrum_CrossDomainEnabled",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 3335,
                            "linearizedBaseContracts": [
                                3335
                            ],
                            "name": "Arbitrum_CrossDomainEnabled",
                            "nameLocation": "360:27:25",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "fb0e722b",
                                    "id": 3240,
                                    "mutability": "immutable",
                                    "name": "inbox",
                                    "nameLocation": "427:5:25",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3335,
                                    "src": "394:38:25",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_iArbitrum_Inbox_$3225",
                                        "typeString": "contract iArbitrum_Inbox"
                                    },
                                    "typeName": {
                                        "id": 3239,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 3238,
                                            "name": "iArbitrum_Inbox",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 3225,
                                            "src": "394:15:25"
                                        },
                                        "referencedDeclaration": 3225,
                                        "src": "394:15:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_iArbitrum_Inbox_$3225",
                                            "typeString": "contract iArbitrum_Inbox"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 3252,
                                        "nodeType": "Block",
                                        "src": "568:48:25",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3250,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3246,
                                                        "name": "inbox",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3240,
                                                        "src": "578:5:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_iArbitrum_Inbox_$3225",
                                                            "typeString": "contract iArbitrum_Inbox"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 3248,
                                                                "name": "_inbox",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3243,
                                                                "src": "602:6:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 3247,
                                                            "name": "iArbitrum_Inbox",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3225,
                                                            "src": "586:15:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_iArbitrum_Inbox_$3225_$",
                                                                "typeString": "type(contract iArbitrum_Inbox)"
                                                            }
                                                        },
                                                        "id": 3249,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "586:23:25",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_iArbitrum_Inbox_$3225",
                                                            "typeString": "contract iArbitrum_Inbox"
                                                        }
                                                    },
                                                    "src": "578:31:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_iArbitrum_Inbox_$3225",
                                                        "typeString": "contract iArbitrum_Inbox"
                                                    }
                                                },
                                                "id": 3251,
                                                "nodeType": "ExpressionStatement",
                                                "src": "578:31:25"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3241,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "439:96:25",
                                        "text": " @param _inbox Contract that sends generalized messages to the Arbitrum chain."
                                    },
                                    "id": 3253,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3244,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3243,
                                                "mutability": "mutable",
                                                "name": "_inbox",
                                                "nameLocation": "560:6:25",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3253,
                                                "src": "552:14:25",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3242,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "552:7:25",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "551:16:25"
                                    },
                                    "returnParameters": {
                                        "id": 3245,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "568:0:25"
                                    },
                                    "scope": 3335,
                                    "src": "540:76:25",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3290,
                                        "nodeType": "Block",
                                        "src": "1808:1423:25",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    3273
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3273,
                                                        "mutability": "mutable",
                                                        "name": "seqNum",
                                                        "nameLocation": "2859:6:25",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3290,
                                                        "src": "2851:14:25",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 3272,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2851:7:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3287,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 3278,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3255,
                                                            "src": "2967:6:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "30",
                                                            "id": 3279,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2991:1:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        {
                                                            "id": 3280,
                                                            "name": "maxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3261,
                                                            "src": "3051:17:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 3281,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3257,
                                                            "src": "3086:4:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 3282,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3257,
                                                            "src": "3108:4:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 3283,
                                                            "name": "maxGas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3263,
                                                            "src": "3130:6:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 3284,
                                                            "name": "gasPriceBid",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3265,
                                                            "src": "3154:11:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 3285,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3267,
                                                            "src": "3183:4:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 3274,
                                                                "name": "inbox",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3240,
                                                                "src": "2880:5:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_iArbitrum_Inbox_$3225",
                                                                    "typeString": "contract iArbitrum_Inbox"
                                                                }
                                                            },
                                                            "id": 3275,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "createRetryableTicketNoRefundAliasRewrite",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3219,
                                                            "src": "2880:47:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                                                "typeString": "function (address,uint256,uint256,address,address,uint256,uint256,bytes memory) payable external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 3277,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "names": [
                                                            "value"
                                                        ],
                                                        "nodeType": "FunctionCallOptions",
                                                        "options": [
                                                            {
                                                                "id": 3276,
                                                                "name": "l1CallValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3259,
                                                                "src": "2936:11:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "src": "2880:69:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$value",
                                                            "typeString": "function (address,uint256,uint256,address,address,uint256,uint256,bytes memory) payable external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 3286,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2880:321:25",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2851:350:25"
                                            },
                                            {
                                                "expression": {
                                                    "id": 3288,
                                                    "name": "seqNum",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3273,
                                                    "src": "3218:6:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 3271,
                                                "id": 3289,
                                                "nodeType": "Return",
                                                "src": "3211:13:25"
                                            }
                                        ]
                                    },
                                    "id": 3291,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendTxToL2NoAliassing",
                                    "nameLocation": "964:21:25",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3268,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3255,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "1003:6:25",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3291,
                                                "src": "995:14:25",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3254,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "995:7:25",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3257,
                                                "mutability": "mutable",
                                                "name": "user",
                                                "nameLocation": "1077:4:25",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3291,
                                                "src": "1069:12:25",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3256,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1069:7:25",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3259,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "1146:11:25",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3291,
                                                "src": "1138:19:25",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3258,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1138:7:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3261,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "1215:17:25",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3291,
                                                "src": "1207:25:25",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3260,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1207:7:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3263,
                                                "mutability": "mutable",
                                                "name": "maxGas",
                                                "nameLocation": "1568:6:25",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3291,
                                                "src": "1560:14:25",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3262,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1560:7:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3265,
                                                "mutability": "mutable",
                                                "name": "gasPriceBid",
                                                "nameLocation": "1641:11:25",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3291,
                                                "src": "1633:19:25",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3264,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1633:7:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3267,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "1731:4:25",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3291,
                                                "src": "1718:17:25",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3266,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1718:5:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "985:795:25"
                                    },
                                    "returnParameters": {
                                        "id": 3271,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3270,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3291,
                                                "src": "1799:7:25",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3269,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1799:7:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1798:9:25"
                                    },
                                    "scope": 3335,
                                    "src": "955:2276:25",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3333,
                                        "nodeType": "Block",
                                        "src": "3459:478:25",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    3297
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3297,
                                                        "mutability": "mutable",
                                                        "name": "bridge",
                                                        "nameLocation": "3561:6:25",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3333,
                                                        "src": "3553:14:25",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IBridge_$3198",
                                                            "typeString": "contract IBridge"
                                                        },
                                                        "typeName": {
                                                            "id": 3296,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 3295,
                                                                "name": "IBridge",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 3198,
                                                                "src": "3553:7:25"
                                                            },
                                                            "referencedDeclaration": 3198,
                                                            "src": "3553:7:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IBridge_$3198",
                                                                "typeString": "contract IBridge"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3303,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "id": 3299,
                                                                    "name": "inbox",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3240,
                                                                    "src": "3578:5:25",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_iArbitrum_Inbox_$3225",
                                                                        "typeString": "contract iArbitrum_Inbox"
                                                                    }
                                                                },
                                                                "id": 3300,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "bridge",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3224,
                                                                "src": "3578:12:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view external returns (address)"
                                                                }
                                                            },
                                                            "id": 3301,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3578:14:25",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 3298,
                                                        "name": "IBridge",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3198,
                                                        "src": "3570:7:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IBridge_$3198_$",
                                                            "typeString": "type(contract IBridge)"
                                                        }
                                                    },
                                                    "id": 3302,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3570:23:25",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IBridge_$3198",
                                                        "typeString": "contract IBridge"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3553:40:25"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 3311,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 3305,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "3611:3:25",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 3306,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3611:10:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 3309,
                                                                        "name": "bridge",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3297,
                                                                        "src": "3633:6:25",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IBridge_$3198",
                                                                            "typeString": "contract IBridge"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_IBridge_$3198",
                                                                            "typeString": "contract IBridge"
                                                                        }
                                                                    ],
                                                                    "id": 3308,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "3625:7:25",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3307,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "3625:7:25",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 3310,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3625:15:25",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "3611:29:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4e4f545f46524f4d5f425249444745",
                                                            "id": 3312,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3642:17:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_11d31a7f2d96eda6388edaeb9afa8e8d8dfd4901bc63d9f2e74c4d7e072a52ac",
                                                                "typeString": "literal_string \"NOT_FROM_BRIDGE\""
                                                            },
                                                            "value": "NOT_FROM_BRIDGE"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_11d31a7f2d96eda6388edaeb9afa8e8d8dfd4901bc63d9f2e74c4d7e072a52ac",
                                                                "typeString": "literal_string \"NOT_FROM_BRIDGE\""
                                                            }
                                                        ],
                                                        "id": 3304,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3603:7:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 3313,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3603:57:25",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3314,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3603:57:25"
                                            },
                                            {
                                                "assignments": [
                                                    3316
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3316,
                                                        "mutability": "mutable",
                                                        "name": "l2ToL1Sender",
                                                        "nameLocation": "3774:12:25",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3333,
                                                        "src": "3766:20:25",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 3315,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3766:7:25",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3324,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "id": 3318,
                                                                            "name": "bridge",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3297,
                                                                            "src": "3806:6:25",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IBridge_$3198",
                                                                                "typeString": "contract IBridge"
                                                                            }
                                                                        },
                                                                        "id": 3319,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "activeOutbox",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3197,
                                                                        "src": "3806:19:25",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                                            "typeString": "function () view external returns (address)"
                                                                        }
                                                                    },
                                                                    "id": 3320,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "3806:21:25",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 3317,
                                                                "name": "iArbitrum_Outbox",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3233,
                                                                "src": "3789:16:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_iArbitrum_Outbox_$3233_$",
                                                                    "typeString": "type(contract iArbitrum_Outbox)"
                                                                }
                                                            },
                                                            "id": 3321,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3789:39:25",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_iArbitrum_Outbox_$3233",
                                                                "typeString": "contract iArbitrum_Outbox"
                                                            }
                                                        },
                                                        "id": 3322,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "l2ToL1Sender",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3232,
                                                        "src": "3789:52:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                            "typeString": "function () view external returns (address)"
                                                        }
                                                    },
                                                    "id": 3323,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3789:54:25",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3766:77:25"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 3328,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 3326,
                                                                "name": "l2ToL1Sender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3316,
                                                                "src": "3861:12:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 3327,
                                                                "name": "l2Counterpart",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3293,
                                                                "src": "3877:13:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "3861:29:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f4e4c595f434f554e544552504152545f47415445574159",
                                                            "id": 3329,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3892:26:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f",
                                                                "typeString": "literal_string \"ONLY_COUNTERPART_GATEWAY\""
                                                            },
                                                            "value": "ONLY_COUNTERPART_GATEWAY"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f",
                                                                "typeString": "literal_string \"ONLY_COUNTERPART_GATEWAY\""
                                                            }
                                                        ],
                                                        "id": 3325,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3853:7:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 3330,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3853:66:25",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3331,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3853:66:25"
                                            },
                                            {
                                                "id": 3332,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "3929:1:25"
                                            }
                                        ]
                                    },
                                    "id": 3334,
                                    "name": "onlyFromCrossDomainAccount",
                                    "nameLocation": "3409:26:25",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 3294,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3293,
                                                "mutability": "mutable",
                                                "name": "l2Counterpart",
                                                "nameLocation": "3444:13:25",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3334,
                                                "src": "3436:21:25",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3292,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3436:7:25",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3435:23:25"
                                    },
                                    "src": "3400:537:25",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 3336,
                            "src": "342:3597:25",
                            "usedErrors": []
                        }
                    ],
                    "src": "195:3745:25"
                },
                "id": 25
            },
            "contracts/common/implementation/AncillaryData.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/AncillaryData.sol",
                    "exportedSymbols": {
                        "AncillaryData": [
                            3743
                        ]
                    },
                    "id": 3744,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3337,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:26"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "AncillaryData",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 3338,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:595:26",
                                "text": " @title Library for encoding and decoding ancillary data for DVM price requests.\n @notice  We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via\n web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value\n dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity\n smart contracts. More details on UMA's ancillary data guidelines below:\n https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit"
                            },
                            "fullyImplemented": true,
                            "id": 3743,
                            "linearizedBaseContracts": [
                                3743
                            ],
                            "name": "AncillaryData",
                            "nameLocation": "671:13:26",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 3477,
                                        "nodeType": "Block",
                                        "src": "974:1229:26",
                                        "statements": [
                                            {
                                                "id": 3476,
                                                "nodeType": "UncheckedBlock",
                                                "src": "984:1213:26",
                                                "statements": [
                                                    {
                                                        "assignments": [
                                                            3346
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 3346,
                                                                "mutability": "mutable",
                                                                "name": "x",
                                                                "nameLocation": "1016:1:26",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 3476,
                                                                "src": "1008:9:26",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 3345,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1008:7:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 3351,
                                                        "initialValue": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3349,
                                                                    "name": "bytesIn",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3340,
                                                                    "src": "1028:7:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 3348,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "1020:7:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                                    "typeString": "type(uint256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 3347,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1020:7:26",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 3350,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1020:16:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1008:28:26"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 3356,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 3352,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3346,
                                                                "src": "1084:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 3355,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 3353,
                                                                    "name": "x",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3346,
                                                                    "src": "1088:1:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830303030303030303030303030303030303030303030303030303030303030306666666666666666666666666666666666666666666666666666666666666666",
                                                                    "id": 3354,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1092:66:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1",
                                                                        "typeString": "int_const 3402...(31 digits omitted)...1455"
                                                                    },
                                                                    "value": "0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"
                                                                },
                                                                "src": "1088:70:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1084:74:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 3357,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1084:74:26"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 3370,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 3358,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3346,
                                                                "src": "1172:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 3369,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 3366,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 3359,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3346,
                                                                                "src": "1177:1:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 3364,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 3360,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3346,
                                                                                            "src": "1182:1:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                                                                                "typeString": "int_const 18446744073709551616"
                                                                                            },
                                                                                            "id": 3363,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 3361,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1186:1:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "3634",
                                                                                                "id": 3362,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1189:2:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_64_by_1",
                                                                                                    "typeString": "int_const 64"
                                                                                                },
                                                                                                "value": "64"
                                                                                            },
                                                                                            "src": "1186:5:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                                                                                "typeString": "int_const 18446744073709551616"
                                                                                            }
                                                                                        },
                                                                                        "src": "1182:9:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 3365,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1181:11:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1177:15:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 3367,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1176:17:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830303030303030303030303030303030666666666666666666666666666666663030303030303030303030303030303066666666666666666666666666666666",
                                                                    "id": 3368,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1196:66:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_6277101735386680763495507056286727952657427581105975853055_by_1",
                                                                        "typeString": "int_const 6277...(50 digits omitted)...3055"
                                                                    },
                                                                    "value": "0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff"
                                                                },
                                                                "src": "1176:86:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1172:90:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 3371,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1172:90:26"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 3384,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 3372,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3346,
                                                                "src": "1276:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 3383,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 3380,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 3373,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3346,
                                                                                "src": "1281:1:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 3378,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 3374,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3346,
                                                                                            "src": "1286:1:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_4294967296_by_1",
                                                                                                "typeString": "int_const 4294967296"
                                                                                            },
                                                                                            "id": 3377,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 3375,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1290:1:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "3332",
                                                                                                "id": 3376,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1293:2:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_32_by_1",
                                                                                                    "typeString": "int_const 32"
                                                                                                },
                                                                                                "value": "32"
                                                                                            },
                                                                                            "src": "1290:5:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_4294967296_by_1",
                                                                                                "typeString": "int_const 4294967296"
                                                                                            }
                                                                                        },
                                                                                        "src": "1286:9:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 3379,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1285:11:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1281:15:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 3381,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1280:17:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830303030303030306666666666666666303030303030303066666666666666663030303030303030666666666666666630303030303030306666666666666666",
                                                                    "id": 3382,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1300:66:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1",
                                                                        "typeString": "int_const 2695...(60 digits omitted)...3855"
                                                                    },
                                                                    "value": "0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff"
                                                                },
                                                                "src": "1280:86:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1276:90:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 3385,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1276:90:26"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 3398,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 3386,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3346,
                                                                "src": "1380:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 3397,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 3394,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 3387,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3346,
                                                                                "src": "1385:1:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 3392,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 3388,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3346,
                                                                                            "src": "1390:1:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_65536_by_1",
                                                                                                "typeString": "int_const 65536"
                                                                                            },
                                                                                            "id": 3391,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 3389,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1394:1:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "3136",
                                                                                                "id": 3390,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1397:2:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_16_by_1",
                                                                                                    "typeString": "int_const 16"
                                                                                                },
                                                                                                "value": "16"
                                                                                            },
                                                                                            "src": "1394:5:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_65536_by_1",
                                                                                                "typeString": "int_const 65536"
                                                                                            }
                                                                                        },
                                                                                        "src": "1390:9:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 3393,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1389:11:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1385:15:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 3395,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1384:17:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830303030666666663030303066666666303030306666666630303030666666663030303066666666303030306666666630303030666666663030303066666666",
                                                                    "id": 3396,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1404:66:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1",
                                                                        "typeString": "int_const 1766...(65 digits omitted)...4255"
                                                                    },
                                                                    "value": "0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff"
                                                                },
                                                                "src": "1384:86:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1380:90:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 3399,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1380:90:26"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 3412,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 3400,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3346,
                                                                "src": "1484:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 3411,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 3408,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 3401,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3346,
                                                                                "src": "1489:1:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 3406,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 3402,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3346,
                                                                                            "src": "1494:1:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_256_by_1",
                                                                                                "typeString": "int_const 256"
                                                                                            },
                                                                                            "id": 3405,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 3403,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1498:1:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "38",
                                                                                                "id": 3404,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1501:1:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_8_by_1",
                                                                                                    "typeString": "int_const 8"
                                                                                                },
                                                                                                "value": "8"
                                                                                            },
                                                                                            "src": "1498:4:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_256_by_1",
                                                                                                "typeString": "int_const 256"
                                                                                            }
                                                                                        },
                                                                                        "src": "1494:8:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 3407,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1493:10:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1489:14:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 3409,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1488:16:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830306666303066663030666630306666303066663030666630306666303066663030666630306666303066663030666630306666303066663030666630306666",
                                                                    "id": 3410,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1507:66:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1",
                                                                        "typeString": "int_const 4505...(67 digits omitted)...9455"
                                                                    },
                                                                    "value": "0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff"
                                                                },
                                                                "src": "1488:85:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1484:89:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 3413,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1484:89:26"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 3426,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 3414,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3346,
                                                                "src": "1587:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 3425,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 3422,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 3415,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3346,
                                                                                "src": "1592:1:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 3420,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 3416,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3346,
                                                                                            "src": "1597:1:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_16_by_1",
                                                                                                "typeString": "int_const 16"
                                                                                            },
                                                                                            "id": 3419,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 3417,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1601:1:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "34",
                                                                                                "id": 3418,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1604:1:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_4_by_1",
                                                                                                    "typeString": "int_const 4"
                                                                                                },
                                                                                                "value": "4"
                                                                                            },
                                                                                            "src": "1601:4:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_16_by_1",
                                                                                                "typeString": "int_const 16"
                                                                                            }
                                                                                        },
                                                                                        "src": "1597:8:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 3421,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1596:10:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1592:14:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 3423,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1591:16:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066",
                                                                    "id": 3424,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1610:66:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_6811299366900952671974763824040465167839410862684739061144563765171360567055_by_1",
                                                                        "typeString": "int_const 6811...(68 digits omitted)...7055"
                                                                    },
                                                                    "value": "0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"
                                                                },
                                                                "src": "1591:85:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1587:89:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 3427,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1587:89:26"
                                                    },
                                                    {
                                                        "assignments": [
                                                            3429
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 3429,
                                                                "mutability": "mutable",
                                                                "name": "h",
                                                                "nameLocation": "1725:1:26",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 3476,
                                                                "src": "1717:9:26",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 3428,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1717:7:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 3436,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 3435,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 3432,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 3430,
                                                                            "name": "x",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3346,
                                                                            "src": "1730:1:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "&",
                                                                        "rightExpression": {
                                                                            "hexValue": "307830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038",
                                                                            "id": 3431,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1734:66:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_3632692995680508091719874039488248089514352460098527499277100674758058969096_by_1",
                                                                                "typeString": "int_const 3632...(68 digits omitted)...9096"
                                                                            },
                                                                            "value": "0x0808080808080808080808080808080808080808080808080808080808080808"
                                                                        },
                                                                        "src": "1730:70:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 3433,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1729:72:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "hexValue": "38",
                                                                "id": 3434,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1804:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_8_by_1",
                                                                    "typeString": "int_const 8"
                                                                },
                                                                "value": "8"
                                                            },
                                                            "src": "1729:76:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1717:88:26"
                                                    },
                                                    {
                                                        "assignments": [
                                                            3438
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 3438,
                                                                "mutability": "mutable",
                                                                "name": "i",
                                                                "nameLocation": "1827:1:26",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 3476,
                                                                "src": "1819:9:26",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 3437,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1819:7:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 3445,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 3444,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 3441,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 3439,
                                                                            "name": "x",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3346,
                                                                            "src": "1832:1:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "&",
                                                                        "rightExpression": {
                                                                            "hexValue": "307830343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034",
                                                                            "id": 3440,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1836:66:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_1816346497840254045859937019744124044757176230049263749638550337379029484548_by_1",
                                                                                "typeString": "int_const 1816...(68 digits omitted)...4548"
                                                                            },
                                                                            "value": "0x0404040404040404040404040404040404040404040404040404040404040404"
                                                                        },
                                                                        "src": "1832:70:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 3442,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1831:72:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "hexValue": "34",
                                                                "id": 3443,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1906:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_4_by_1",
                                                                    "typeString": "int_const 4"
                                                                },
                                                                "value": "4"
                                                            },
                                                            "src": "1831:76:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1819:88:26"
                                                    },
                                                    {
                                                        "assignments": [
                                                            3447
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 3447,
                                                                "mutability": "mutable",
                                                                "name": "j",
                                                                "nameLocation": "1929:1:26",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 3476,
                                                                "src": "1921:9:26",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 3446,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1921:7:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 3454,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 3453,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 3450,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 3448,
                                                                            "name": "x",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3346,
                                                                            "src": "1934:1:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "&",
                                                                        "rightExpression": {
                                                                            "hexValue": "307830323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032",
                                                                            "id": 3449,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1938:66:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_908173248920127022929968509872062022378588115024631874819275168689514742274_by_1",
                                                                                "typeString": "int_const 9081...(67 digits omitted)...2274"
                                                                            },
                                                                            "value": "0x0202020202020202020202020202020202020202020202020202020202020202"
                                                                        },
                                                                        "src": "1934:70:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 3451,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1933:72:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "hexValue": "32",
                                                                "id": 3452,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "2008:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                    "typeString": "int_const 2"
                                                                },
                                                                "value": "2"
                                                            },
                                                            "src": "1933:76:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1921:88:26"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 3469,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 3455,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3346,
                                                                "src": "2023:1:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 3468,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 3466,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 3456,
                                                                        "name": "x",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3346,
                                                                        "src": "2027:1:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "+",
                                                                    "rightExpression": {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 3465,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "components": [
                                                                                {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    "id": 3462,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                        "id": 3457,
                                                                                        "name": "h",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 3429,
                                                                                        "src": "2032:1:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "&",
                                                                                    "rightExpression": {
                                                                                        "components": [
                                                                                            {
                                                                                                "commonType": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                },
                                                                                                "id": 3460,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "leftExpression": {
                                                                                                    "id": 3458,
                                                                                                    "name": "i",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 3438,
                                                                                                    "src": "2037:1:26",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    }
                                                                                                },
                                                                                                "nodeType": "BinaryOperation",
                                                                                                "operator": "|",
                                                                                                "rightExpression": {
                                                                                                    "id": 3459,
                                                                                                    "name": "j",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 3447,
                                                                                                    "src": "2041:1:26",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    }
                                                                                                },
                                                                                                "src": "2037:5:26",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "id": 3461,
                                                                                        "isConstant": false,
                                                                                        "isInlineArray": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "TupleExpression",
                                                                                        "src": "2036:7:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "src": "2032:11:26",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "id": 3463,
                                                                            "isConstant": false,
                                                                            "isInlineArray": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "TupleExpression",
                                                                            "src": "2031:13:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "*",
                                                                        "rightExpression": {
                                                                            "hexValue": "30783237",
                                                                            "id": 3464,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "2047:4:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_39_by_1",
                                                                                "typeString": "int_const 39"
                                                                            },
                                                                            "value": "0x27"
                                                                        },
                                                                        "src": "2031:20:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2027:24:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "hexValue": "307833303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330",
                                                                    "id": 3467,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "2054:66:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_21796157974083048550319244236929488537086114760591164995662604048548353814576_by_1",
                                                                        "typeString": "int_const 2179...(69 digits omitted)...4576"
                                                                    },
                                                                    "value": "0x3030303030303030303030303030303030303030303030303030303030303030"
                                                                },
                                                                "src": "2027:93:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "2023:97:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 3470,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "2023:97:26"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3473,
                                                                    "name": "x",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3346,
                                                                    "src": "2184:1:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 3472,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "2176:7:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                                                    "typeString": "type(bytes32)"
                                                                },
                                                                "typeName": {
                                                                    "id": 3471,
                                                                    "name": "bytes32",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "2176:7:26",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 3474,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2176:10:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "functionReturnParameters": 3344,
                                                        "id": 3475,
                                                        "nodeType": "Return",
                                                        "src": "2169:17:26"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "id": 3478,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUtf8Bytes32Bottom",
                                    "nameLocation": "906:19:26",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3341,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3340,
                                                "mutability": "mutable",
                                                "name": "bytesIn",
                                                "nameLocation": "934:7:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3478,
                                                "src": "926:15:26",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 3339,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "926:7:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "925:17:26"
                                    },
                                    "returnParameters": {
                                        "id": 3344,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3343,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3478,
                                                "src": "965:7:26",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 3342,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "965:7:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "964:9:26"
                                    },
                                    "scope": 3743,
                                    "src": "897:1306:26",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 3498,
                                        "nodeType": "Block",
                                        "src": "2661:107:26",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    "id": 3491,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 3489,
                                                                        "name": "bytesIn",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3481,
                                                                        "src": "2715:7:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">>",
                                                                    "rightExpression": {
                                                                        "hexValue": "313238",
                                                                        "id": 3490,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2726:3:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_128_by_1",
                                                                            "typeString": "int_const 128"
                                                                        },
                                                                        "value": "128"
                                                                    },
                                                                    "src": "2715:14:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 3488,
                                                                "name": "toUtf8Bytes32Bottom",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3478,
                                                                "src": "2695:19:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$",
                                                                    "typeString": "function (bytes32) pure returns (bytes32)"
                                                                }
                                                            },
                                                            "id": 3492,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2695:35:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3494,
                                                                    "name": "bytesIn",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3481,
                                                                    "src": "2752:7:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 3493,
                                                                "name": "toUtf8Bytes32Bottom",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3478,
                                                                "src": "2732:19:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$",
                                                                    "typeString": "function (bytes32) pure returns (bytes32)"
                                                                }
                                                            },
                                                            "id": 3495,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2732:28:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 3486,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "2678:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 3487,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "2678:16:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 3496,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2678:83:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3485,
                                                "id": 3497,
                                                "nodeType": "Return",
                                                "src": "2671:90:26"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3479,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2209:372:26",
                                        "text": " @notice Returns utf8-encoded bytes32 string that can be read via web3.utils.hexToUtf8.\n @dev Will return bytes32 in all lower case hex characters and without the leading 0x.\n This has minor changes from the toUtf8BytesAddress to control for the size of the input.\n @param bytesIn bytes32 to encode.\n @return utf8 encoded bytes32."
                                    },
                                    "id": 3499,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUtf8Bytes",
                                    "nameLocation": "2595:11:26",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3482,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3481,
                                                "mutability": "mutable",
                                                "name": "bytesIn",
                                                "nameLocation": "2615:7:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3499,
                                                "src": "2607:15:26",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 3480,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2607:7:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2606:17:26"
                                    },
                                    "returnParameters": {
                                        "id": 3485,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3484,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3499,
                                                "src": "2647:12:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3483,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2647:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2646:14:26"
                                    },
                                    "scope": 3743,
                                    "src": "2586:182:26",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3531,
                                        "nodeType": "Block",
                                        "src": "3221:142:26",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    "id": 3518,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "id": 3514,
                                                                                        "name": "x",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 3502,
                                                                                        "src": "3303:1:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "id": 3513,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                    "src": "3295:7:26",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_bytes20_$",
                                                                                        "typeString": "type(bytes20)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 3512,
                                                                                        "name": "bytes20",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "3295:7:26",
                                                                                        "typeDescriptions": {}
                                                                                    }
                                                                                },
                                                                                "id": 3515,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "typeConversion",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "3295:10:26",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes20",
                                                                                    "typeString": "bytes20"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bytes20",
                                                                                    "typeString": "bytes20"
                                                                                }
                                                                            ],
                                                                            "id": 3511,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "3287:7:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_bytes32_$",
                                                                                "typeString": "type(bytes32)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 3510,
                                                                                "name": "bytes32",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "3287:7:26",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 3516,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "3287:19:26",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">>",
                                                                    "rightExpression": {
                                                                        "hexValue": "313238",
                                                                        "id": 3517,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "3310:3:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_128_by_1",
                                                                            "typeString": "int_const 128"
                                                                        },
                                                                        "value": "128"
                                                                    },
                                                                    "src": "3287:26:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 3509,
                                                                "name": "toUtf8Bytes32Bottom",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3478,
                                                                "src": "3267:19:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$",
                                                                    "typeString": "function (bytes32) pure returns (bytes32)"
                                                                }
                                                            },
                                                            "id": 3519,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3267:47:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 3525,
                                                                                    "name": "x",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 3502,
                                                                                    "src": "3351:1:26",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 3524,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "3343:7:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_bytes20_$",
                                                                                    "typeString": "type(bytes20)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 3523,
                                                                                    "name": "bytes20",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "3343:7:26",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 3526,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "3343:10:26",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes20",
                                                                                "typeString": "bytes20"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_bytes20",
                                                                                "typeString": "bytes20"
                                                                            }
                                                                        ],
                                                                        "id": 3522,
                                                                        "name": "toUtf8Bytes32Bottom",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3478,
                                                                        "src": "3323:19:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$",
                                                                            "typeString": "function (bytes32) pure returns (bytes32)"
                                                                        }
                                                                    },
                                                                    "id": 3527,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "3323:31:26",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 3521,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3316:6:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_bytes8_$",
                                                                    "typeString": "type(bytes8)"
                                                                },
                                                                "typeName": {
                                                                    "id": 3520,
                                                                    "name": "bytes8",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3316:6:26",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 3528,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3316:39:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes8",
                                                                "typeString": "bytes8"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes8",
                                                                "typeString": "bytes8"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 3507,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "3250:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 3508,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "3250:16:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 3529,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3250:106:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3506,
                                                "id": 3530,
                                                "nodeType": "Return",
                                                "src": "3231:125:26"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3500,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2774:366:26",
                                        "text": " @notice Returns utf8-encoded address that can be read via web3.utils.hexToUtf8.\n Source: https://ethereum.stackexchange.com/questions/8346/convert-address-to-string/8447#8447\n @dev Will return address in all lower case characters and without the leading 0x.\n @param x address to encode.\n @return utf8 encoded address bytes."
                                    },
                                    "id": 3532,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUtf8BytesAddress",
                                    "nameLocation": "3154:18:26",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3503,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3502,
                                                "mutability": "mutable",
                                                "name": "x",
                                                "nameLocation": "3181:1:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3532,
                                                "src": "3173:9:26",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3501,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3173:7:26",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3172:11:26"
                                    },
                                    "returnParameters": {
                                        "id": 3506,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3505,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3532,
                                                "src": "3207:12:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3504,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3207:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3206:14:26"
                                    },
                                    "scope": 3743,
                                    "src": "3145:218:26",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3624,
                                        "nodeType": "Block",
                                        "src": "3642:473:26",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3542,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3540,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3535,
                                                        "src": "3656:1:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 3541,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3661:1:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "3656:6:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 3546,
                                                "nodeType": "IfStatement",
                                                "src": "3652:47:26",
                                                "trueBody": {
                                                    "id": 3545,
                                                    "nodeType": "Block",
                                                    "src": "3664:35:26",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "hexValue": "30",
                                                                "id": 3543,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "string",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "3685:3:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                                    "typeString": "literal_string \"0\""
                                                                },
                                                                "value": "0"
                                                            },
                                                            "functionReturnParameters": 3539,
                                                            "id": 3544,
                                                            "nodeType": "Return",
                                                            "src": "3678:10:26"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "assignments": [
                                                    3548
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3548,
                                                        "mutability": "mutable",
                                                        "name": "j",
                                                        "nameLocation": "3716:1:26",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3624,
                                                        "src": "3708:9:26",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 3547,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3708:7:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3550,
                                                "initialValue": {
                                                    "id": 3549,
                                                    "name": "x",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3535,
                                                    "src": "3720:1:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3708:13:26"
                                            },
                                            {
                                                "assignments": [
                                                    3552
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3552,
                                                        "mutability": "mutable",
                                                        "name": "len",
                                                        "nameLocation": "3739:3:26",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3624,
                                                        "src": "3731:11:26",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 3551,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3731:7:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3553,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3731:11:26"
                                            },
                                            {
                                                "body": {
                                                    "id": 3564,
                                                    "nodeType": "Block",
                                                    "src": "3767:51:26",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 3558,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "++",
                                                                "prefix": false,
                                                                "src": "3781:5:26",
                                                                "subExpression": {
                                                                    "id": 3557,
                                                                    "name": "len",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3552,
                                                                    "src": "3781:3:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 3559,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3781:5:26"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 3562,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 3560,
                                                                    "name": "j",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3548,
                                                                    "src": "3800:1:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "/=",
                                                                "rightHandSide": {
                                                                    "hexValue": "3130",
                                                                    "id": 3561,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "3805:2:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_10_by_1",
                                                                        "typeString": "int_const 10"
                                                                    },
                                                                    "value": "10"
                                                                },
                                                                "src": "3800:7:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 3563,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3800:7:26"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3556,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3554,
                                                        "name": "j",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3548,
                                                        "src": "3759:1:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 3555,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3764:1:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "3759:6:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 3565,
                                                "nodeType": "WhileStatement",
                                                "src": "3752:66:26"
                                            },
                                            {
                                                "assignments": [
                                                    3567
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3567,
                                                        "mutability": "mutable",
                                                        "name": "bstr",
                                                        "nameLocation": "3840:4:26",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3624,
                                                        "src": "3827:17:26",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 3566,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3827:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3572,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 3570,
                                                            "name": "len",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3552,
                                                            "src": "3857:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 3569,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "NewExpression",
                                                        "src": "3847:9:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (uint256) pure returns (bytes memory)"
                                                        },
                                                        "typeName": {
                                                            "id": 3568,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3851:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        }
                                                    },
                                                    "id": 3571,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3847:14:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3827:34:26"
                                            },
                                            {
                                                "assignments": [
                                                    3574
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3574,
                                                        "mutability": "mutable",
                                                        "name": "k",
                                                        "nameLocation": "3879:1:26",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3624,
                                                        "src": "3871:9:26",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 3573,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3871:7:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3576,
                                                "initialValue": {
                                                    "id": 3575,
                                                    "name": "len",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3552,
                                                    "src": "3883:3:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3871:15:26"
                                            },
                                            {
                                                "body": {
                                                    "id": 3620,
                                                    "nodeType": "Block",
                                                    "src": "3911:177:26",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 3584,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 3580,
                                                                    "name": "k",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3574,
                                                                    "src": "3925:1:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 3583,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 3581,
                                                                        "name": "k",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3574,
                                                                        "src": "3929:1:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                        "hexValue": "31",
                                                                        "id": 3582,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "3933:1:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_1_by_1",
                                                                            "typeString": "int_const 1"
                                                                        },
                                                                        "value": "1"
                                                                    },
                                                                    "src": "3929:5:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "3925:9:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 3585,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3925:9:26"
                                                        },
                                                        {
                                                            "assignments": [
                                                                3587
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 3587,
                                                                    "mutability": "mutable",
                                                                    "name": "temp",
                                                                    "nameLocation": "3954:4:26",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 3620,
                                                                    "src": "3948:10:26",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3586,
                                                                        "name": "uint8",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "3948:5:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 3602,
                                                            "initialValue": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        },
                                                                        "id": 3600,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "hexValue": "3438",
                                                                            "id": 3588,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "3962:2:26",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_48_by_1",
                                                                                "typeString": "int_const 48"
                                                                            },
                                                                            "value": "48"
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "+",
                                                                        "rightExpression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    "id": 3598,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                        "id": 3591,
                                                                                        "name": "x",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 3535,
                                                                                        "src": "3973:1:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "-",
                                                                                    "rightExpression": {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 3597,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "components": [
                                                                                                {
                                                                                                    "commonType": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    },
                                                                                                    "id": 3594,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "leftExpression": {
                                                                                                        "id": 3592,
                                                                                                        "name": "x",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 3535,
                                                                                                        "src": "3978:1:26",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    },
                                                                                                    "nodeType": "BinaryOperation",
                                                                                                    "operator": "/",
                                                                                                    "rightExpression": {
                                                                                                        "hexValue": "3130",
                                                                                                        "id": 3593,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": true,
                                                                                                        "kind": "number",
                                                                                                        "lValueRequested": false,
                                                                                                        "nodeType": "Literal",
                                                                                                        "src": "3982:2:26",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_rational_10_by_1",
                                                                                                            "typeString": "int_const 10"
                                                                                                        },
                                                                                                        "value": "10"
                                                                                                    },
                                                                                                    "src": "3978:6:26",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "id": 3595,
                                                                                            "isConstant": false,
                                                                                            "isInlineArray": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "TupleExpression",
                                                                                            "src": "3977:8:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "hexValue": "3130",
                                                                                            "id": 3596,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "kind": "number",
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "Literal",
                                                                                            "src": "3988:2:26",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_10_by_1",
                                                                                                "typeString": "int_const 10"
                                                                                            },
                                                                                            "value": "10"
                                                                                        },
                                                                                        "src": "3977:13:26",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "src": "3973:17:26",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "id": 3590,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "3967:5:26",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_uint8_$",
                                                                                    "typeString": "type(uint8)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 3589,
                                                                                    "name": "uint8",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "3967:5:26",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 3599,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "3967:24:26",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            }
                                                                        },
                                                                        "src": "3962:29:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 3601,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "3961:31:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "3948:44:26"
                                                        },
                                                        {
                                                            "assignments": [
                                                                3604
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 3604,
                                                                    "mutability": "mutable",
                                                                    "name": "b1",
                                                                    "nameLocation": "4013:2:26",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 3620,
                                                                    "src": "4006:9:26",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3603,
                                                                        "name": "bytes1",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4006:6:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes1",
                                                                            "typeString": "bytes1"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 3609,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 3607,
                                                                        "name": "temp",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3587,
                                                                        "src": "4025:4:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    ],
                                                                    "id": 3606,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "4018:6:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                                                        "typeString": "type(bytes1)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3605,
                                                                        "name": "bytes1",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4018:6:26",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 3608,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4018:12:26",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes1",
                                                                    "typeString": "bytes1"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "4006:24:26"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 3614,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 3610,
                                                                        "name": "bstr",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3567,
                                                                        "src": "4044:4:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 3612,
                                                                    "indexExpression": {
                                                                        "id": 3611,
                                                                        "name": "k",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3574,
                                                                        "src": "4049:1:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "4044:7:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 3613,
                                                                    "name": "b1",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3604,
                                                                    "src": "4054:2:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "src": "4044:12:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes1",
                                                                    "typeString": "bytes1"
                                                                }
                                                            },
                                                            "id": 3615,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4044:12:26"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 3618,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 3616,
                                                                    "name": "x",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3535,
                                                                    "src": "4070:1:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "/=",
                                                                "rightHandSide": {
                                                                    "hexValue": "3130",
                                                                    "id": 3617,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "4075:2:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_10_by_1",
                                                                        "typeString": "int_const 10"
                                                                    },
                                                                    "value": "10"
                                                                },
                                                                "src": "4070:7:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 3619,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4070:7:26"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3579,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3577,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3535,
                                                        "src": "3903:1:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 3578,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3908:1:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "3903:6:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 3621,
                                                "nodeType": "WhileStatement",
                                                "src": "3896:192:26"
                                            },
                                            {
                                                "expression": {
                                                    "id": 3622,
                                                    "name": "bstr",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3567,
                                                    "src": "4104:4:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3539,
                                                "id": 3623,
                                                "nodeType": "Return",
                                                "src": "4097:11:26"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3533,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3369:195:26",
                                        "text": " @notice Converts a uint into a base-10, UTF-8 representation stored in a `string` type.\n @dev This method is based off of this code: https://stackoverflow.com/a/65707309."
                                    },
                                    "id": 3625,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUtf8BytesUint",
                                    "nameLocation": "3578:15:26",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3536,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3535,
                                                "mutability": "mutable",
                                                "name": "x",
                                                "nameLocation": "3602:1:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3625,
                                                "src": "3594:9:26",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3534,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3594:7:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3593:11:26"
                                    },
                                    "returnParameters": {
                                        "id": 3539,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3538,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3625,
                                                "src": "3628:12:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3537,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3628:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3627:14:26"
                                    },
                                    "scope": 3743,
                                    "src": "3569:546:26",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3652,
                                        "nodeType": "Block",
                                        "src": "4287:164:26",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    3637
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3637,
                                                        "mutability": "mutable",
                                                        "name": "prefix",
                                                        "nameLocation": "4310:6:26",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3652,
                                                        "src": "4297:19:26",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 3636,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4297:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3642,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 3639,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3627,
                                                            "src": "4335:20:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 3640,
                                                            "name": "key",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3629,
                                                            "src": "4357:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 3638,
                                                        "name": "constructPrefix",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3742,
                                                        "src": "4319:15:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 3641,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4319:42:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4297:64:26"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 3645,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3627,
                                                            "src": "4395:20:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 3646,
                                                            "name": "prefix",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3637,
                                                            "src": "4417:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3648,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3631,
                                                                    "src": "4437:5:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 3647,
                                                                "name": "toUtf8Bytes",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3499,
                                                                "src": "4425:11:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes32) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 3649,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4425:18:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 3643,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "4378:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 3644,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4378:16:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 3650,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4378:66:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3635,
                                                "id": 3651,
                                                "nodeType": "Return",
                                                "src": "4371:73:26"
                                            }
                                        ]
                                    },
                                    "id": 3653,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "appendKeyValueBytes32",
                                    "nameLocation": "4130:21:26",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3632,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3627,
                                                "mutability": "mutable",
                                                "name": "currentAncillaryData",
                                                "nameLocation": "4174:20:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3653,
                                                "src": "4161:33:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3626,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4161:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3629,
                                                "mutability": "mutable",
                                                "name": "key",
                                                "nameLocation": "4217:3:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3653,
                                                "src": "4204:16:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3628,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4204:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3631,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "4238:5:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3653,
                                                "src": "4230:13:26",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 3630,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4230:7:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4151:98:26"
                                    },
                                    "returnParameters": {
                                        "id": 3635,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3634,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3653,
                                                "src": "4273:12:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3633,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4273:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4272:14:26"
                                    },
                                    "scope": 3743,
                                    "src": "4121:330:26",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3681,
                                        "nodeType": "Block",
                                        "src": "5350:171:26",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    3666
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3666,
                                                        "mutability": "mutable",
                                                        "name": "prefix",
                                                        "nameLocation": "5373:6:26",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3681,
                                                        "src": "5360:19:26",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 3665,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5360:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3671,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 3668,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3656,
                                                            "src": "5398:20:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 3669,
                                                            "name": "key",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3658,
                                                            "src": "5420:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 3667,
                                                        "name": "constructPrefix",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3742,
                                                        "src": "5382:15:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 3670,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5382:42:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5360:64:26"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 3674,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3656,
                                                            "src": "5458:20:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 3675,
                                                            "name": "prefix",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3666,
                                                            "src": "5480:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3677,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3660,
                                                                    "src": "5507:5:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 3676,
                                                                "name": "toUtf8BytesAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3532,
                                                                "src": "5488:18:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (address) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 3678,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5488:25:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 3672,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "5441:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 3673,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "5441:16:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 3679,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5441:73:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3664,
                                                "id": 3680,
                                                "nodeType": "Return",
                                                "src": "5434:80:26"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3654,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4457:722:26",
                                        "text": " @notice Adds \"key:value\" to `currentAncillaryData` where `value` is an address that first needs to be converted\n to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param value An address to set as the value in the key:value pair to append to `currentAncillaryData`.\n @return Newly appended ancillary data."
                                    },
                                    "id": 3682,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "appendKeyValueAddress",
                                    "nameLocation": "5193:21:26",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3661,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3656,
                                                "mutability": "mutable",
                                                "name": "currentAncillaryData",
                                                "nameLocation": "5237:20:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3682,
                                                "src": "5224:33:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3655,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5224:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3658,
                                                "mutability": "mutable",
                                                "name": "key",
                                                "nameLocation": "5280:3:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3682,
                                                "src": "5267:16:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3657,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5267:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3660,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "5301:5:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3682,
                                                "src": "5293:13:26",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3659,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5293:7:26",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5214:98:26"
                                    },
                                    "returnParameters": {
                                        "id": 3664,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3663,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3682,
                                                "src": "5336:12:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3662,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5336:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5335:14:26"
                                    },
                                    "scope": 3743,
                                    "src": "5184:337:26",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3710,
                                        "nodeType": "Block",
                                        "src": "6409:168:26",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    3695
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3695,
                                                        "mutability": "mutable",
                                                        "name": "prefix",
                                                        "nameLocation": "6432:6:26",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3710,
                                                        "src": "6419:19:26",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 3694,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6419:5:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3700,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 3697,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3685,
                                                            "src": "6457:20:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 3698,
                                                            "name": "key",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3687,
                                                            "src": "6479:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 3696,
                                                        "name": "constructPrefix",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3742,
                                                        "src": "6441:15:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 3699,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6441:42:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6419:64:26"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 3703,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3685,
                                                            "src": "6517:20:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 3704,
                                                            "name": "prefix",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3695,
                                                            "src": "6539:6:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3706,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3689,
                                                                    "src": "6563:5:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 3705,
                                                                "name": "toUtf8BytesUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3625,
                                                                "src": "6547:15:26",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 3707,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6547:22:26",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 3701,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "6500:3:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 3702,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6500:16:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 3708,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6500:70:26",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3693,
                                                "id": 3709,
                                                "nodeType": "Return",
                                                "src": "6493:77:26"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3683,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5527:714:26",
                                        "text": " @notice Adds \"key:value\" to `currentAncillaryData` where `value` is a uint that first needs to be converted\n to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param value A uint to set as the value in the key:value pair to append to `currentAncillaryData`.\n @return Newly appended ancillary data."
                                    },
                                    "id": 3711,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "appendKeyValueUint",
                                    "nameLocation": "6255:18:26",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3690,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3685,
                                                "mutability": "mutable",
                                                "name": "currentAncillaryData",
                                                "nameLocation": "6296:20:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3711,
                                                "src": "6283:33:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3684,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6283:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3687,
                                                "mutability": "mutable",
                                                "name": "key",
                                                "nameLocation": "6339:3:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3711,
                                                "src": "6326:16:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3686,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6326:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3689,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "6360:5:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3711,
                                                "src": "6352:13:26",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3688,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6352:7:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6273:98:26"
                                    },
                                    "returnParameters": {
                                        "id": 3693,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3692,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3711,
                                                "src": "6395:12:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3691,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6395:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6394:14:26"
                                    },
                                    "scope": 3743,
                                    "src": "6246:331:26",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3741,
                                        "nodeType": "Block",
                                        "src": "7043:180:26",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3724,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3721,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3714,
                                                            "src": "7057:20:26",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 3722,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "7057:27:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 3723,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7087:1:26",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "7057:31:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 3739,
                                                    "nodeType": "Block",
                                                    "src": "7159:58:26",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 3735,
                                                                        "name": "key",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3716,
                                                                        "src": "7197:3:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "3a",
                                                                        "id": 3736,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7202:3:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                                                            "typeString": "literal_string \":\""
                                                                        },
                                                                        "value": ":"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                                                            "typeString": "literal_string \":\""
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 3733,
                                                                        "name": "abi",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -1,
                                                                        "src": "7180:3:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_abi",
                                                                            "typeString": "abi"
                                                                        }
                                                                    },
                                                                    "id": 3734,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "memberName": "encodePacked",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7180:16:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function () pure returns (bytes memory)"
                                                                    }
                                                                },
                                                                "id": 3737,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7180:26:26",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 3720,
                                                            "id": 3738,
                                                            "nodeType": "Return",
                                                            "src": "7173:33:26"
                                                        }
                                                    ]
                                                },
                                                "id": 3740,
                                                "nodeType": "IfStatement",
                                                "src": "7053:164:26",
                                                "trueBody": {
                                                    "id": 3732,
                                                    "nodeType": "Block",
                                                    "src": "7090:63:26",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "2c",
                                                                        "id": 3727,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7128:3:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb",
                                                                            "typeString": "literal_string \",\""
                                                                        },
                                                                        "value": ","
                                                                    },
                                                                    {
                                                                        "id": 3728,
                                                                        "name": "key",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3716,
                                                                        "src": "7133:3:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "3a",
                                                                        "id": 3729,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7138:3:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                                                            "typeString": "literal_string \":\""
                                                                        },
                                                                        "value": ":"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb",
                                                                            "typeString": "literal_string \",\""
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                                                            "typeString": "literal_string \":\""
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 3725,
                                                                        "name": "abi",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -1,
                                                                        "src": "7111:3:26",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_abi",
                                                                            "typeString": "abi"
                                                                        }
                                                                    },
                                                                    "id": 3726,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "memberName": "encodePacked",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7111:16:26",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function () pure returns (bytes memory)"
                                                                    }
                                                                },
                                                                "id": 3730,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7111:31:26",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 3720,
                                                            "id": 3731,
                                                            "nodeType": "Return",
                                                            "src": "7104:38:26"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3712,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6583:340:26",
                                        "text": " @notice Helper method that returns the left hand side of a \"key:value\" pair plus the colon \":\" and a leading\n comma \",\" if the `currentAncillaryData` is not empty. The return value is intended to be prepended as a prefix to\n some utf8 value that is ultimately added to a comma-delimited, key-value dictionary."
                                    },
                                    "id": 3742,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "constructPrefix",
                                    "nameLocation": "6937:15:26",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3717,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3714,
                                                "mutability": "mutable",
                                                "name": "currentAncillaryData",
                                                "nameLocation": "6966:20:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3742,
                                                "src": "6953:33:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3713,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6953:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3716,
                                                "mutability": "mutable",
                                                "name": "key",
                                                "nameLocation": "7001:3:26",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3742,
                                                "src": "6988:16:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3715,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6988:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6952:53:26"
                                    },
                                    "returnParameters": {
                                        "id": 3720,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3719,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3742,
                                                "src": "7029:12:26",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 3718,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7029:5:26",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7028:14:26"
                                    },
                                    "scope": 3743,
                                    "src": "6928:295:26",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 3744,
                            "src": "663:6562:26",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:7184:26"
                },
                "id": 26
            },
            "contracts/common/implementation/FixedPoint.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/FixedPoint.sol",
                    "exportedSymbols": {
                        "FixedPoint": [
                            5376
                        ],
                        "SafeMath": [
                            2525
                        ],
                        "SignedSafeMath": [
                            2589
                        ]
                    },
                    "id": 5377,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3745,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:27"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/math/SafeMath.sol",
                            "file": "@openzeppelin/contracts/utils/math/SafeMath.sol",
                            "id": 3746,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5377,
                            "sourceUnit": 2526,
                            "src": "67:57:27",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/math/SignedSafeMath.sol",
                            "file": "@openzeppelin/contracts/utils/math/SignedSafeMath.sol",
                            "id": 3747,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5377,
                            "sourceUnit": 2590,
                            "src": "125:63:27",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "FixedPoint",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 3748,
                                "nodeType": "StructuredDocumentation",
                                "src": "190:61:27",
                                "text": " @title Library for fixed point arithmetic on uints"
                            },
                            "fullyImplemented": true,
                            "id": 5376,
                            "linearizedBaseContracts": [
                                5376
                            ],
                            "name": "FixedPoint",
                            "nameLocation": "260:10:27",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "id": 3751,
                                    "libraryName": {
                                        "id": 3749,
                                        "name": "SafeMath",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2525,
                                        "src": "283:8:27"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "277:27:27",
                                    "typeName": {
                                        "id": 3750,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "296:7:27",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    }
                                },
                                {
                                    "id": 3754,
                                    "libraryName": {
                                        "id": 3752,
                                        "name": "SignedSafeMath",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2589,
                                        "src": "315:14:27"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "309:32:27",
                                    "typeName": {
                                        "id": 3753,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "334:6:27",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    }
                                },
                                {
                                    "constant": true,
                                    "id": 3759,
                                    "mutability": "constant",
                                    "name": "FP_SCALING_FACTOR",
                                    "nameLocation": "599:17:27",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5376,
                                    "src": "574:51:27",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3755,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "574:7:27",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        },
                                        "id": 3758,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 3756,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "619:2:27",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                            "hexValue": "3138",
                                            "id": 3757,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "623:2:27",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_18_by_1",
                                                "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                        },
                                        "src": "619:6:27",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "canonicalName": "FixedPoint.Unsigned",
                                    "id": 3762,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 3761,
                                            "mutability": "mutable",
                                            "name": "rawValue",
                                            "nameLocation": "800:8:27",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3762,
                                            "src": "792:16:27",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 3760,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "792:7:27",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "Unsigned",
                                    "nameLocation": "773:8:27",
                                    "nodeType": "StructDefinition",
                                    "scope": 5376,
                                    "src": "766:49:27",
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 3778,
                                        "nodeType": "Block",
                                        "src": "1121:58:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3774,
                                                                    "name": "FP_SCALING_FACTOR",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3759,
                                                                    "src": "1153:17:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 3772,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3765,
                                                                    "src": "1147:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 3773,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2419,
                                                                "src": "1147:5:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 3775,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1147:24:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 3771,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3762,
                                                        "src": "1138:8:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 3776,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1138:34:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3770,
                                                "id": 3777,
                                                "nodeType": "Return",
                                                "src": "1131:41:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3763,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "821:218:27",
                                        "text": " @notice Constructs an `Unsigned` from an unscaled uint, e.g., `b=5` gets stored internally as `5*(10**18)`.\n @param a uint to convert into a FixedPoint.\n @return the converted FixedPoint."
                                    },
                                    "id": 3779,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "fromUnscaledUint",
                                    "nameLocation": "1053:16:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3766,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3765,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1078:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3779,
                                                "src": "1070:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3764,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1070:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1069:11:27"
                                    },
                                    "returnParameters": {
                                        "id": 3770,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3769,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3779,
                                                "src": "1104:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3768,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3767,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "1104:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "1104:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1103:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "1044:135:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3798,
                                        "nodeType": "Block",
                                        "src": "1418:66:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3796,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3790,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3783,
                                                            "src": "1435:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3791,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "1435:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3793,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3785,
                                                                    "src": "1466:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 3792,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "1449:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 3794,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1449:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3795,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "1449:28:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "1435:42:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3789,
                                                "id": 3797,
                                                "nodeType": "Return",
                                                "src": "1428:49:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3780,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1185:152:27",
                                        "text": " @notice Whether `a` is equal to `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if equal, or False."
                                    },
                                    "id": 3799,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isEqual",
                                    "nameLocation": "1351:7:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3786,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3783,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1375:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3799,
                                                "src": "1359:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3782,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3781,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "1359:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "1359:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3785,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1386:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3799,
                                                "src": "1378:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3784,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1378:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1358:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 3789,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3788,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3799,
                                                "src": "1412:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3787,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1412:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1411:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "1342:142:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3817,
                                        "nodeType": "Block",
                                        "src": "1734:48:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3815,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3811,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3803,
                                                            "src": "1751:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3812,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "1751:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3813,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3806,
                                                            "src": "1765:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3814,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "1765:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "1751:24:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3810,
                                                "id": 3816,
                                                "nodeType": "Return",
                                                "src": "1744:31:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3800,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1490:155:27",
                                        "text": " @notice Whether `a` is equal to `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if equal, or False."
                                    },
                                    "id": 3818,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isEqual",
                                    "nameLocation": "1659:7:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3807,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3803,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1683:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3818,
                                                "src": "1667:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3802,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3801,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "1667:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "1667:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3806,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1702:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3818,
                                                "src": "1686:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3805,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3804,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "1686:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "1686:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1666:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 3810,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3809,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3818,
                                                "src": "1728:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3808,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1728:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1727:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "1650:132:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3836,
                                        "nodeType": "Block",
                                        "src": "2044:47:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3834,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3830,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3822,
                                                            "src": "2061:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3831,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "2061:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3832,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3825,
                                                            "src": "2074:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3833,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "2074:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2061:23:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3829,
                                                "id": 3835,
                                                "nodeType": "Return",
                                                "src": "2054:30:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3819,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1788:161:27",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if `a > b`, or False."
                                    },
                                    "id": 3837,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "1963:13:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3826,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3822,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1993:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3837,
                                                "src": "1977:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3821,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3820,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "1977:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "1977:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3825,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2012:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3837,
                                                "src": "1996:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3824,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3823,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "1996:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "1996:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1976:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 3829,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3828,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3837,
                                                "src": "2038:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3827,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2038:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2037:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "1954:137:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3856,
                                        "nodeType": "Block",
                                        "src": "2342:65:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3854,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3848,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3841,
                                                            "src": "2359:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3849,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "2359:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3851,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3843,
                                                                    "src": "2389:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 3850,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "2372:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 3852,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2372:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3853,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "2372:28:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2359:41:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3847,
                                                "id": 3855,
                                                "nodeType": "Return",
                                                "src": "2352:48:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3838,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2097:158:27",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if `a > b`, or False."
                                    },
                                    "id": 3857,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "2269:13:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3844,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3841,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2299:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3857,
                                                "src": "2283:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3840,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3839,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "2283:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "2283:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3843,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2310:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3857,
                                                "src": "2302:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3842,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2302:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2282:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 3847,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3846,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3857,
                                                "src": "2336:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3845,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2336:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2335:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "2260:147:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3876,
                                        "nodeType": "Block",
                                        "src": "2658:65:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3874,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3869,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3860,
                                                                    "src": "2692:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 3868,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "2675:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 3870,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2675:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3871,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "2675:28:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3872,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3863,
                                                            "src": "2706:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3873,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "2706:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2675:41:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3867,
                                                "id": 3875,
                                                "nodeType": "Return",
                                                "src": "2668:48:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3858,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2413:158:27",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a uint256.\n @param b a FixedPoint.\n @return True if `a > b`, or False."
                                    },
                                    "id": 3877,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "2585:13:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3864,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3860,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2607:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3877,
                                                "src": "2599:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3859,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2599:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3863,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2626:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3877,
                                                "src": "2610:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3862,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3861,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "2610:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "2610:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2598:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 3867,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3866,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3877,
                                                "src": "2652:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3865,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2652:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2651:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "2576:147:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3895,
                                        "nodeType": "Block",
                                        "src": "3005:48:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3893,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3889,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3881,
                                                            "src": "3022:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3890,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "3022:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3891,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3884,
                                                            "src": "3036:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3892,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "3036:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3022:24:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3888,
                                                "id": 3894,
                                                "nodeType": "Return",
                                                "src": "3015:31:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3878,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2729:174:27",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 3896,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "2917:20:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3885,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3881,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2954:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3896,
                                                "src": "2938:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3880,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3879,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "2938:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "2938:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3884,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2973:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3896,
                                                "src": "2957:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3883,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3882,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "2957:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "2957:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2937:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 3888,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3887,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3896,
                                                "src": "2999:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3886,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2999:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2998:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "2908:145:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3915,
                                        "nodeType": "Block",
                                        "src": "3324:66:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3913,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3907,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3900,
                                                            "src": "3341:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3908,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "3341:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3910,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3902,
                                                                    "src": "3372:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 3909,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "3355:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 3911,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3355:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3912,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "3355:28:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3341:42:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3906,
                                                "id": 3914,
                                                "nodeType": "Return",
                                                "src": "3334:49:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3897,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3059:171:27",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 3916,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "3244:20:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3903,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3900,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3281:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3916,
                                                "src": "3265:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3899,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3898,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "3265:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "3265:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3902,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3292:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3916,
                                                "src": "3284:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3901,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3284:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3264:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 3906,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3905,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3916,
                                                "src": "3318:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3904,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3318:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3317:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "3235:155:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3935,
                                        "nodeType": "Block",
                                        "src": "3661:66:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3933,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3928,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3919,
                                                                    "src": "3695:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 3927,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "3678:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 3929,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3678:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3930,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "3678:28:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3931,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3922,
                                                            "src": "3710:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3932,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "3710:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3678:42:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3926,
                                                "id": 3934,
                                                "nodeType": "Return",
                                                "src": "3671:49:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3917,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3396:171:27",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a uint256.\n @param b a FixedPoint.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 3936,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "3581:20:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3923,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3919,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3610:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3936,
                                                "src": "3602:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3918,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3602:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3922,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3629:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3936,
                                                "src": "3613:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3921,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3920,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "3613:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "3613:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3601:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 3926,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3925,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3936,
                                                "src": "3655:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3924,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3655:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3654:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "3572:155:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3954,
                                        "nodeType": "Block",
                                        "src": "3983:47:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3952,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3948,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3940,
                                                            "src": "4000:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3949,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "4000:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3950,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3943,
                                                            "src": "4013:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3951,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "4013:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4000:23:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3947,
                                                "id": 3953,
                                                "nodeType": "Return",
                                                "src": "3993:30:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3937,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3733:158:27",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if `a < b`, or False."
                                    },
                                    "id": 3955,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "3905:10:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3944,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3940,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3932:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3955,
                                                "src": "3916:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3939,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3938,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "3916:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "3916:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3943,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3951:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3955,
                                                "src": "3935:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3942,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3941,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "3935:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "3935:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3915:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 3947,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3946,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3955,
                                                "src": "3977:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3945,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3977:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3976:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "3896:134:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3974,
                                        "nodeType": "Block",
                                        "src": "4275:65:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3972,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3966,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3959,
                                                            "src": "4292:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3967,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "4292:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3969,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3961,
                                                                    "src": "4322:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 3968,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "4305:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 3970,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4305:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3971,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "4305:28:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4292:41:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3965,
                                                "id": 3973,
                                                "nodeType": "Return",
                                                "src": "4285:48:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3956,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4036:155:27",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if `a < b`, or False."
                                    },
                                    "id": 3975,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "4205:10:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3962,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3959,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4232:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3975,
                                                "src": "4216:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3958,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3957,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "4216:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "4216:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3961,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4243:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3975,
                                                "src": "4235:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3960,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4235:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4215:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 3965,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3964,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3975,
                                                "src": "4269:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3963,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4269:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4268:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "4196:144:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3994,
                                        "nodeType": "Block",
                                        "src": "4585:65:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3992,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3987,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3978,
                                                                    "src": "4619:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 3986,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "4602:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 3988,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4602:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3989,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "4602:28:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3990,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3981,
                                                            "src": "4633:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 3991,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "4633:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4602:41:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3985,
                                                "id": 3993,
                                                "nodeType": "Return",
                                                "src": "4595:48:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3976,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4346:155:27",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a uint256.\n @param b a FixedPoint.\n @return True if `a < b`, or False."
                                    },
                                    "id": 3995,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "4515:10:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3982,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3978,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4534:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3995,
                                                "src": "4526:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3977,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4526:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3981,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4553:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3995,
                                                "src": "4537:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3980,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3979,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "4537:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "4537:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4525:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 3985,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3984,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3995,
                                                "src": "4579:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3983,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4579:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4578:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "4506:144:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4013,
                                        "nodeType": "Block",
                                        "src": "4926:48:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4011,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4007,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3999,
                                                            "src": "4943:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 4008,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "4943:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4009,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4002,
                                                            "src": "4957:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 4010,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "4957:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4943:24:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4006,
                                                "id": 4012,
                                                "nodeType": "Return",
                                                "src": "4936:31:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3996,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4656:171:27",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 4014,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "4841:17:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4003,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3999,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4875:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4014,
                                                "src": "4859:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 3998,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3997,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "4859:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "4859:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4002,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4894:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4014,
                                                "src": "4878:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4001,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4000,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "4878:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "4878:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4858:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 4006,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4005,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4014,
                                                "src": "4920:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4004,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4920:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4919:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "4832:142:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4033,
                                        "nodeType": "Block",
                                        "src": "5239:66:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4031,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4025,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4018,
                                                            "src": "5256:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 4026,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "5256:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4028,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4020,
                                                                    "src": "5287:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 4027,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "5270:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 4029,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5270:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 4030,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "5270:28:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5256:42:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4024,
                                                "id": 4032,
                                                "nodeType": "Return",
                                                "src": "5249:49:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4015,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4980:168:27",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 4034,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "5162:17:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4021,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4018,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "5196:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4034,
                                                "src": "5180:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4017,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4016,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "5180:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "5180:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4020,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "5207:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4034,
                                                "src": "5199:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4019,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5199:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5179:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4024,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4023,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4034,
                                                "src": "5233:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4022,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5233:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5232:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "5153:152:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4053,
                                        "nodeType": "Block",
                                        "src": "5570:66:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4051,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4046,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4037,
                                                                    "src": "5604:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 4045,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "5587:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 4047,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5587:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 4048,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "5587:28:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4049,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4040,
                                                            "src": "5619:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 4050,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3761,
                                                        "src": "5619:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5587:42:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4044,
                                                "id": 4052,
                                                "nodeType": "Return",
                                                "src": "5580:49:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4035,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5311:168:27",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a uint256.\n @param b a FixedPoint.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 4054,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "5493:17:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4041,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4037,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "5519:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4054,
                                                "src": "5511:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4036,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5511:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4040,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "5538:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4054,
                                                "src": "5522:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4039,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4038,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "5522:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "5522:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5510:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4044,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4043,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4054,
                                                "src": "5564:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4042,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5564:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5563:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "5484:152:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4076,
                                        "nodeType": "Block",
                                        "src": "5895:55:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 4071,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 4067,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4058,
                                                                "src": "5912:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4068,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3761,
                                                            "src": "5912:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 4069,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4061,
                                                                "src": "5925:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4070,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3761,
                                                            "src": "5925:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "5912:23:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 4073,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4061,
                                                        "src": "5942:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "id": 4074,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "5912:31:27",
                                                    "trueExpression": {
                                                        "id": 4072,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4058,
                                                        "src": "5938:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4066,
                                                "id": 4075,
                                                "nodeType": "Return",
                                                "src": "5905:38:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4055,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5642:157:27",
                                        "text": " @notice The minimum of `a` and `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the minimum of `a` and `b`."
                                    },
                                    "id": 4077,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "min",
                                    "nameLocation": "5813:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4062,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4058,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "5833:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4077,
                                                "src": "5817:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4057,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4056,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "5817:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "5817:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4061,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "5852:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4077,
                                                "src": "5836:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4060,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4059,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "5836:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "5836:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5816:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 4066,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4065,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4077,
                                                "src": "5878:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4064,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4063,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "5878:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "5878:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5877:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "5804:146:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4099,
                                        "nodeType": "Block",
                                        "src": "6209:55:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 4094,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 4090,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4081,
                                                                "src": "6226:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4091,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3761,
                                                            "src": "6226:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 4092,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4084,
                                                                "src": "6239:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4093,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3761,
                                                            "src": "6239:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "6226:23:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 4096,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4084,
                                                        "src": "6256:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "id": 4097,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "6226:31:27",
                                                    "trueExpression": {
                                                        "id": 4095,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4081,
                                                        "src": "6252:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4089,
                                                "id": 4098,
                                                "nodeType": "Return",
                                                "src": "6219:38:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4078,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5956:157:27",
                                        "text": " @notice The maximum of `a` and `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the maximum of `a` and `b`."
                                    },
                                    "id": 4100,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "max",
                                    "nameLocation": "6127:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4085,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4081,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "6147:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4100,
                                                "src": "6131:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4080,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4079,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "6131:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "6131:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4084,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "6166:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4100,
                                                "src": "6150:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4083,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4082,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "6150:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "6150:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6130:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 4089,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4088,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4100,
                                                "src": "6192:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4087,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4086,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "6192:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "6192:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6191:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "6118:146:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4122,
                                        "nodeType": "Block",
                                        "src": "6536:60:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 4117,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4107,
                                                                        "src": "6577:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 4118,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3761,
                                                                    "src": "6577:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 4114,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4104,
                                                                        "src": "6562:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 4115,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3761,
                                                                    "src": "6562:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 4116,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "add",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2389,
                                                                "src": "6562:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 4119,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6562:26:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4113,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3762,
                                                        "src": "6553:8:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 4120,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6553:36:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4112,
                                                "id": 4121,
                                                "nodeType": "Return",
                                                "src": "6546:43:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4101,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6270:170:27",
                                        "text": " @notice Adds two `Unsigned`s, reverting on overflow.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the sum of `a` and `b`."
                                    },
                                    "id": 4123,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "6454:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4108,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4104,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "6474:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4123,
                                                "src": "6458:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4103,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4102,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "6458:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "6458:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4107,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "6493:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4123,
                                                "src": "6477:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4106,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4105,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "6477:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "6477:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6457:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 4112,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4111,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4123,
                                                "src": "6519:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4110,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4109,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "6519:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "6519:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6518:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "6445:151:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4142,
                                        "nodeType": "Block",
                                        "src": "6875:51:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4136,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4127,
                                                            "src": "6896:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4138,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4129,
                                                                    "src": "6916:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 4137,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "6899:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 4139,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6899:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 4135,
                                                        "name": "add",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4123,
                                                            4143,
                                                            4938,
                                                            4958
                                                        ],
                                                        "referencedDeclaration": 4123,
                                                        "src": "6892:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$3762_memory_ptr_$_t_struct$_Unsigned_$3762_memory_ptr_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 4140,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6892:27:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4134,
                                                "id": 4141,
                                                "nodeType": "Return",
                                                "src": "6885:34:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4124,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6602:185:27",
                                        "text": " @notice Adds an `Unsigned` to an unscaled uint, reverting on overflow.\n @param a a FixedPoint.\n @param b a uint256.\n @return the sum of `a` and `b`."
                                    },
                                    "id": 4143,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "6801:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4130,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4127,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "6821:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "6805:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4126,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4125,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "6805:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "6805:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4129,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "6832:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "6824:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4128,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6824:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6804:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4134,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4133,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "6858:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4132,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4131,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "6858:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "6858:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6857:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "6792:134:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4165,
                                        "nodeType": "Block",
                                        "src": "7210:60:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 4160,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4150,
                                                                        "src": "7251:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 4161,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3761,
                                                                    "src": "7251:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 4157,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4147,
                                                                        "src": "7236:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 4158,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3761,
                                                                    "src": "7236:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 4159,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2404,
                                                                "src": "7236:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 4162,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "7236:26:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4156,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3762,
                                                        "src": "7227:8:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 4163,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7227:36:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4155,
                                                "id": 4164,
                                                "nodeType": "Return",
                                                "src": "7220:43:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4144,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6932:182:27",
                                        "text": " @notice Subtracts two `Unsigned`s, reverting on overflow.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 4166,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "7128:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4151,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4147,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "7148:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4166,
                                                "src": "7132:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4146,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4145,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "7132:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "7132:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4150,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "7167:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4166,
                                                "src": "7151:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4149,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4148,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "7151:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "7151:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7131:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 4155,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4154,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4166,
                                                "src": "7193:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4153,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4152,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "7193:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "7193:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7192:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "7119:151:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4185,
                                        "nodeType": "Block",
                                        "src": "7566:51:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4179,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4170,
                                                            "src": "7587:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4181,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4172,
                                                                    "src": "7607:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 4180,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "7590:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 4182,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "7590:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 4178,
                                                        "name": "sub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4166,
                                                            4186,
                                                            4206,
                                                            4981,
                                                            5001,
                                                            5021
                                                        ],
                                                        "referencedDeclaration": 4166,
                                                        "src": "7583:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$3762_memory_ptr_$_t_struct$_Unsigned_$3762_memory_ptr_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 4183,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7583:27:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4177,
                                                "id": 4184,
                                                "nodeType": "Return",
                                                "src": "7576:34:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4167,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7276:202:27",
                                        "text": " @notice Subtracts an unscaled uint256 from an `Unsigned`, reverting on overflow.\n @param a a FixedPoint.\n @param b a uint256.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 4186,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "7492:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4173,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4170,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "7512:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4186,
                                                "src": "7496:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4169,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4168,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "7496:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "7496:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4172,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "7523:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4186,
                                                "src": "7515:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4171,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7515:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7495:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4177,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4176,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4186,
                                                "src": "7549:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4175,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4174,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "7549:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "7549:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7548:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "7483:134:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4205,
                                        "nodeType": "Block",
                                        "src": "7913:51:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4200,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4189,
                                                                    "src": "7951:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 4199,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "7934:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 4201,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "7934:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 4202,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4192,
                                                            "src": "7955:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 4198,
                                                        "name": "sub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4166,
                                                            4186,
                                                            4206,
                                                            4981,
                                                            5001,
                                                            5021
                                                        ],
                                                        "referencedDeclaration": 4166,
                                                        "src": "7930:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$3762_memory_ptr_$_t_struct$_Unsigned_$3762_memory_ptr_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 4203,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7930:27:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4197,
                                                "id": 4204,
                                                "nodeType": "Return",
                                                "src": "7923:34:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4187,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7623:202:27",
                                        "text": " @notice Subtracts an `Unsigned` from an unscaled uint256, reverting on overflow.\n @param a a uint256.\n @param b a FixedPoint.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 4206,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "7839:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4193,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4189,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "7851:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4206,
                                                "src": "7843:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4188,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7843:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4192,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "7870:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4206,
                                                "src": "7854:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4191,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4190,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "7854:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "7854:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7842:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4197,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4196,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4206,
                                                "src": "7896:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4195,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4194,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "7896:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "7896:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7895:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "7830:134:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4230,
                                        "nodeType": "Block",
                                        "src": "8289:559:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 4227,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 4223,
                                                                            "name": "b",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4213,
                                                                            "src": "8809:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        },
                                                                        "id": 4224,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "rawValue",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3761,
                                                                        "src": "8809:10:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 4220,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4210,
                                                                            "src": "8794:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        },
                                                                        "id": 4221,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "rawValue",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3761,
                                                                        "src": "8794:10:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "id": 4222,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "mul",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2419,
                                                                    "src": "8794:14:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 4225,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8794:26:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "id": 4226,
                                                                "name": "FP_SCALING_FACTOR",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3759,
                                                                "src": "8823:17:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "8794:46:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4219,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3762,
                                                        "src": "8785:8:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 4228,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8785:56:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4218,
                                                "id": 4229,
                                                "nodeType": "Return",
                                                "src": "8778:63:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4207,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7970:223:27",
                                        "text": " @notice Multiplies two `Unsigned`s, reverting on overflow.\n @dev This will \"floor\" the product.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the product of `a` and `b`."
                                    },
                                    "id": 4231,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "8207:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4214,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4210,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "8227:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4231,
                                                "src": "8211:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4209,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4208,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "8211:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "8211:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4213,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "8246:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4231,
                                                "src": "8230:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4212,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4211,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "8230:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "8230:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8210:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 4218,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4217,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4231,
                                                "src": "8272:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4216,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4215,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "8272:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "8272:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8271:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "8198:650:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4251,
                                        "nodeType": "Block",
                                        "src": "9184:51:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4247,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4237,
                                                                    "src": "9225:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 4244,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4235,
                                                                        "src": "9210:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 4245,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3761,
                                                                    "src": "9210:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 4246,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2419,
                                                                "src": "9210:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 4248,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "9210:17:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4243,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3762,
                                                        "src": "9201:8:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 4249,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9201:27:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4242,
                                                "id": 4250,
                                                "nodeType": "Return",
                                                "src": "9194:34:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4232,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8854:242:27",
                                        "text": " @notice Multiplies an `Unsigned` and an unscaled uint256, reverting on overflow.\n @dev This will \"floor\" the product.\n @param a a FixedPoint.\n @param b a uint256.\n @return the product of `a` and `b`."
                                    },
                                    "id": 4252,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "9110:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4238,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4235,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "9130:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4252,
                                                "src": "9114:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4234,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4233,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "9114:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "9114:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4237,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "9141:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4252,
                                                "src": "9133:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4236,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9133:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9113:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4242,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4241,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4252,
                                                "src": "9167:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4240,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4239,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "9167:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "9167:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9166:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "9101:134:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4304,
                                        "nodeType": "Block",
                                        "src": "9546:304:27",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    4266
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4266,
                                                        "mutability": "mutable",
                                                        "name": "mulRaw",
                                                        "nameLocation": "9564:6:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4304,
                                                        "src": "9556:14:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4265,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9556:7:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4273,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4270,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4259,
                                                                "src": "9588:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4271,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3761,
                                                            "src": "9588:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "expression": {
                                                                "id": 4267,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4256,
                                                                "src": "9573:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4268,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3761,
                                                            "src": "9573:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 4269,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2419,
                                                        "src": "9573:14:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4272,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9573:26:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9556:43:27"
                                            },
                                            {
                                                "assignments": [
                                                    4275
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4275,
                                                        "mutability": "mutable",
                                                        "name": "mulFloor",
                                                        "nameLocation": "9617:8:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4304,
                                                        "src": "9609:16:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4274,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9609:7:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4279,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4278,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 4276,
                                                        "name": "mulRaw",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4266,
                                                        "src": "9628:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "id": 4277,
                                                        "name": "FP_SCALING_FACTOR",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3759,
                                                        "src": "9637:17:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9628:26:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9609:45:27"
                                            },
                                            {
                                                "assignments": [
                                                    4281
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4281,
                                                        "mutability": "mutable",
                                                        "name": "mod",
                                                        "nameLocation": "9672:3:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4304,
                                                        "src": "9664:11:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4280,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9664:7:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4286,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4284,
                                                            "name": "FP_SCALING_FACTOR",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3759,
                                                            "src": "9689:17:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 4282,
                                                            "name": "mulRaw",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4266,
                                                            "src": "9678:6:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 4283,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mod",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2449,
                                                        "src": "9678:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4285,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9678:29:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9664:43:27"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4289,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 4287,
                                                        "name": "mod",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4281,
                                                        "src": "9721:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 4288,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "9728:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "9721:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 4302,
                                                    "nodeType": "Block",
                                                    "src": "9794:50:27",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4299,
                                                                        "name": "mulFloor",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4275,
                                                                        "src": "9824:8:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 4298,
                                                                    "name": "Unsigned",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3762,
                                                                    "src": "9815:8:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                                    }
                                                                },
                                                                "id": 4300,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9815:18:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 4264,
                                                            "id": 4301,
                                                            "nodeType": "Return",
                                                            "src": "9808:25:27"
                                                        }
                                                    ]
                                                },
                                                "id": 4303,
                                                "nodeType": "IfStatement",
                                                "src": "9717:127:27",
                                                "trueBody": {
                                                    "id": 4297,
                                                    "nodeType": "Block",
                                                    "src": "9731:57:27",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "hexValue": "31",
                                                                                "id": 4293,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "9774:1:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 4291,
                                                                                "name": "mulFloor",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4275,
                                                                                "src": "9761:8:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "id": 4292,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "add",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2389,
                                                                            "src": "9761:12:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 4294,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "9761:15:27",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 4290,
                                                                    "name": "Unsigned",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3762,
                                                                    "src": "9752:8:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                                    }
                                                                },
                                                                "id": 4295,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9752:25:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 4264,
                                                            "id": 4296,
                                                            "nodeType": "Return",
                                                            "src": "9745:32:27"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4253,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9241:205:27",
                                        "text": " @notice Multiplies two `Unsigned`s and \"ceil's\" the product, reverting on overflow.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the product of `a` and `b`."
                                    },
                                    "id": 4305,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mulCeil",
                                    "nameLocation": "9460:7:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4260,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4256,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "9484:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4305,
                                                "src": "9468:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4255,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4254,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "9468:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "9468:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4259,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "9503:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4305,
                                                "src": "9487:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4258,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4257,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "9487:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "9487:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9467:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 4264,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4263,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4305,
                                                "src": "9529:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4262,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4261,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "9529:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "9529:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9528:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "9451:399:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4325,
                                        "nodeType": "Block",
                                        "src": "10175:145:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4321,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4311,
                                                                    "src": "10310:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 4318,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4309,
                                                                        "src": "10295:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 4319,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3761,
                                                                    "src": "10295:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 4320,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2419,
                                                                "src": "10295:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 4322,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "10295:17:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4317,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3762,
                                                        "src": "10286:8:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 4323,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "10286:27:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4316,
                                                "id": 4324,
                                                "nodeType": "Return",
                                                "src": "10279:34:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4306,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9856:227:27",
                                        "text": " @notice Multiplies an `Unsigned` and an unscaled uint256 and \"ceil's\" the product, reverting on overflow.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the product of `a` and `b`."
                                    },
                                    "id": 4326,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mulCeil",
                                    "nameLocation": "10097:7:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4312,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4309,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "10121:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4326,
                                                "src": "10105:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4308,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4307,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "10105:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "10105:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4311,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "10132:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4326,
                                                "src": "10124:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4310,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10124:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10104:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4316,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4315,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4326,
                                                "src": "10158:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4314,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4313,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "10158:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "10158:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10157:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "10088:232:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4351,
                                        "nodeType": "Block",
                                        "src": "10706:543:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 4346,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4333,
                                                                        "src": "11230:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 4347,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3761,
                                                                    "src": "11230:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 4343,
                                                                            "name": "FP_SCALING_FACTOR",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3759,
                                                                            "src": "11207:17:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "expression": {
                                                                                "id": 4340,
                                                                                "name": "a",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4330,
                                                                                "src": "11192:1:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                                }
                                                                            },
                                                                            "id": 4341,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "rawValue",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 3761,
                                                                            "src": "11192:10:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "id": 4342,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "mul",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2419,
                                                                        "src": "11192:14:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 4344,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "11192:33:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 4345,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "div",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2434,
                                                                "src": "11192:37:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 4348,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11192:49:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4339,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3762,
                                                        "src": "11183:8:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 4349,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11183:59:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4338,
                                                "id": 4350,
                                                "nodeType": "Return",
                                                "src": "11176:66:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4327,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10326:284:27",
                                        "text": " @notice Divides one `Unsigned` by an `Unsigned`, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a FixedPoint numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 4352,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "10624:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4334,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4330,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "10644:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4352,
                                                "src": "10628:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4329,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4328,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "10628:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "10628:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4333,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "10663:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4352,
                                                "src": "10647:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4332,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4331,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "10647:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "10647:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10627:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 4338,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4337,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4352,
                                                "src": "10689:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4336,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4335,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "10689:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "10689:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10688:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "10615:634:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4372,
                                        "nodeType": "Block",
                                        "src": "11630:51:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4368,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4358,
                                                                    "src": "11671:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 4365,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4356,
                                                                        "src": "11656:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 4366,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3761,
                                                                    "src": "11656:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 4367,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "div",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2434,
                                                                "src": "11656:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 4369,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11656:17:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4364,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3762,
                                                        "src": "11647:8:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 4370,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11647:27:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4363,
                                                "id": 4371,
                                                "nodeType": "Return",
                                                "src": "11640:34:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4353,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11255:287:27",
                                        "text": " @notice Divides one `Unsigned` by an unscaled uint256, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a FixedPoint numerator.\n @param b a uint256 denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 4373,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "11556:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4359,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4356,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "11576:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4373,
                                                "src": "11560:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4355,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4354,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "11560:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "11560:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4358,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "11587:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4373,
                                                "src": "11579:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4357,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11579:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11559:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4363,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4362,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4373,
                                                "src": "11613:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4361,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4360,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "11613:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "11613:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11612:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "11547:134:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4392,
                                        "nodeType": "Block",
                                        "src": "12062:51:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4387,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4376,
                                                                    "src": "12100:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 4386,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "12083:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 4388,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "12083:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 4389,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4379,
                                                            "src": "12104:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 4385,
                                                        "name": "div",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4352,
                                                            4373,
                                                            4393,
                                                            5192,
                                                            5213,
                                                            5233
                                                        ],
                                                        "referencedDeclaration": 4352,
                                                        "src": "12079:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$3762_memory_ptr_$_t_struct$_Unsigned_$3762_memory_ptr_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 4390,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12079:27:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4384,
                                                "id": 4391,
                                                "nodeType": "Return",
                                                "src": "12072:34:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4374,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11687:287:27",
                                        "text": " @notice Divides one unscaled uint256 by an `Unsigned`, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a uint256 numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 4393,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "11988:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4380,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4376,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "12000:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4393,
                                                "src": "11992:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4375,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11992:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4379,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "12019:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4393,
                                                "src": "12003:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4378,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4377,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "12003:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "12003:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11991:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4384,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4383,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4393,
                                                "src": "12045:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4382,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4381,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "12045:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "12045:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12044:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "11979:134:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4447,
                                        "nodeType": "Block",
                                        "src": "12485:303:27",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    4407
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4407,
                                                        "mutability": "mutable",
                                                        "name": "aScaled",
                                                        "nameLocation": "12503:7:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4447,
                                                        "src": "12495:15:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4406,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12495:7:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4413,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4411,
                                                            "name": "FP_SCALING_FACTOR",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3759,
                                                            "src": "12528:17:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "expression": {
                                                                "id": 4408,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4397,
                                                                "src": "12513:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4409,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3761,
                                                            "src": "12513:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 4410,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2419,
                                                        "src": "12513:14:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4412,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12513:33:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12495:51:27"
                                            },
                                            {
                                                "assignments": [
                                                    4415
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4415,
                                                        "mutability": "mutable",
                                                        "name": "divFloor",
                                                        "nameLocation": "12564:8:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4447,
                                                        "src": "12556:16:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4414,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12556:7:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4421,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4418,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4400,
                                                                "src": "12587:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4419,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3761,
                                                            "src": "12587:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 4416,
                                                            "name": "aScaled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4407,
                                                            "src": "12575:7:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 4417,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "div",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2434,
                                                        "src": "12575:11:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4420,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12575:23:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12556:42:27"
                                            },
                                            {
                                                "assignments": [
                                                    4423
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4423,
                                                        "mutability": "mutable",
                                                        "name": "mod",
                                                        "nameLocation": "12616:3:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4447,
                                                        "src": "12608:11:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4422,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12608:7:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4429,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4426,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4400,
                                                                "src": "12634:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4427,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3761,
                                                            "src": "12634:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 4424,
                                                            "name": "aScaled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4407,
                                                            "src": "12622:7:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 4425,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mod",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2449,
                                                        "src": "12622:11:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4428,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12622:23:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12608:37:27"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4432,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 4430,
                                                        "name": "mod",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4423,
                                                        "src": "12659:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 4431,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "12666:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "12659:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 4445,
                                                    "nodeType": "Block",
                                                    "src": "12732:50:27",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4442,
                                                                        "name": "divFloor",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4415,
                                                                        "src": "12762:8:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 4441,
                                                                    "name": "Unsigned",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3762,
                                                                    "src": "12753:8:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                                    }
                                                                },
                                                                "id": 4443,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "12753:18:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 4405,
                                                            "id": 4444,
                                                            "nodeType": "Return",
                                                            "src": "12746:25:27"
                                                        }
                                                    ]
                                                },
                                                "id": 4446,
                                                "nodeType": "IfStatement",
                                                "src": "12655:127:27",
                                                "trueBody": {
                                                    "id": 4440,
                                                    "nodeType": "Block",
                                                    "src": "12669:57:27",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "hexValue": "31",
                                                                                "id": 4436,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "12712:1:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 4434,
                                                                                "name": "divFloor",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4415,
                                                                                "src": "12699:8:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "id": 4435,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "add",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2389,
                                                                            "src": "12699:12:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 4437,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "12699:15:27",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 4433,
                                                                    "name": "Unsigned",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3762,
                                                                    "src": "12690:8:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                                    }
                                                                },
                                                                "id": 4438,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "12690:25:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 4405,
                                                            "id": 4439,
                                                            "nodeType": "Return",
                                                            "src": "12683:32:27"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4394,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "12119:266:27",
                                        "text": " @notice Divides one `Unsigned` by an `Unsigned` and \"ceil's\" the quotient, reverting on overflow or division by 0.\n @param a a FixedPoint numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 4448,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "divCeil",
                                    "nameLocation": "12399:7:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4401,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4397,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "12423:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4448,
                                                "src": "12407:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4396,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4395,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "12407:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "12407:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4400,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "12442:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4448,
                                                "src": "12426:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4399,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4398,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "12426:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "12426:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12406:38:27"
                                    },
                                    "returnParameters": {
                                        "id": 4405,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4404,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4448,
                                                "src": "12468:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4403,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4402,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "12468:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "12468:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12467:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "12390:398:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4467,
                                        "nodeType": "Block",
                                        "src": "13155:363:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4461,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4452,
                                                            "src": "13488:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4463,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4454,
                                                                    "src": "13508:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 4462,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3779,
                                                                "src": "13491:16:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 4464,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13491:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 4460,
                                                        "name": "divCeil",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4448,
                                                            4468
                                                        ],
                                                        "referencedDeclaration": 4448,
                                                        "src": "13480:7:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$3762_memory_ptr_$_t_struct$_Unsigned_$3762_memory_ptr_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 4465,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13480:31:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4459,
                                                "id": 4466,
                                                "nodeType": "Return",
                                                "src": "13473:38:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4449,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "12794:269:27",
                                        "text": " @notice Divides one `Unsigned` by an unscaled uint256 and \"ceil's\" the quotient, reverting on overflow or division by 0.\n @param a a FixedPoint numerator.\n @param b a uint256 denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 4468,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "divCeil",
                                    "nameLocation": "13077:7:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4455,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4452,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "13101:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4468,
                                                "src": "13085:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4451,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4450,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "13085:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "13085:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4454,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "13112:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4468,
                                                "src": "13104:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4453,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13104:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13084:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4459,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4458,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4468,
                                                "src": "13138:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4457,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4456,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "13138:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "13138:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13137:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "13068:450:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4509,
                                        "nodeType": "Block",
                                        "src": "13922:143:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 4484,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4480,
                                                        "name": "output",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4478,
                                                        "src": "13932:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "31",
                                                                "id": 4482,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "13958:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                }
                                                            ],
                                                            "id": 4481,
                                                            "name": "fromUnscaledUint",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3779,
                                                            "src": "13941:16:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                            }
                                                        },
                                                        "id": 4483,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "13941:19:27",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "src": "13932:28:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "id": 4485,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13932:28:27"
                                            },
                                            {
                                                "body": {
                                                    "id": 4507,
                                                    "nodeType": "Block",
                                                    "src": "14011:48:27",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 4505,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 4500,
                                                                    "name": "output",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4478,
                                                                    "src": "14025:6:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 4502,
                                                                            "name": "output",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4478,
                                                                            "src": "14038:6:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 4503,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4472,
                                                                            "src": "14046:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        ],
                                                                        "id": 4501,
                                                                        "name": "mul",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            4231,
                                                                            4252,
                                                                            5046,
                                                                            5067
                                                                        ],
                                                                        "referencedDeclaration": 4231,
                                                                        "src": "14034:3:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$3762_memory_ptr_$_t_struct$_Unsigned_$3762_memory_ptr_$returns$_t_struct$_Unsigned_$3762_memory_ptr_$",
                                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                                        }
                                                                    },
                                                                    "id": 4504,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "14034:14:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                                    }
                                                                },
                                                                "src": "14025:23:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 4506,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "14025:23:27"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4492,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 4490,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4487,
                                                        "src": "13990:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "id": 4491,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4474,
                                                        "src": "13994:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "13990:5:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 4508,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        4487
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 4487,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "13983:1:27",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 4508,
                                                            "src": "13975:9:27",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 4486,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "13975:7:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 4489,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 4488,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "13987:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "13975:13:27"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 4498,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "id": 4493,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4487,
                                                            "src": "13997:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "31",
                                                                    "id": 4496,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "14007:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    },
                                                                    "value": "1"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 4494,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4487,
                                                                    "src": "14001:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 4495,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "add",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2389,
                                                                "src": "14001:5:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 4497,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14001:8:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "13997:12:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 4499,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "13997:12:27"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "13970:89:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4469,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "13524:303:27",
                                        "text": " @notice Raises an `Unsigned` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\n @dev This will \"floor\" the result.\n @param a a FixedPoint numerator.\n @param b a uint256 denominator.\n @return output is `a` to the power of `b`."
                                    },
                                    "id": 4510,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "pow",
                                    "nameLocation": "13841:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4475,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4472,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "13861:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4510,
                                                "src": "13845:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4471,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4470,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "13845:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "13845:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4474,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "13872:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4510,
                                                "src": "13864:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4473,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13864:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13844:30:27"
                                    },
                                    "returnParameters": {
                                        "id": 4479,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4478,
                                                "mutability": "mutable",
                                                "name": "output",
                                                "nameLocation": "13914:6:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4510,
                                                "src": "13898:22:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4477,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4476,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "13898:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "13898:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13897:24:27"
                                    },
                                    "scope": 5376,
                                    "src": "13832:233:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 4515,
                                    "mutability": "constant",
                                    "name": "SFP_SCALING_FACTOR",
                                    "nameLocation": "14457:18:27",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5376,
                                    "src": "14433:51:27",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 4511,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14433:6:27",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "value": {
                                        "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        },
                                        "id": 4514,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 4512,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14478:2:27",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                            "hexValue": "3138",
                                            "id": 4513,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14482:2:27",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_18_by_1",
                                                "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                        },
                                        "src": "14478:6:27",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "canonicalName": "FixedPoint.Signed",
                                    "id": 4518,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 4517,
                                            "mutability": "mutable",
                                            "name": "rawValue",
                                            "nameLocation": "14522:8:27",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4518,
                                            "src": "14515:15:27",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 4516,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14515:6:27",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "Signed",
                                    "nameLocation": "14498:6:27",
                                    "nodeType": "StructDefinition",
                                    "scope": 5376,
                                    "src": "14491:46:27",
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 4543,
                                        "nodeType": "Block",
                                        "src": "14620:114:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 4531,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 4528,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4521,
                                                                    "src": "14638:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Signed memory"
                                                                    }
                                                                },
                                                                "id": 4529,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "rawValue",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 4517,
                                                                "src": "14638:10:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 4530,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "14652:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "14638:15:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4e656761746976652076616c75652070726f7669646564",
                                                            "id": 4532,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "14655:25:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_67d4d663a223777b2db72220a0c432830eddb0393ba77b536f13c5166cce6d79",
                                                                "typeString": "literal_string \"Negative value provided\""
                                                            },
                                                            "value": "Negative value provided"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_67d4d663a223777b2db72220a0c432830eddb0393ba77b536f13c5166cce6d79",
                                                                "typeString": "literal_string \"Negative value provided\""
                                                            }
                                                        ],
                                                        "id": 4527,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "14630:7:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4533,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14630:51:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4534,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14630:51:27"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 4538,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4521,
                                                                        "src": "14715:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 4539,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 4517,
                                                                    "src": "14715:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4537,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "14707:7:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                                    "typeString": "type(uint256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 4536,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "14707:7:27",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 4540,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14707:19:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4535,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3762,
                                                        "src": "14698:8:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$3762_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 4541,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14698:29:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4526,
                                                "id": 4542,
                                                "nodeType": "Return",
                                                "src": "14691:36:27"
                                            }
                                        ]
                                    },
                                    "id": 4544,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "fromSigned",
                                    "nameLocation": "14552:10:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4522,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4521,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "14577:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4544,
                                                "src": "14563:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4520,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4519,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "14563:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "14563:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "14562:17:27"
                                    },
                                    "returnParameters": {
                                        "id": 4526,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4525,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4544,
                                                "src": "14603:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4524,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4523,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "14603:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "14603:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "14602:17:27"
                                    },
                                    "scope": 5376,
                                    "src": "14543:191:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4576,
                                        "nodeType": "Block",
                                        "src": "14819:130:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 4564,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 4554,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4547,
                                                                    "src": "14837:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                                    }
                                                                },
                                                                "id": 4555,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "rawValue",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3761,
                                                                "src": "14837:10:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 4560,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                    "src": "14864:6:27",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                                        "typeString": "type(int256)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 4559,
                                                                                        "name": "int256",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "14864:6:27",
                                                                                        "typeDescriptions": {}
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                                        "typeString": "type(int256)"
                                                                                    }
                                                                                ],
                                                                                "id": 4558,
                                                                                "name": "type",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -27,
                                                                                "src": "14859:4:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                                                    "typeString": "function () pure"
                                                                                }
                                                                            },
                                                                            "id": 4561,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "14859:12:27",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_meta_type_t_int256",
                                                                                "typeString": "type(int256)"
                                                                            }
                                                                        },
                                                                        "id": 4562,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "memberName": "max",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "14859:16:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 4557,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "14851:7:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_uint256_$",
                                                                        "typeString": "type(uint256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 4556,
                                                                        "name": "uint256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "14851:7:27",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 4563,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "14851:25:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "14837:39:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "556e7369676e656420746f6f206c61726765",
                                                            "id": 4565,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "14878:20:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_691496971f117be8e4dbef07509d13e2786a6857df6bd4e7d50c0d0707e224ae",
                                                                "typeString": "literal_string \"Unsigned too large\""
                                                            },
                                                            "value": "Unsigned too large"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_691496971f117be8e4dbef07509d13e2786a6857df6bd4e7d50c0d0707e224ae",
                                                                "typeString": "literal_string \"Unsigned too large\""
                                                            }
                                                        ],
                                                        "id": 4553,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "14829:7:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4566,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14829:70:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4567,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14829:70:27"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 4571,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4547,
                                                                        "src": "14930:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 4572,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3761,
                                                                    "src": "14930:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 4570,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "14923:6:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 4569,
                                                                    "name": "int256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "14923:6:27",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 4573,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14923:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 4568,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4518,
                                                        "src": "14916:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 4574,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14916:26:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4552,
                                                "id": 4575,
                                                "nodeType": "Return",
                                                "src": "14909:33:27"
                                            }
                                        ]
                                    },
                                    "id": 4577,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "fromUnsigned",
                                    "nameLocation": "14749:12:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4548,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4547,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "14778:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4577,
                                                "src": "14762:17:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 4546,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4545,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "14762:8:27"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "14762:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "14761:19:27"
                                    },
                                    "returnParameters": {
                                        "id": 4552,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4551,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4577,
                                                "src": "14804:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4550,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4549,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "14804:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "14804:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "14803:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "14740:209:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4593,
                                        "nodeType": "Block",
                                        "src": "15260:57:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4589,
                                                                    "name": "SFP_SCALING_FACTOR",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4515,
                                                                    "src": "15290:18:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 4587,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4580,
                                                                    "src": "15284:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 4588,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2543,
                                                                "src": "15284:5:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 4590,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "15284:25:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 4586,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4518,
                                                        "src": "15277:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 4591,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15277:33:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4585,
                                                "id": 4592,
                                                "nodeType": "Return",
                                                "src": "15270:40:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4578,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "14955:227:27",
                                        "text": " @notice Constructs a `Signed` from an unscaled int, e.g., `b=5` gets stored internally as `5*(10**18)`.\n @param a int to convert into a FixedPoint.Signed.\n @return the converted FixedPoint.Signed."
                                    },
                                    "id": 4594,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "fromUnscaledInt",
                                    "nameLocation": "15196:15:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4581,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4580,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "15219:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4594,
                                                "src": "15212:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4579,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15212:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15211:10:27"
                                    },
                                    "returnParameters": {
                                        "id": 4585,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4584,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4594,
                                                "src": "15245:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4583,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4582,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "15245:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "15245:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15244:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "15187:130:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4613,
                                        "nodeType": "Block",
                                        "src": "15559:65:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4611,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4605,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4598,
                                                            "src": "15576:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4606,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "15576:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4608,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4600,
                                                                    "src": "15606:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4607,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "15590:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4609,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "15590:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4610,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "15590:27:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "15576:41:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4604,
                                                "id": 4612,
                                                "nodeType": "Return",
                                                "src": "15569:48:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4595,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "15323:158:27",
                                        "text": " @notice Whether `a` is equal to `b`.\n @param a a FixedPoint.Signed.\n @param b a int256.\n @return True if equal, or False."
                                    },
                                    "id": 4614,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isEqual",
                                    "nameLocation": "15495:7:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4601,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4598,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "15517:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4614,
                                                "src": "15503:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4597,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4596,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "15503:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "15503:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4600,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "15527:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4614,
                                                "src": "15520:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4599,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15520:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15502:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4604,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4603,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4614,
                                                "src": "15553:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4602,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15553:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15552:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "15486:138:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4632,
                                        "nodeType": "Block",
                                        "src": "15884:48:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4630,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4626,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4618,
                                                            "src": "15901:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4627,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "15901:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4628,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4621,
                                                            "src": "15915:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4629,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "15915:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "15901:24:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4625,
                                                "id": 4631,
                                                "nodeType": "Return",
                                                "src": "15894:31:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4615,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "15630:169:27",
                                        "text": " @notice Whether `a` is equal to `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if equal, or False."
                                    },
                                    "id": 4633,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isEqual",
                                    "nameLocation": "15813:7:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4622,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4618,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "15835:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4633,
                                                "src": "15821:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4617,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4616,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "15821:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "15821:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4621,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "15852:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4633,
                                                "src": "15838:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4620,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4619,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "15838:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "15838:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15820:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 4625,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4624,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4633,
                                                "src": "15878:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4623,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15878:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15877:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "15804:128:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4651,
                                        "nodeType": "Block",
                                        "src": "16204:47:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4649,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4645,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4637,
                                                            "src": "16221:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4646,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "16221:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4647,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4640,
                                                            "src": "16234:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4648,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "16234:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "16221:23:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4644,
                                                "id": 4650,
                                                "nodeType": "Return",
                                                "src": "16214:30:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4634,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "15938:175:27",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if `a > b`, or False."
                                    },
                                    "id": 4652,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "16127:13:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4641,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4637,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "16155:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4652,
                                                "src": "16141:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4636,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4635,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "16141:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "16141:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4640,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "16172:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4652,
                                                "src": "16158:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4639,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4638,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "16158:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "16158:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16140:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 4644,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4643,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4652,
                                                "src": "16198:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4642,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16198:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16197:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "16118:133:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4671,
                                        "nodeType": "Block",
                                        "src": "16506:64:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4669,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4663,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4656,
                                                            "src": "16523:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4664,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "16523:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4666,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4658,
                                                                    "src": "16552:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4665,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "16536:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4667,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "16536:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4668,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "16536:27:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "16523:40:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4662,
                                                "id": 4670,
                                                "nodeType": "Return",
                                                "src": "16516:47:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4653,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "16257:165:27",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return True if `a > b`, or False."
                                    },
                                    "id": 4672,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "16436:13:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4659,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4656,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "16464:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4672,
                                                "src": "16450:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4655,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4654,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "16450:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "16450:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4658,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "16474:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4672,
                                                "src": "16467:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4657,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16467:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16449:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4662,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4661,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4672,
                                                "src": "16500:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4660,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16500:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16499:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "16427:143:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4691,
                                        "nodeType": "Block",
                                        "src": "16825:64:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4689,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4684,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4675,
                                                                    "src": "16858:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4683,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "16842:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4685,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "16842:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4686,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "16842:27:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4687,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4678,
                                                            "src": "16872:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4688,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "16872:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "16842:40:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4682,
                                                "id": 4690,
                                                "nodeType": "Return",
                                                "src": "16835:47:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4673,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "16576:165:27",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return True if `a > b`, or False."
                                    },
                                    "id": 4692,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "16755:13:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4679,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4675,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "16776:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4692,
                                                "src": "16769:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4674,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16769:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4678,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "16793:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4692,
                                                "src": "16779:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4677,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4676,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "16779:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "16779:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16768:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4682,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4681,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4692,
                                                "src": "16819:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4680,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16819:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16818:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "16746:143:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4710,
                                        "nodeType": "Block",
                                        "src": "17181:48:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4708,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4704,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4696,
                                                            "src": "17198:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4705,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "17198:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4706,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4699,
                                                            "src": "17212:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4707,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "17212:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "17198:24:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4703,
                                                "id": 4709,
                                                "nodeType": "Return",
                                                "src": "17191:31:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4693,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "16895:188:27",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 4711,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "17097:20:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4700,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4696,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "17132:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4711,
                                                "src": "17118:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4695,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4694,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "17118:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "17118:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4699,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "17149:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4711,
                                                "src": "17135:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4698,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4697,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "17135:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "17135:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17117:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 4703,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4702,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4711,
                                                "src": "17175:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4701,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17175:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17174:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "17088:141:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4730,
                                        "nodeType": "Block",
                                        "src": "17504:65:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4728,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4722,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4715,
                                                            "src": "17521:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4723,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "17521:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4725,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4717,
                                                                    "src": "17551:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4724,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "17535:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4726,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "17535:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4727,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "17535:27:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "17521:41:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4721,
                                                "id": 4729,
                                                "nodeType": "Return",
                                                "src": "17514:48:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4712,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "17235:178:27",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 4731,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "17427:20:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4718,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4715,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "17462:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4731,
                                                "src": "17448:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4714,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4713,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "17448:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "17448:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4717,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "17472:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4731,
                                                "src": "17465:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4716,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17465:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17447:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4721,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4720,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4731,
                                                "src": "17498:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4719,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17498:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17497:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "17418:151:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4750,
                                        "nodeType": "Block",
                                        "src": "17844:65:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4748,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4743,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4734,
                                                                    "src": "17877:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4742,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "17861:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4744,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "17861:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4745,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "17861:27:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4746,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4737,
                                                            "src": "17892:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4747,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "17892:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "17861:41:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4741,
                                                "id": 4749,
                                                "nodeType": "Return",
                                                "src": "17854:48:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4732,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "17575:178:27",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 4751,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "17767:20:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4738,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4734,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "17795:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4751,
                                                "src": "17788:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4733,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17788:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4737,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "17812:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4751,
                                                "src": "17798:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4736,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4735,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "17798:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "17798:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17787:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4741,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4740,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4751,
                                                "src": "17838:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4739,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17838:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17837:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "17758:151:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4769,
                                        "nodeType": "Block",
                                        "src": "18175:47:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4767,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4763,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4755,
                                                            "src": "18192:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4764,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "18192:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4765,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4758,
                                                            "src": "18205:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4766,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "18205:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "18192:23:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4762,
                                                "id": 4768,
                                                "nodeType": "Return",
                                                "src": "18185:30:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4752,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "17915:172:27",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if `a < b`, or False."
                                    },
                                    "id": 4770,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "18101:10:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4759,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4755,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "18126:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4770,
                                                "src": "18112:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4754,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4753,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "18112:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "18112:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4758,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "18143:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4770,
                                                "src": "18129:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4757,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4756,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "18129:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "18129:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18111:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 4762,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4761,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4770,
                                                "src": "18169:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4760,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18169:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18168:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "18092:130:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4789,
                                        "nodeType": "Block",
                                        "src": "18471:64:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4787,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4781,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4774,
                                                            "src": "18488:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4782,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "18488:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4784,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4776,
                                                                    "src": "18517:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4783,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "18501:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4785,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "18501:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4786,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "18501:27:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "18488:40:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4780,
                                                "id": 4788,
                                                "nodeType": "Return",
                                                "src": "18481:47:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4771,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "18228:162:27",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return True if `a < b`, or False."
                                    },
                                    "id": 4790,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "18404:10:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4777,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4774,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "18429:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4790,
                                                "src": "18415:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4773,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4772,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "18415:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "18415:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4776,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "18439:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4790,
                                                "src": "18432:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4775,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18432:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18414:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4780,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4779,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4790,
                                                "src": "18465:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4778,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18465:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18464:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "18395:140:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4809,
                                        "nodeType": "Block",
                                        "src": "18784:64:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4807,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4802,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4793,
                                                                    "src": "18817:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4801,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "18801:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4803,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "18801:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4804,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "18801:27:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4805,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4796,
                                                            "src": "18831:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4806,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "18831:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "18801:40:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4800,
                                                "id": 4808,
                                                "nodeType": "Return",
                                                "src": "18794:47:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4791,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "18541:162:27",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return True if `a < b`, or False."
                                    },
                                    "id": 4810,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "18717:10:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4797,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4793,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "18735:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4810,
                                                "src": "18728:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4792,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18728:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4796,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "18752:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4810,
                                                "src": "18738:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4795,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4794,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "18738:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "18738:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18727:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4800,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4799,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4810,
                                                "src": "18778:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4798,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18778:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18777:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "18708:140:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4828,
                                        "nodeType": "Block",
                                        "src": "19134:48:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4826,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4822,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4814,
                                                            "src": "19151:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4823,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "19151:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4824,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4817,
                                                            "src": "19165:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4825,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "19165:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "19151:24:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4821,
                                                "id": 4827,
                                                "nodeType": "Return",
                                                "src": "19144:31:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4811,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "18854:185:27",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 4829,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "19053:17:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4818,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4814,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "19085:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4829,
                                                "src": "19071:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4813,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4812,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "19071:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "19071:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4817,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "19102:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4829,
                                                "src": "19088:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4816,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4815,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "19088:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "19088:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19070:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 4821,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4820,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4829,
                                                "src": "19128:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4819,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19128:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19127:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "19044:138:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4848,
                                        "nodeType": "Block",
                                        "src": "19451:65:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4846,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4840,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4833,
                                                            "src": "19468:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4841,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "19468:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4843,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4835,
                                                                    "src": "19498:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4842,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "19482:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4844,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "19482:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4845,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "19482:27:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "19468:41:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4839,
                                                "id": 4847,
                                                "nodeType": "Return",
                                                "src": "19461:48:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4830,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "19188:175:27",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 4849,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "19377:17:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4836,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4833,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "19409:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4849,
                                                "src": "19395:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4832,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4831,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "19395:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "19395:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4835,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "19419:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4849,
                                                "src": "19412:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4834,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19412:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19394:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4839,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4838,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4849,
                                                "src": "19445:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4837,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19445:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19444:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "19368:148:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4868,
                                        "nodeType": "Block",
                                        "src": "19785:65:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4866,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4861,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4852,
                                                                    "src": "19818:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4860,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "19802:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4862,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "19802:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4863,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "19802:27:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 4864,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4855,
                                                            "src": "19833:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 4865,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "19833:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "19802:41:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 4859,
                                                "id": 4867,
                                                "nodeType": "Return",
                                                "src": "19795:48:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4850,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "19522:175:27",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 4869,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "19711:17:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4856,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4852,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "19736:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4869,
                                                "src": "19729:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4851,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19729:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4855,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "19753:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4869,
                                                "src": "19739:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4854,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4853,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "19739:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "19739:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19728:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4859,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4858,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4869,
                                                "src": "19779:4:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4857,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19779:4:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19778:6:27"
                                    },
                                    "scope": 5376,
                                    "src": "19702:148:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4891,
                                        "nodeType": "Block",
                                        "src": "20117:55:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 4886,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 4882,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4873,
                                                                "src": "20134:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 4883,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 4517,
                                                            "src": "20134:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 4884,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4876,
                                                                "src": "20147:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 4885,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 4517,
                                                            "src": "20147:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "20134:23:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 4888,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4876,
                                                        "src": "20164:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "id": 4889,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "20134:31:27",
                                                    "trueExpression": {
                                                        "id": 4887,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4873,
                                                        "src": "20160:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4881,
                                                "id": 4890,
                                                "nodeType": "Return",
                                                "src": "20127:38:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4870,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "19856:171:27",
                                        "text": " @notice The minimum of `a` and `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the minimum of `a` and `b`."
                                    },
                                    "id": 4892,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "min",
                                    "nameLocation": "20041:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4877,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4873,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "20059:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4892,
                                                "src": "20045:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4872,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4871,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "20045:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "20045:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4876,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "20076:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4892,
                                                "src": "20062:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4875,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4874,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "20062:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "20062:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20044:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 4881,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4880,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4892,
                                                "src": "20102:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4879,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4878,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "20102:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "20102:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20101:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "20032:140:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4914,
                                        "nodeType": "Block",
                                        "src": "20439:55:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 4909,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 4905,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4896,
                                                                "src": "20456:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 4906,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 4517,
                                                            "src": "20456:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 4907,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4899,
                                                                "src": "20469:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 4908,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 4517,
                                                            "src": "20469:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "20456:23:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 4911,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4899,
                                                        "src": "20486:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "id": 4912,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "20456:31:27",
                                                    "trueExpression": {
                                                        "id": 4910,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4896,
                                                        "src": "20482:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4904,
                                                "id": 4913,
                                                "nodeType": "Return",
                                                "src": "20449:38:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4893,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "20178:171:27",
                                        "text": " @notice The maximum of `a` and `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the maximum of `a` and `b`."
                                    },
                                    "id": 4915,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "max",
                                    "nameLocation": "20363:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4900,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4896,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "20381:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4915,
                                                "src": "20367:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4895,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4894,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "20367:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "20367:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4899,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "20398:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4915,
                                                "src": "20384:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4898,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4897,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "20384:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "20384:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20366:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 4904,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4903,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4915,
                                                "src": "20424:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4902,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4901,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "20424:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "20424:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20423:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "20354:140:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4937,
                                        "nodeType": "Block",
                                        "src": "20772:58:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 4932,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4922,
                                                                        "src": "20811:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 4933,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 4517,
                                                                    "src": "20811:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 4929,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4919,
                                                                        "src": "20796:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 4930,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 4517,
                                                                    "src": "20796:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 4931,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "add",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2588,
                                                                "src": "20796:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 4934,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "20796:26:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 4928,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4518,
                                                        "src": "20789:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 4935,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "20789:34:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4927,
                                                "id": 4936,
                                                "nodeType": "Return",
                                                "src": "20782:41:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4916,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "20500:182:27",
                                        "text": " @notice Adds two `Signed`s, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the sum of `a` and `b`."
                                    },
                                    "id": 4938,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "20696:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4923,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4919,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "20714:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4938,
                                                "src": "20700:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4918,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4917,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "20700:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "20700:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4922,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "20731:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4938,
                                                "src": "20717:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4921,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4920,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "20717:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "20717:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20699:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 4927,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4926,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4938,
                                                "src": "20757:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4925,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4924,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "20757:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "20757:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20756:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "20687:143:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4957,
                                        "nodeType": "Block",
                                        "src": "21108:50:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4951,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4942,
                                                            "src": "21129:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4953,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4944,
                                                                    "src": "21148:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4952,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "21132:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4954,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "21132:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 4950,
                                                        "name": "add",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4123,
                                                            4143,
                                                            4938,
                                                            4958
                                                        ],
                                                        "referencedDeclaration": 4938,
                                                        "src": "21125:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_struct$_Signed_$4518_memory_ptr_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 4955,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21125:26:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4949,
                                                "id": 4956,
                                                "nodeType": "Return",
                                                "src": "21118:33:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4939,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "20836:189:27",
                                        "text": " @notice Adds an `Signed` to an unscaled int, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return the sum of `a` and `b`."
                                    },
                                    "id": 4958,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "21039:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4945,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4942,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "21057:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4958,
                                                "src": "21043:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4941,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4940,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "21043:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "21043:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4944,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "21067:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4958,
                                                "src": "21060:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4943,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "21060:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21042:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4949,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4948,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4958,
                                                "src": "21093:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4947,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4946,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "21093:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "21093:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21092:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "21030:128:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4980,
                                        "nodeType": "Block",
                                        "src": "21448:58:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 4975,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4965,
                                                                        "src": "21487:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 4976,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 4517,
                                                                    "src": "21487:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 4972,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4962,
                                                                        "src": "21472:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 4973,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 4517,
                                                                    "src": "21472:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 4974,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2573,
                                                                "src": "21472:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 4977,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "21472:26:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 4971,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4518,
                                                        "src": "21465:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 4978,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21465:34:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4970,
                                                "id": 4979,
                                                "nodeType": "Return",
                                                "src": "21458:41:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4959,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "21164:194:27",
                                        "text": " @notice Subtracts two `Signed`s, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 4981,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "21372:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4966,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4962,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "21390:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4981,
                                                "src": "21376:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4961,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4960,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "21376:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "21376:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4965,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "21407:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4981,
                                                "src": "21393:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4964,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4963,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "21393:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "21393:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21375:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 4970,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4969,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4981,
                                                "src": "21433:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4968,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4967,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "21433:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "21433:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21432:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "21363:143:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5000,
                                        "nodeType": "Block",
                                        "src": "21801:50:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4994,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4985,
                                                            "src": "21822:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4996,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4987,
                                                                    "src": "21841:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 4995,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "21825:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 4997,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "21825:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 4993,
                                                        "name": "sub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4166,
                                                            4186,
                                                            4206,
                                                            4981,
                                                            5001,
                                                            5021
                                                        ],
                                                        "referencedDeclaration": 4981,
                                                        "src": "21818:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_struct$_Signed_$4518_memory_ptr_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 4998,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21818:26:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 4992,
                                                "id": 4999,
                                                "nodeType": "Return",
                                                "src": "21811:33:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4982,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "21512:206:27",
                                        "text": " @notice Subtracts an unscaled int256 from an `Signed`, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 5001,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "21732:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4988,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4985,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "21750:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5001,
                                                "src": "21736:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4984,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4983,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "21736:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "21736:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4987,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "21760:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5001,
                                                "src": "21753:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 4986,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "21753:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21735:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 4992,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4991,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5001,
                                                "src": "21786:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 4990,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4989,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "21786:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "21786:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21785:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "21723:128:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5020,
                                        "nodeType": "Block",
                                        "src": "22146:50:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5015,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5004,
                                                                    "src": "22183:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 5014,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "22167:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 5016,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "22167:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 5017,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5007,
                                                            "src": "22187:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 5013,
                                                        "name": "sub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4166,
                                                            4186,
                                                            4206,
                                                            4981,
                                                            5001,
                                                            5021
                                                        ],
                                                        "referencedDeclaration": 4981,
                                                        "src": "22163:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_struct$_Signed_$4518_memory_ptr_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 5018,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22163:26:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5012,
                                                "id": 5019,
                                                "nodeType": "Return",
                                                "src": "22156:33:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5002,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "21857:206:27",
                                        "text": " @notice Subtracts an `Signed` from an unscaled int256, reverting on overflow.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 5021,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "22077:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5008,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5004,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "22088:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5021,
                                                "src": "22081:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 5003,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "22081:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5007,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "22105:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5021,
                                                "src": "22091:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5006,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5005,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "22091:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "22091:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "22080:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 5012,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5011,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5021,
                                                "src": "22131:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5010,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5009,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "22131:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "22131:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "22130:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "22068:128:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5045,
                                        "nodeType": "Block",
                                        "src": "22527:559:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 5042,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5038,
                                                                            "name": "b",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5028,
                                                                            "src": "23046:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        "id": 5039,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "rawValue",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 4517,
                                                                        "src": "23046:10:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 5035,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5025,
                                                                            "src": "23031:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        "id": 5036,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "rawValue",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 4517,
                                                                        "src": "23031:10:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    "id": 5037,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "mul",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2543,
                                                                    "src": "23031:14:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                        "typeString": "function (int256,int256) pure returns (int256)"
                                                                    }
                                                                },
                                                                "id": 5040,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "23031:26:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "id": 5041,
                                                                "name": "SFP_SCALING_FACTOR",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4515,
                                                                "src": "23060:18:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "src": "23031:47:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 5034,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4518,
                                                        "src": "23024:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 5043,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23024:55:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5033,
                                                "id": 5044,
                                                "nodeType": "Return",
                                                "src": "23017:62:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5022,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "22202:235:27",
                                        "text": " @notice Multiplies two `Signed`s, reverting on overflow.\n @dev This will \"floor\" the product.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the product of `a` and `b`."
                                    },
                                    "id": 5046,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "22451:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5029,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5025,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "22469:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5046,
                                                "src": "22455:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5024,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5023,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "22455:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "22455:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5028,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "22486:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5046,
                                                "src": "22472:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5027,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5026,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "22472:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "22472:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "22454:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 5033,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5032,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5046,
                                                "src": "22512:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5031,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5030,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "22512:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "22512:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "22511:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "22442:644:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5066,
                                        "nodeType": "Block",
                                        "src": "23421:49:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5062,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5052,
                                                                    "src": "23460:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 5059,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5050,
                                                                        "src": "23445:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 5060,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 4517,
                                                                    "src": "23445:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 5061,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2543,
                                                                "src": "23445:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 5063,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "23445:17:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 5058,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4518,
                                                        "src": "23438:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 5064,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23438:25:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5057,
                                                "id": 5065,
                                                "nodeType": "Return",
                                                "src": "23431:32:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5047,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "23092:246:27",
                                        "text": " @notice Multiplies an `Signed` and an unscaled int256, reverting on overflow.\n @dev This will \"floor\" the product.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return the product of `a` and `b`."
                                    },
                                    "id": 5067,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "23352:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5053,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5050,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "23370:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5067,
                                                "src": "23356:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5049,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5048,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "23356:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "23356:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5052,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "23380:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5067,
                                                "src": "23373:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 5051,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "23373:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "23355:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 5057,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5056,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5067,
                                                "src": "23406:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5055,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5054,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "23406:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "23406:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "23405:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "23343:127:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5144,
                                        "nodeType": "Block",
                                        "src": "23795:537:27",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5081
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5081,
                                                        "mutability": "mutable",
                                                        "name": "mulRaw",
                                                        "nameLocation": "23812:6:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5144,
                                                        "src": "23805:13:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 5080,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "23805:6:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5088,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 5085,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5074,
                                                                "src": "23836:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 5086,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 4517,
                                                            "src": "23836:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "expression": {
                                                                "id": 5082,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5071,
                                                                "src": "23821:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 5083,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 4517,
                                                            "src": "23821:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "id": 5084,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2543,
                                                        "src": "23821:14:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 5087,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23821:26:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "23805:42:27"
                                            },
                                            {
                                                "assignments": [
                                                    5090
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5090,
                                                        "mutability": "mutable",
                                                        "name": "mulTowardsZero",
                                                        "nameLocation": "23864:14:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5144,
                                                        "src": "23857:21:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 5089,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "23857:6:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5094,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 5093,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5091,
                                                        "name": "mulRaw",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5081,
                                                        "src": "23881:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "id": 5092,
                                                        "name": "SFP_SCALING_FACTOR",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4515,
                                                        "src": "23890:18:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "23881:27:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "23857:51:27"
                                            },
                                            {
                                                "assignments": [
                                                    5096
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5096,
                                                        "mutability": "mutable",
                                                        "name": "mod",
                                                        "nameLocation": "23990:3:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5144,
                                                        "src": "23983:10:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 5095,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "23983:6:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5100,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 5099,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5097,
                                                        "name": "mulRaw",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5081,
                                                        "src": "23996:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "%",
                                                    "rightExpression": {
                                                        "id": 5098,
                                                        "name": "SFP_SCALING_FACTOR",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4515,
                                                        "src": "24005:18:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "23996:27:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "23983:40:27"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 5103,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5101,
                                                        "name": "mod",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5096,
                                                        "src": "24037:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 5102,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "24044:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "24037:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 5142,
                                                    "nodeType": "Block",
                                                    "src": "24272:54:27",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5139,
                                                                        "name": "mulTowardsZero",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5090,
                                                                        "src": "24300:14:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 5138,
                                                                    "name": "Signed",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4518,
                                                                    "src": "24293:6:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                                    }
                                                                },
                                                                "id": 5140,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "24293:22:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 5079,
                                                            "id": 5141,
                                                            "nodeType": "Return",
                                                            "src": "24286:29:27"
                                                        }
                                                    ]
                                                },
                                                "id": 5143,
                                                "nodeType": "IfStatement",
                                                "src": "24033:293:27",
                                                "trueBody": {
                                                    "id": 5137,
                                                    "nodeType": "Block",
                                                    "src": "24047:219:27",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                5105
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 5105,
                                                                    "mutability": "mutable",
                                                                    "name": "isResultPositive",
                                                                    "nameLocation": "24066:16:27",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 5137,
                                                                    "src": "24061:21:27",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5104,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "24061:4:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 5115,
                                                            "initialValue": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "id": 5114,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5107,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5071,
                                                                            "src": "24096:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "hexValue": "30",
                                                                            "id": 5108,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "24099:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 5106,
                                                                        "name": "isLessThan",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            3955,
                                                                            3975,
                                                                            3995,
                                                                            4770,
                                                                            4790,
                                                                            4810
                                                                        ],
                                                                        "referencedDeclaration": 4790,
                                                                        "src": "24085:10:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_int256_$returns$_t_bool_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,int256) pure returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 5109,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "24085:16:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5111,
                                                                            "name": "b",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5074,
                                                                            "src": "24116:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "hexValue": "30",
                                                                            "id": 5112,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "24119:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 5110,
                                                                        "name": "isLessThan",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            3955,
                                                                            3975,
                                                                            3995,
                                                                            4770,
                                                                            4790,
                                                                            4810
                                                                        ],
                                                                        "referencedDeclaration": 4790,
                                                                        "src": "24105:10:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_int256_$returns$_t_bool_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,int256) pure returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 5113,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "24105:16:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "src": "24085:36:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "24061:60:27"
                                                        },
                                                        {
                                                            "assignments": [
                                                                5117
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 5117,
                                                                    "mutability": "mutable",
                                                                    "name": "valueToAdd",
                                                                    "nameLocation": "24142:10:27",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 5137,
                                                                    "src": "24135:17:27",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5116,
                                                                        "name": "int256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "24135:6:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 5129,
                                                            "initialValue": {
                                                                "condition": {
                                                                    "id": 5118,
                                                                    "name": "isResultPositive",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5105,
                                                                    "src": "24155:16:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "falseExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5126,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "UnaryOperation",
                                                                            "operator": "-",
                                                                            "prefix": true,
                                                                            "src": "24193:2:27",
                                                                            "subExpression": {
                                                                                "hexValue": "31",
                                                                                "id": 5125,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "24194:1:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            },
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_minus_1_by_1",
                                                                                "typeString": "int_const -1"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_minus_1_by_1",
                                                                                "typeString": "int_const -1"
                                                                            }
                                                                        ],
                                                                        "id": 5124,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "24186:6:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5123,
                                                                            "name": "int256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "24186:6:27",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5127,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "24186:10:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 5128,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "Conditional",
                                                                "src": "24155:41:27",
                                                                "trueExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "31",
                                                                            "id": 5121,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "24181:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                                "typeString": "int_const 1"
                                                                            },
                                                                            "value": "1"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                                "typeString": "int_const 1"
                                                                            }
                                                                        ],
                                                                        "id": 5120,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "24174:6:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5119,
                                                                            "name": "int256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "24174:6:27",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5122,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "24174:9:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "24135:61:27"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5133,
                                                                                "name": "valueToAdd",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5117,
                                                                                "src": "24243:10:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 5131,
                                                                                "name": "mulTowardsZero",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5090,
                                                                                "src": "24224:14:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            },
                                                                            "id": 5132,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "add",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2588,
                                                                            "src": "24224:18:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                                "typeString": "function (int256,int256) pure returns (int256)"
                                                                            }
                                                                        },
                                                                        "id": 5134,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "24224:30:27",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 5130,
                                                                    "name": "Signed",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4518,
                                                                    "src": "24217:6:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                                    }
                                                                },
                                                                "id": 5135,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "24217:38:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 5079,
                                                            "id": 5136,
                                                            "nodeType": "Return",
                                                            "src": "24210:45:27"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5068,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "23476:217:27",
                                        "text": " @notice Multiplies two `Signed`s and \"ceil's\" the product, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the product of `a` and `b`."
                                    },
                                    "id": 5145,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mulAwayFromZero",
                                    "nameLocation": "23707:15:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5075,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5071,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "23737:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5145,
                                                "src": "23723:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5070,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5069,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "23723:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "23723:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5074,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "23754:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5145,
                                                "src": "23740:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5073,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5072,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "23740:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "23740:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "23722:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 5079,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5078,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5145,
                                                "src": "23780:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5077,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5076,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "23780:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "23780:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "23779:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "23698:634:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5165,
                                        "nodeType": "Block",
                                        "src": "24671:142:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5161,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5151,
                                                                    "src": "24803:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 5158,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5149,
                                                                        "src": "24788:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 5159,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 4517,
                                                                    "src": "24788:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 5160,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2543,
                                                                "src": "24788:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 5162,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "24788:17:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 5157,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4518,
                                                        "src": "24781:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 5163,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "24781:25:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5156,
                                                "id": 5164,
                                                "nodeType": "Return",
                                                "src": "24774:32:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5146,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "24338:238:27",
                                        "text": " @notice Multiplies an `Signed` and an unscaled int256 and \"ceil's\" the product, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the product of `a` and `b`."
                                    },
                                    "id": 5166,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mulAwayFromZero",
                                    "nameLocation": "24590:15:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5152,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5149,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "24620:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5166,
                                                "src": "24606:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5148,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5147,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "24606:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "24606:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5151,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "24630:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5166,
                                                "src": "24623:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 5150,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "24623:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "24605:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 5156,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5155,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5166,
                                                "src": "24656:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5154,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5153,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "24656:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "24656:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "24655:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "24581:232:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5191,
                                        "nodeType": "Block",
                                        "src": "25189:542:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 5186,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5173,
                                                                        "src": "25712:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 5187,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 4517,
                                                                    "src": "25712:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5183,
                                                                            "name": "SFP_SCALING_FACTOR",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4515,
                                                                            "src": "25688:18:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "expression": {
                                                                                "id": 5180,
                                                                                "name": "a",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5170,
                                                                                "src": "25673:1:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                                }
                                                                            },
                                                                            "id": 5181,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "rawValue",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 4517,
                                                                            "src": "25673:10:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        },
                                                                        "id": 5182,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "mul",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2543,
                                                                        "src": "25673:14:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                                        }
                                                                    },
                                                                    "id": 5184,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "25673:34:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 5185,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "div",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2558,
                                                                "src": "25673:38:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 5188,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "25673:50:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 5179,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4518,
                                                        "src": "25666:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 5189,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "25666:58:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5178,
                                                "id": 5190,
                                                "nodeType": "Return",
                                                "src": "25659:65:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5167,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "24819:280:27",
                                        "text": " @notice Divides one `Signed` by an `Signed`, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a FixedPoint numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 5192,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "25113:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5174,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5170,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "25131:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5192,
                                                "src": "25117:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5169,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5168,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "25117:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "25117:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5173,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "25148:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5192,
                                                "src": "25134:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5172,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5171,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "25134:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "25134:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "25116:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 5178,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5177,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5192,
                                                "src": "25174:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5176,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5175,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "25174:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "25174:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "25173:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "25104:627:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5212,
                                        "nodeType": "Block",
                                        "src": "26104:49:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5208,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5198,
                                                                    "src": "26143:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 5205,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5196,
                                                                        "src": "26128:1:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 5206,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 4517,
                                                                    "src": "26128:10:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 5207,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "div",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2558,
                                                                "src": "26128:14:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 5209,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "26128:17:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 5204,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4518,
                                                        "src": "26121:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 5210,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26121:25:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5203,
                                                "id": 5211,
                                                "nodeType": "Return",
                                                "src": "26114:32:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5193,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "25737:284:27",
                                        "text": " @notice Divides one `Signed` by an unscaled int256, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a FixedPoint numerator.\n @param b an int256 denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 5213,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "26035:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5199,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5196,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "26053:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5213,
                                                "src": "26039:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5195,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5194,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "26039:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "26039:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5198,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "26063:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5213,
                                                "src": "26056:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 5197,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "26056:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26038:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 5203,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5202,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5213,
                                                "src": "26089:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5201,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5200,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "26089:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "26089:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26088:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "26026:127:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5232,
                                        "nodeType": "Block",
                                        "src": "26526:50:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5227,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5216,
                                                                    "src": "26563:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 5226,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "26547:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 5228,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "26547:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 5229,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5219,
                                                            "src": "26567:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 5225,
                                                        "name": "div",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            4352,
                                                            4373,
                                                            4393,
                                                            5192,
                                                            5213,
                                                            5233
                                                        ],
                                                        "referencedDeclaration": 5192,
                                                        "src": "26543:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_struct$_Signed_$4518_memory_ptr_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 5230,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26543:26:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5224,
                                                "id": 5231,
                                                "nodeType": "Return",
                                                "src": "26536:33:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5214,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "26159:284:27",
                                        "text": " @notice Divides one unscaled int256 by an `Signed`, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a an int256 numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 5233,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "26457:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5220,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5216,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "26468:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5233,
                                                "src": "26461:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 5215,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "26461:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5219,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "26485:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5233,
                                                "src": "26471:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5218,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5217,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "26471:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "26471:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26460:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 5224,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5223,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5233,
                                                "src": "26511:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5222,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5221,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "26511:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "26511:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26510:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "26448:128:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5312,
                                        "nodeType": "Block",
                                        "src": "26946:535:27",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5247
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5247,
                                                        "mutability": "mutable",
                                                        "name": "aScaled",
                                                        "nameLocation": "26963:7:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5312,
                                                        "src": "26956:14:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 5246,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "26956:6:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5253,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 5251,
                                                            "name": "SFP_SCALING_FACTOR",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4515,
                                                            "src": "26988:18:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "expression": {
                                                                "id": 5248,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5237,
                                                                "src": "26973:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 5249,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 4517,
                                                            "src": "26973:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "id": 5250,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2543,
                                                        "src": "26973:14:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 5252,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26973:34:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "26956:51:27"
                                            },
                                            {
                                                "assignments": [
                                                    5255
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5255,
                                                        "mutability": "mutable",
                                                        "name": "divTowardsZero",
                                                        "nameLocation": "27024:14:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5312,
                                                        "src": "27017:21:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 5254,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "27017:6:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5261,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 5258,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5240,
                                                                "src": "27053:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 5259,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 4517,
                                                            "src": "27053:10:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5256,
                                                            "name": "aScaled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5247,
                                                            "src": "27041:7:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "id": 5257,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "div",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2558,
                                                        "src": "27041:11:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 5260,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "27041:23:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "27017:47:27"
                                            },
                                            {
                                                "assignments": [
                                                    5263
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5263,
                                                        "mutability": "mutable",
                                                        "name": "mod",
                                                        "nameLocation": "27146:3:27",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5312,
                                                        "src": "27139:10:27",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 5262,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "27139:6:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5268,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 5267,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5264,
                                                        "name": "aScaled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5247,
                                                        "src": "27152:7:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "%",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 5265,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5240,
                                                            "src": "27162:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 5266,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 4517,
                                                        "src": "27162:10:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "27152:20:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "27139:33:27"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 5271,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5269,
                                                        "name": "mod",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5263,
                                                        "src": "27186:3:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 5270,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "27193:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "27186:8:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 5310,
                                                    "nodeType": "Block",
                                                    "src": "27421:54:27",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5307,
                                                                        "name": "divTowardsZero",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5255,
                                                                        "src": "27449:14:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 5306,
                                                                    "name": "Signed",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4518,
                                                                    "src": "27442:6:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                                    }
                                                                },
                                                                "id": 5308,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "27442:22:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 5245,
                                                            "id": 5309,
                                                            "nodeType": "Return",
                                                            "src": "27435:29:27"
                                                        }
                                                    ]
                                                },
                                                "id": 5311,
                                                "nodeType": "IfStatement",
                                                "src": "27182:293:27",
                                                "trueBody": {
                                                    "id": 5305,
                                                    "nodeType": "Block",
                                                    "src": "27196:219:27",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                5273
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 5273,
                                                                    "mutability": "mutable",
                                                                    "name": "isResultPositive",
                                                                    "nameLocation": "27215:16:27",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 5305,
                                                                    "src": "27210:21:27",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5272,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "27210:4:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 5283,
                                                            "initialValue": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "id": 5282,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5275,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5237,
                                                                            "src": "27245:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "hexValue": "30",
                                                                            "id": 5276,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "27248:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 5274,
                                                                        "name": "isLessThan",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            3955,
                                                                            3975,
                                                                            3995,
                                                                            4770,
                                                                            4790,
                                                                            4810
                                                                        ],
                                                                        "referencedDeclaration": 4790,
                                                                        "src": "27234:10:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_int256_$returns$_t_bool_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,int256) pure returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 5277,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "27234:16:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5279,
                                                                            "name": "b",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5240,
                                                                            "src": "27265:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "hexValue": "30",
                                                                            "id": 5280,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "27268:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 5278,
                                                                        "name": "isLessThan",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            3955,
                                                                            3975,
                                                                            3995,
                                                                            4770,
                                                                            4790,
                                                                            4810
                                                                        ],
                                                                        "referencedDeclaration": 4790,
                                                                        "src": "27254:10:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_int256_$returns$_t_bool_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,int256) pure returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 5281,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "27254:16:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "src": "27234:36:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "27210:60:27"
                                                        },
                                                        {
                                                            "assignments": [
                                                                5285
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 5285,
                                                                    "mutability": "mutable",
                                                                    "name": "valueToAdd",
                                                                    "nameLocation": "27291:10:27",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 5305,
                                                                    "src": "27284:17:27",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5284,
                                                                        "name": "int256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "27284:6:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 5297,
                                                            "initialValue": {
                                                                "condition": {
                                                                    "id": 5286,
                                                                    "name": "isResultPositive",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5273,
                                                                    "src": "27304:16:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "falseExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5294,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "UnaryOperation",
                                                                            "operator": "-",
                                                                            "prefix": true,
                                                                            "src": "27342:2:27",
                                                                            "subExpression": {
                                                                                "hexValue": "31",
                                                                                "id": 5293,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "27343:1:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            },
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_minus_1_by_1",
                                                                                "typeString": "int_const -1"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_minus_1_by_1",
                                                                                "typeString": "int_const -1"
                                                                            }
                                                                        ],
                                                                        "id": 5292,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "27335:6:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5291,
                                                                            "name": "int256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "27335:6:27",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5295,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "27335:10:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 5296,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "Conditional",
                                                                "src": "27304:41:27",
                                                                "trueExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "31",
                                                                            "id": 5289,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "27330:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                                "typeString": "int_const 1"
                                                                            },
                                                                            "value": "1"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                                "typeString": "int_const 1"
                                                                            }
                                                                        ],
                                                                        "id": 5288,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "27323:6:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5287,
                                                                            "name": "int256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "27323:6:27",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5290,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "27323:9:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "27284:61:27"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5301,
                                                                                "name": "valueToAdd",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5285,
                                                                                "src": "27392:10:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 5299,
                                                                                "name": "divTowardsZero",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5255,
                                                                                "src": "27373:14:27",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            },
                                                                            "id": 5300,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "add",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2588,
                                                                            "src": "27373:18:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                                "typeString": "function (int256,int256) pure returns (int256)"
                                                                            }
                                                                        },
                                                                        "id": 5302,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "27373:30:27",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 5298,
                                                                    "name": "Signed",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4518,
                                                                    "src": "27366:6:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Signed_$4518_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                                    }
                                                                },
                                                                "id": 5303,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "27366:38:27",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 5245,
                                                            "id": 5304,
                                                            "nodeType": "Return",
                                                            "src": "27359:45:27"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5234,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "26582:262:27",
                                        "text": " @notice Divides one `Signed` by an `Signed` and \"ceil's\" the quotient, reverting on overflow or division by 0.\n @param a a FixedPoint numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 5313,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "divAwayFromZero",
                                    "nameLocation": "26858:15:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5241,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5237,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "26888:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5313,
                                                "src": "26874:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5236,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5235,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "26874:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "26874:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5240,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "26905:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5313,
                                                "src": "26891:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5239,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5238,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "26891:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "26891:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26873:34:27"
                                    },
                                    "returnParameters": {
                                        "id": 5245,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5244,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5313,
                                                "src": "26931:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5243,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5242,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "26931:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "26931:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26930:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "26849:632:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5332,
                                        "nodeType": "Block",
                                        "src": "27848:366:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 5326,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5317,
                                                            "src": "28185:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5328,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5319,
                                                                    "src": "28204:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 5327,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4594,
                                                                "src": "28188:15:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 5329,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "28188:18:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 5325,
                                                        "name": "divAwayFromZero",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            5313,
                                                            5333
                                                        ],
                                                        "referencedDeclaration": 5313,
                                                        "src": "28169:15:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_struct$_Signed_$4518_memory_ptr_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 5330,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "28169:38:27",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5324,
                                                "id": 5331,
                                                "nodeType": "Return",
                                                "src": "28162:45:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5314,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "27487:266:27",
                                        "text": " @notice Divides one `Signed` by an unscaled int256 and \"ceil's\" the quotient, reverting on overflow or division by 0.\n @param a a FixedPoint numerator.\n @param b an int256 denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 5333,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "divAwayFromZero",
                                    "nameLocation": "27767:15:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5320,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5317,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "27797:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5333,
                                                "src": "27783:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5316,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5315,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "27783:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "27783:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5319,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "27807:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5333,
                                                "src": "27800:8:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 5318,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "27800:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "27782:27:27"
                                    },
                                    "returnParameters": {
                                        "id": 5324,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5323,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5333,
                                                "src": "27833:13:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5322,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5321,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "27833:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "27833:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "27832:15:27"
                                    },
                                    "scope": 5376,
                                    "src": "27758:456:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5374,
                                        "nodeType": "Block",
                                        "src": "28634:142:27",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5349,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5345,
                                                        "name": "output",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5343,
                                                        "src": "28644:6:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "31",
                                                                "id": 5347,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "28669:1:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                }
                                                            ],
                                                            "id": 5346,
                                                            "name": "fromUnscaledInt",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4594,
                                                            "src": "28653:15:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                            }
                                                        },
                                                        "id": 5348,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "28653:18:27",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "src": "28644:27:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "id": 5350,
                                                "nodeType": "ExpressionStatement",
                                                "src": "28644:27:27"
                                            },
                                            {
                                                "body": {
                                                    "id": 5372,
                                                    "nodeType": "Block",
                                                    "src": "28722:48:27",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 5370,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 5365,
                                                                    "name": "output",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5343,
                                                                    "src": "28736:6:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Signed memory"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5367,
                                                                            "name": "output",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5343,
                                                                            "src": "28749:6:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 5368,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5337,
                                                                            "src": "28757:1:27",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        ],
                                                                        "id": 5366,
                                                                        "name": "mul",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            4231,
                                                                            4252,
                                                                            5046,
                                                                            5067
                                                                        ],
                                                                        "referencedDeclaration": 5046,
                                                                        "src": "28745:3:27",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$4518_memory_ptr_$_t_struct$_Signed_$4518_memory_ptr_$returns$_t_struct$_Signed_$4518_memory_ptr_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                                        }
                                                                    },
                                                                    "id": 5369,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "28745:14:27",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Signed memory"
                                                                    }
                                                                },
                                                                "src": "28736:23:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 5371,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "28736:23:27"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5357,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5355,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5352,
                                                        "src": "28701:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "id": 5356,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5339,
                                                        "src": "28705:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "28701:5:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5373,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        5352
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 5352,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "28694:1:27",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 5373,
                                                            "src": "28686:9:27",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 5351,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "28686:7:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 5354,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 5353,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "28698:1:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "28686:13:27"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 5363,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "id": 5358,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5352,
                                                            "src": "28708:1:27",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "31",
                                                                    "id": 5361,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "28718:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    },
                                                                    "value": "1"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5359,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5352,
                                                                    "src": "28712:1:27",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 5360,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "add",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2389,
                                                                "src": "28712:5:27",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5362,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "28712:8:27",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "28708:12:27",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 5364,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "28708:12:27"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "28681:89:27"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5334,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "28220:323:27",
                                        "text": " @notice Raises an `Signed` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\n @dev This will \"floor\" the result.\n @param a a FixedPoint.Signed.\n @param b a uint256 (negative exponents are not allowed).\n @return output is `a` to the power of `b`."
                                    },
                                    "id": 5375,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "pow",
                                    "nameLocation": "28557:3:27",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5340,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5337,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "28575:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5375,
                                                "src": "28561:15:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5336,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5335,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "28561:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "28561:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5339,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "28586:1:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5375,
                                                "src": "28578:9:27",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5338,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "28578:7:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "28560:28:27"
                                    },
                                    "returnParameters": {
                                        "id": 5344,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5343,
                                                "mutability": "mutable",
                                                "name": "output",
                                                "nameLocation": "28626:6:27",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5375,
                                                "src": "28612:20:27",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$4518_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 5342,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5341,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 4518,
                                                        "src": "28612:6:27"
                                                    },
                                                    "referencedDeclaration": 4518,
                                                    "src": "28612:6:27",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$4518_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "28611:22:27"
                                    },
                                    "scope": 5376,
                                    "src": "28548:228:27",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 5377,
                            "src": "252:28526:27",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:28737:27"
                },
                "id": 27
            },
            "contracts/common/implementation/Lockable.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/Lockable.sol",
                    "exportedSymbols": {
                        "Lockable": [
                            5437
                        ]
                    },
                    "id": 5438,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5378,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:28"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Lockable",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 5379,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:337:28",
                                "text": " @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol."
                            },
                            "fullyImplemented": true,
                            "id": 5437,
                            "linearizedBaseContracts": [
                                5437
                            ],
                            "name": "Lockable",
                            "nameLocation": "414:8:28",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "id": 5381,
                                    "mutability": "mutable",
                                    "name": "_notEntered",
                                    "nameLocation": "442:11:28",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5437,
                                    "src": "429:24:28",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 5380,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "429:4:28",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5388,
                                        "nodeType": "Block",
                                        "src": "474:425:28",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5386,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5384,
                                                        "name": "_notEntered",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5381,
                                                        "src": "874:11:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "74727565",
                                                        "id": 5385,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "888:4:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "src": "874:18:28",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5387,
                                                "nodeType": "ExpressionStatement",
                                                "src": "874:18:28"
                                            }
                                        ]
                                    },
                                    "id": 5389,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5382,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "471:2:28"
                                    },
                                    "returnParameters": {
                                        "id": 5383,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "474:0:28"
                                    },
                                    "scope": 5437,
                                    "src": "460:439:28",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5402,
                                        "nodeType": "Block",
                                        "src": "1307:104:28",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5392,
                                                        "name": "_preEntranceCheck",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5420,
                                                        "src": "1317:17:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 5393,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1317:19:28",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5394,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1317:19:28"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5395,
                                                        "name": "_preEntranceSet",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5428,
                                                        "src": "1346:15:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 5396,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1346:17:28",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5397,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1346:17:28"
                                            },
                                            {
                                                "id": 5398,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1373:1:28"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5399,
                                                        "name": "_postEntranceReset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5436,
                                                        "src": "1384:18:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 5400,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1384:20:28",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5401,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1384:20:28"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5390,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "905:373:28",
                                        "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n function that does the actual state modification."
                                    },
                                    "id": 5403,
                                    "name": "nonReentrant",
                                    "nameLocation": "1292:12:28",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 5391,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1304:2:28"
                                    },
                                    "src": "1283:128:28",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5410,
                                        "nodeType": "Block",
                                        "src": "1593:47:28",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5406,
                                                        "name": "_preEntranceCheck",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5420,
                                                        "src": "1603:17:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 5407,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1603:19:28",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5408,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1603:19:28"
                                            },
                                            {
                                                "id": 5409,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1632:1:28"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5404,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1417:143:28",
                                        "text": " @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method."
                                    },
                                    "id": 5411,
                                    "name": "nonReentrantView",
                                    "nameLocation": "1574:16:28",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 5405,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1590:2:28"
                                    },
                                    "src": "1565:75:28",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5419,
                                        "nodeType": "Block",
                                        "src": "2186:143:28",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 5415,
                                                            "name": "_notEntered",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5381,
                                                            "src": "2275:11:28",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                            "id": 5416,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2288:33:28",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                                                            },
                                                            "value": "ReentrancyGuard: reentrant call"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                                                            }
                                                        ],
                                                        "id": 5414,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2267:7:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 5417,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2267:55:28",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5418,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2267:55:28"
                                            }
                                        ]
                                    },
                                    "id": 5420,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_preEntranceCheck",
                                    "nameLocation": "2152:17:28",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5412,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2169:2:28"
                                    },
                                    "returnParameters": {
                                        "id": 5413,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2186:0:28"
                                    },
                                    "scope": 5437,
                                    "src": "2143:186:28",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5427,
                                        "nodeType": "Block",
                                        "src": "2371:100:28",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5425,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5423,
                                                        "name": "_notEntered",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5381,
                                                        "src": "2445:11:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "66616c7365",
                                                        "id": 5424,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2459:5:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "false"
                                                    },
                                                    "src": "2445:19:28",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5426,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2445:19:28"
                                            }
                                        ]
                                    },
                                    "id": 5428,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_preEntranceSet",
                                    "nameLocation": "2344:15:28",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5421,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2359:2:28"
                                    },
                                    "returnParameters": {
                                        "id": 5422,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2371:0:28"
                                    },
                                    "scope": 5437,
                                    "src": "2335:136:28",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5435,
                                        "nodeType": "Block",
                                        "src": "2516:167:28",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5433,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5431,
                                                        "name": "_notEntered",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5381,
                                                        "src": "2658:11:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "74727565",
                                                        "id": 5432,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2672:4:28",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "src": "2658:18:28",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5434,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2658:18:28"
                                            }
                                        ]
                                    },
                                    "id": 5436,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_postEntranceReset",
                                    "nameLocation": "2486:18:28",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5429,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2504:2:28"
                                    },
                                    "returnParameters": {
                                        "id": 5430,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2516:0:28"
                                    },
                                    "scope": 5437,
                                    "src": "2477:206:28",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 5438,
                            "src": "405:2280:28",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:2644:28"
                },
                "id": 28
            },
            "contracts/common/implementation/MultiCaller.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/MultiCaller.sol",
                    "exportedSymbols": {
                        "MultiCaller": [
                            5524
                        ]
                    },
                    "id": 5525,
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5439,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "375:23:29"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "MultiCaller",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 5440,
                                "nodeType": "StructuredDocumentation",
                                "src": "400:101:29",
                                "text": "@title MultiCaller\n @notice Enables calling multiple methods in a single call to the contract"
                            },
                            "fullyImplemented": true,
                            "id": 5524,
                            "linearizedBaseContracts": [
                                5524
                            ],
                            "name": "MultiCaller",
                            "nameLocation": "510:11:29",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 5522,
                                        "nodeType": "Block",
                                        "src": "620:618:29",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 5453,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 5450,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "638:3:29",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 5451,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "value",
                                                                "nodeType": "MemberAccess",
                                                                "src": "638:9:29",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 5452,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "651:1:29",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "638:14:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f6e6c79206d756c746963616c6c207769746820302076616c7565",
                                                            "id": 5454,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "654:29:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a",
                                                                "typeString": "literal_string \"Only multicall with 0 value\""
                                                            },
                                                            "value": "Only multicall with 0 value"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a",
                                                                "typeString": "literal_string \"Only multicall with 0 value\""
                                                            }
                                                        ],
                                                        "id": 5449,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "630:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 5455,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "630:54:29",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5456,
                                                "nodeType": "ExpressionStatement",
                                                "src": "630:54:29"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5464,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5457,
                                                        "name": "results",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5447,
                                                        "src": "694:7:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "bytes memory[] memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 5461,
                                                                    "name": "data",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5443,
                                                                    "src": "716:4:29",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                                        "typeString": "bytes calldata[] calldata"
                                                                    }
                                                                },
                                                                "id": 5462,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "716:11:29",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 5460,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "NewExpression",
                                                            "src": "704:11:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                                                "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                                                            },
                                                            "typeName": {
                                                                "baseType": {
                                                                    "id": 5458,
                                                                    "name": "bytes",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "708:5:29",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                                        "typeString": "bytes"
                                                                    }
                                                                },
                                                                "id": 5459,
                                                                "nodeType": "ArrayTypeName",
                                                                "src": "708:7:29",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                                                    "typeString": "bytes[]"
                                                                }
                                                            }
                                                        },
                                                        "id": 5463,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "704:24:29",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "bytes memory[] memory"
                                                        }
                                                    },
                                                    "src": "694:34:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "bytes memory[] memory"
                                                    }
                                                },
                                                "id": 5465,
                                                "nodeType": "ExpressionStatement",
                                                "src": "694:34:29"
                                            },
                                            {
                                                "body": {
                                                    "id": 5520,
                                                    "nodeType": "Block",
                                                    "src": "780:452:29",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                5478,
                                                                5480
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 5478,
                                                                    "mutability": "mutable",
                                                                    "name": "success",
                                                                    "nameLocation": "800:7:29",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 5520,
                                                                    "src": "795:12:29",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5477,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "795:4:29",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                },
                                                                {
                                                                    "constant": false,
                                                                    "id": 5480,
                                                                    "mutability": "mutable",
                                                                    "name": "result",
                                                                    "nameLocation": "822:6:29",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 5520,
                                                                    "src": "809:19:29",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5479,
                                                                        "name": "bytes",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "809:5:29",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                                            "typeString": "bytes"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 5490,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "baseExpression": {
                                                                            "id": 5486,
                                                                            "name": "data",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5443,
                                                                            "src": "859:4:29",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                                                "typeString": "bytes calldata[] calldata"
                                                                            }
                                                                        },
                                                                        "id": 5488,
                                                                        "indexExpression": {
                                                                            "id": 5487,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5467,
                                                                            "src": "864:1:29",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "859:7:29",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                                            "typeString": "bytes calldata"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                                            "typeString": "bytes calldata"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5483,
                                                                                "name": "this",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -28,
                                                                                "src": "840:4:29",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_contract$_MultiCaller_$5524",
                                                                                    "typeString": "contract MultiCaller"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_contract$_MultiCaller_$5524",
                                                                                    "typeString": "contract MultiCaller"
                                                                                }
                                                                            ],
                                                                            "id": 5482,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "832:7:29",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                                "typeString": "type(address)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 5481,
                                                                                "name": "address",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "832:7:29",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 5484,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "832:13:29",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "id": 5485,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "delegatecall",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "832:26:29",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                                                    }
                                                                },
                                                                "id": 5489,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "832:35:29",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                                    "typeString": "tuple(bool,bytes memory)"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "794:73:29"
                                                        },
                                                        {
                                                            "condition": {
                                                                "id": 5492,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "!",
                                                                "prefix": true,
                                                                "src": "886:8:29",
                                                                "subExpression": {
                                                                    "id": 5491,
                                                                    "name": "success",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5478,
                                                                    "src": "887:7:29",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 5513,
                                                            "nodeType": "IfStatement",
                                                            "src": "882:306:29",
                                                            "trueBody": {
                                                                "id": 5512,
                                                                "nodeType": "Block",
                                                                "src": "896:292:29",
                                                                "statements": [
                                                                    {
                                                                        "condition": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 5496,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "expression": {
                                                                                    "id": 5493,
                                                                                    "name": "result",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5480,
                                                                                    "src": "998:6:29",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                        "typeString": "bytes memory"
                                                                                    }
                                                                                },
                                                                                "id": 5494,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "length",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "998:13:29",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "<",
                                                                            "rightExpression": {
                                                                                "hexValue": "3638",
                                                                                "id": 5495,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "1014:2:29",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_68_by_1",
                                                                                    "typeString": "int_const 68"
                                                                                },
                                                                                "value": "68"
                                                                            },
                                                                            "src": "998:18:29",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "id": 5500,
                                                                        "nodeType": "IfStatement",
                                                                        "src": "994:32:29",
                                                                        "trueBody": {
                                                                            "expression": {
                                                                                "arguments": [],
                                                                                "expression": {
                                                                                    "argumentTypes": [],
                                                                                    "id": 5497,
                                                                                    "name": "revert",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [
                                                                                        -19,
                                                                                        -19
                                                                                    ],
                                                                                    "referencedDeclaration": -19,
                                                                                    "src": "1018:6:29",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                                                                                        "typeString": "function () pure"
                                                                                    }
                                                                                },
                                                                                "id": 5498,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "1018:8:29",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 5499,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "1018:8:29"
                                                                        }
                                                                    },
                                                                    {
                                                                        "AST": {
                                                                            "nodeType": "YulBlock",
                                                                            "src": "1053:67:29",
                                                                            "statements": [
                                                                                {
                                                                                    "nodeType": "YulAssignment",
                                                                                    "src": "1075:27:29",
                                                                                    "value": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "result",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1089:6:29"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1097:4:29",
                                                                                                "type": "",
                                                                                                "value": "0x04"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1085:3:29"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1085:17:29"
                                                                                    },
                                                                                    "variableNames": [
                                                                                        {
                                                                                            "name": "result",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1075:6:29"
                                                                                        }
                                                                                    ]
                                                                                }
                                                                            ]
                                                                        },
                                                                        "evmVersion": "london",
                                                                        "externalReferences": [
                                                                            {
                                                                                "declaration": 5480,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "1075:6:29",
                                                                                "valueSize": 1
                                                                            },
                                                                            {
                                                                                "declaration": 5480,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "1089:6:29",
                                                                                "valueSize": 1
                                                                            }
                                                                        ],
                                                                        "id": 5501,
                                                                        "nodeType": "InlineAssembly",
                                                                        "src": "1044:76:29"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 5505,
                                                                                            "name": "result",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5480,
                                                                                            "src": "1155:6:29",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                "typeString": "bytes memory"
                                                                                            }
                                                                                        },
                                                                                        {
                                                                                            "components": [
                                                                                                {
                                                                                                    "id": 5507,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                                    "src": "1164:6:29",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                                                                        "typeString": "type(string storage pointer)"
                                                                                                    },
                                                                                                    "typeName": {
                                                                                                        "id": 5506,
                                                                                                        "name": "string",
                                                                                                        "nodeType": "ElementaryTypeName",
                                                                                                        "src": "1164:6:29",
                                                                                                        "typeDescriptions": {}
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "id": 5508,
                                                                                            "isConstant": false,
                                                                                            "isInlineArray": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "TupleExpression",
                                                                                            "src": "1163:8:29",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                                                                "typeString": "type(string storage pointer)"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                "typeString": "bytes memory"
                                                                                            },
                                                                                            {
                                                                                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                                                                "typeString": "type(string storage pointer)"
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "id": 5503,
                                                                                            "name": "abi",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": -1,
                                                                                            "src": "1144:3:29",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_magic_abi",
                                                                                                "typeString": "abi"
                                                                                            }
                                                                                        },
                                                                                        "id": 5504,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "decode",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "src": "1144:10:29",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                                                                            "typeString": "function () pure"
                                                                                        }
                                                                                    },
                                                                                    "id": 5509,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "functionCall",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "1144:28:29",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                    }
                                                                                ],
                                                                                "id": 5502,
                                                                                "name": "revert",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [
                                                                                    -19,
                                                                                    -19
                                                                                ],
                                                                                "referencedDeclaration": -19,
                                                                                "src": "1137:6:29",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                                                    "typeString": "function (string memory) pure"
                                                                                }
                                                                            },
                                                                            "id": 5510,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "1137:36:29",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 5511,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "1137:36:29"
                                                                    }
                                                                ]
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 5518,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 5514,
                                                                        "name": "results",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5447,
                                                                        "src": "1202:7:29",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                                            "typeString": "bytes memory[] memory"
                                                                        }
                                                                    },
                                                                    "id": 5516,
                                                                    "indexExpression": {
                                                                        "id": 5515,
                                                                        "name": "i",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5467,
                                                                        "src": "1210:1:29",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "1202:10:29",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 5517,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5480,
                                                                    "src": "1215:6:29",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "src": "1202:19:29",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "id": 5519,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1202:19:29"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5473,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5470,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5467,
                                                        "src": "758:1:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 5471,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5443,
                                                            "src": "762:4:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                                "typeString": "bytes calldata[] calldata"
                                                            }
                                                        },
                                                        "id": 5472,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "762:11:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "758:15:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5521,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        5467
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 5467,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "751:1:29",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 5521,
                                                            "src": "743:9:29",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 5466,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "743:7:29",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 5469,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 5468,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "755:1:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "743:13:29"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 5475,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "++",
                                                        "prefix": false,
                                                        "src": "775:3:29",
                                                        "subExpression": {
                                                            "id": 5474,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5467,
                                                            "src": "775:1:29",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 5476,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "775:3:29"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "738:494:29"
                                            }
                                        ]
                                    },
                                    "functionSelector": "ac9650d8",
                                    "id": 5523,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "multicall",
                                    "nameLocation": "537:9:29",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5444,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5443,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "564:4:29",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5523,
                                                "src": "547:21:29",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "bytes[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 5441,
                                                        "name": "bytes",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "547:5:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                            "typeString": "bytes"
                                                        }
                                                    },
                                                    "id": 5442,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "547:7:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                                        "typeString": "bytes[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "546:23:29"
                                    },
                                    "returnParameters": {
                                        "id": 5448,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5447,
                                                "mutability": "mutable",
                                                "name": "results",
                                                "nameLocation": "611:7:29",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5523,
                                                "src": "596:22:29",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "bytes[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 5445,
                                                        "name": "bytes",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "596:5:29",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                            "typeString": "bytes"
                                                        }
                                                    },
                                                    "id": 5446,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "596:7:29",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                                        "typeString": "bytes[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "595:24:29"
                                    },
                                    "scope": 5524,
                                    "src": "528:710:29",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 5525,
                            "src": "501:739:29",
                            "usedErrors": []
                        }
                    ],
                    "src": "375:866:29"
                },
                "id": 29
            },
            "contracts/common/implementation/Testable.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/Testable.sol",
                    "exportedSymbols": {
                        "Testable": [
                            5597
                        ],
                        "Timer": [
                            5632
                        ]
                    },
                    "id": 5598,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5526,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:30"
                        },
                        {
                            "absolutePath": "contracts/common/implementation/Timer.sol",
                            "file": "./Timer.sol",
                            "id": 5527,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5598,
                            "sourceUnit": 5633,
                            "src": "67:21:30",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "Testable",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 5528,
                                "nodeType": "StructuredDocumentation",
                                "src": "90:94:30",
                                "text": " @title Base class that provides time overrides, but only if being run in test mode."
                            },
                            "fullyImplemented": true,
                            "id": 5597,
                            "linearizedBaseContracts": [
                                5597
                            ],
                            "name": "Testable",
                            "nameLocation": "203:8:30",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "1c39c38d",
                                    "id": 5530,
                                    "mutability": "mutable",
                                    "name": "timerAddress",
                                    "nameLocation": "406:12:30",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5597,
                                    "src": "391:27:30",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5529,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "391:7:30",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5540,
                                        "nodeType": "Block",
                                        "src": "718:45:30",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5538,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5536,
                                                        "name": "timerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5530,
                                                        "src": "728:12:30",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 5537,
                                                        "name": "_timerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5533,
                                                        "src": "743:13:30",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "728:28:30",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 5539,
                                                "nodeType": "ExpressionStatement",
                                                "src": "728:28:30"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5531,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "425:253:30",
                                        "text": " @notice Constructs the Testable contract. Called by child contracts.\n @param _timerAddress Contract that stores the current time in a testing environment.\n Must be set to 0x0 for production environments that use live time."
                                    },
                                    "id": 5541,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5534,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5533,
                                                "mutability": "mutable",
                                                "name": "_timerAddress",
                                                "nameLocation": "703:13:30",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5541,
                                                "src": "695:21:30",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5532,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "695:7:30",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "694:23:30"
                                    },
                                    "returnParameters": {
                                        "id": 5535,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "718:0:30"
                                    },
                                    "scope": 5597,
                                    "src": "683:80:30",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5554,
                                        "nodeType": "Block",
                                        "src": "857:65:30",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 5550,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 5545,
                                                                "name": "timerAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5530,
                                                                "src": "875:12:30",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "307830",
                                                                        "id": 5548,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "899:3:30",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0x0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 5547,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "891:7:30",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5546,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "891:7:30",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5549,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "891:12:30",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "875:28:30",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "id": 5544,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "867:7:30",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                            "typeString": "function (bool) pure"
                                                        }
                                                    },
                                                    "id": 5551,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "867:37:30",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5552,
                                                "nodeType": "ExpressionStatement",
                                                "src": "867:37:30"
                                            },
                                            {
                                                "id": 5553,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "914:1:30"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5542,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "769:63:30",
                                        "text": " @notice Reverts if not running in test mode."
                                    },
                                    "id": 5555,
                                    "name": "onlyIfTest",
                                    "nameLocation": "846:10:30",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 5543,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "857:0:30"
                                    },
                                    "src": "837:85:30",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5570,
                                        "nodeType": "Block",
                                        "src": "1155:57:30",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 5567,
                                                            "name": "time",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5558,
                                                            "src": "1200:4:30",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 5564,
                                                                    "name": "timerAddress",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5530,
                                                                    "src": "1171:12:30",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 5563,
                                                                "name": "Timer",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5632,
                                                                "src": "1165:5:30",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_Timer_$5632_$",
                                                                    "typeString": "type(contract Timer)"
                                                                }
                                                            },
                                                            "id": 5565,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1165:19:30",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_Timer_$5632",
                                                                "typeString": "contract Timer"
                                                            }
                                                        },
                                                        "id": 5566,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "setCurrentTime",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5622,
                                                        "src": "1165:34:30",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256) external"
                                                        }
                                                    },
                                                    "id": 5568,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1165:40:30",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5569,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1165:40:30"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5556,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "928:164:30",
                                        "text": " @notice Sets the current time.\n @dev Will revert if not running in test mode.\n @param time timestamp to set current Testable time to."
                                    },
                                    "functionSelector": "22f8e566",
                                    "id": 5571,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 5561,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5560,
                                                "name": "onlyIfTest",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5555,
                                                "src": "1144:10:30"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1144:10:30"
                                        }
                                    ],
                                    "name": "setCurrentTime",
                                    "nameLocation": "1106:14:30",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5559,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5558,
                                                "mutability": "mutable",
                                                "name": "time",
                                                "nameLocation": "1129:4:30",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5571,
                                                "src": "1121:12:30",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5557,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1121:7:30",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1120:14:30"
                                    },
                                    "returnParameters": {
                                        "id": 5562,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1155:0:30"
                                    },
                                    "scope": 5597,
                                    "src": "1097:115:30",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 5595,
                                        "nodeType": "Block",
                                        "src": "1521:212:30",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 5582,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5577,
                                                        "name": "timerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5530,
                                                        "src": "1535:12:30",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "307830",
                                                                "id": 5580,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1559:3:30",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0x0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "id": 5579,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "1551:7:30",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 5578,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "1551:7:30",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 5581,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "1551:12:30",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "1535:28:30",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 5593,
                                                    "nodeType": "Block",
                                                    "src": "1639:88:30",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "expression": {
                                                                    "id": 5590,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -4,
                                                                    "src": "1660:5:30",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 5591,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "timestamp",
                                                                "nodeType": "MemberAccess",
                                                                "src": "1660:15:30",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "functionReturnParameters": 5576,
                                                            "id": 5592,
                                                            "nodeType": "Return",
                                                            "src": "1653:22:30"
                                                        }
                                                    ]
                                                },
                                                "id": 5594,
                                                "nodeType": "IfStatement",
                                                "src": "1531:196:30",
                                                "trueBody": {
                                                    "id": 5589,
                                                    "nodeType": "Block",
                                                    "src": "1565:68:30",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5584,
                                                                                "name": "timerAddress",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5530,
                                                                                "src": "1592:12:30",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 5583,
                                                                            "name": "Timer",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5632,
                                                                            "src": "1586:5:30",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Timer_$5632_$",
                                                                                "typeString": "type(contract Timer)"
                                                                            }
                                                                        },
                                                                        "id": 5585,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "1586:19:30",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_Timer_$5632",
                                                                            "typeString": "contract Timer"
                                                                        }
                                                                    },
                                                                    "id": 5586,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "getCurrentTime",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 5631,
                                                                    "src": "1586:34:30",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view external returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 5587,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "1586:36:30",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "functionReturnParameters": 5576,
                                                            "id": 5588,
                                                            "nodeType": "Return",
                                                            "src": "1579:43:30"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5572,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1218:234:30",
                                        "text": " @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\n Otherwise, it will return the block timestamp.\n @return uint for the current Testable timestamp."
                                    },
                                    "functionSelector": "29cb924d",
                                    "id": 5596,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getCurrentTime",
                                    "nameLocation": "1466:14:30",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5573,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1480:2:30"
                                    },
                                    "returnParameters": {
                                        "id": 5576,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5575,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5596,
                                                "src": "1512:7:30",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5574,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1512:7:30",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1511:9:30"
                                    },
                                    "scope": 5597,
                                    "src": "1457:276:30",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 5598,
                            "src": "185:1550:30",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1694:30"
                },
                "id": 30
            },
            "contracts/common/implementation/Timer.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/Timer.sol",
                    "exportedSymbols": {
                        "Timer": [
                            5632
                        ]
                    },
                    "id": 5633,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5599,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:31"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Timer",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 5600,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:84:31",
                                "text": " @title Universal store of current contract time for testing environments."
                            },
                            "fullyImplemented": true,
                            "id": 5632,
                            "linearizedBaseContracts": [
                                5632
                            ],
                            "name": "Timer",
                            "nameLocation": "161:5:31",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "id": 5602,
                                    "mutability": "mutable",
                                    "name": "currentTime",
                                    "nameLocation": "189:11:31",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5632,
                                    "src": "173:27:31",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5601,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "173:7:31",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5610,
                                        "nodeType": "Block",
                                        "src": "221:87:31",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5608,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5605,
                                                        "name": "currentTime",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5602,
                                                        "src": "231:11:31",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 5606,
                                                            "name": "block",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -4,
                                                            "src": "245:5:31",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_block",
                                                                "typeString": "block"
                                                            }
                                                        },
                                                        "id": 5607,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "timestamp",
                                                        "nodeType": "MemberAccess",
                                                        "src": "245:15:31",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "231:29:31",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5609,
                                                "nodeType": "ExpressionStatement",
                                                "src": "231:29:31"
                                            }
                                        ]
                                    },
                                    "id": 5611,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5603,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "218:2:31"
                                    },
                                    "returnParameters": {
                                        "id": 5604,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "221:0:31"
                                    },
                                    "scope": 5632,
                                    "src": "207:101:31",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5621,
                                        "nodeType": "Block",
                                        "src": "522:35:31",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5619,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5617,
                                                        "name": "currentTime",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5602,
                                                        "src": "532:11:31",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 5618,
                                                        "name": "time",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5614,
                                                        "src": "546:4:31",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "532:18:31",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5620,
                                                "nodeType": "ExpressionStatement",
                                                "src": "532:18:31"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5612,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "314:156:31",
                                        "text": " @notice Sets the current time.\n @dev Will revert if not running in test mode.\n @param time timestamp to set `currentTime` to."
                                    },
                                    "functionSelector": "22f8e566",
                                    "id": 5622,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setCurrentTime",
                                    "nameLocation": "484:14:31",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5615,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5614,
                                                "mutability": "mutable",
                                                "name": "time",
                                                "nameLocation": "507:4:31",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5622,
                                                "src": "499:12:31",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5613,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "499:7:31",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "498:14:31"
                                    },
                                    "returnParameters": {
                                        "id": 5616,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "522:0:31"
                                    },
                                    "scope": 5632,
                                    "src": "475:82:31",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 5630,
                                        "nodeType": "Block",
                                        "src": "757:35:31",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5628,
                                                    "name": "currentTime",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5602,
                                                    "src": "774:11:31",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5627,
                                                "id": 5629,
                                                "nodeType": "Return",
                                                "src": "767:18:31"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5623,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "563:133:31",
                                        "text": " @notice Gets the currentTime variable set in the Timer.\n @return uint256 for the current Testable timestamp."
                                    },
                                    "functionSelector": "29cb924d",
                                    "id": 5631,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getCurrentTime",
                                    "nameLocation": "710:14:31",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5624,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "724:2:31"
                                    },
                                    "returnParameters": {
                                        "id": 5627,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5626,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5631,
                                                "src": "748:7:31",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5625,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "748:7:31",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "747:9:31"
                                    },
                                    "scope": 5632,
                                    "src": "701:91:31",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 5633,
                            "src": "152:642:31",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:753:31"
                },
                "id": 31
            },
            "contracts/common/interfaces/AddressWhitelistInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/common/interfaces/AddressWhitelistInterface.sol",
                    "exportedSymbols": {
                        "AddressWhitelistInterface": [
                            5658
                        ]
                    },
                    "id": 5659,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5634,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:32"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "AddressWhitelistInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 5658,
                            "linearizedBaseContracts": [
                                5658
                            ],
                            "name": "AddressWhitelistInterface",
                            "nameLocation": "77:25:32",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "e43252d7",
                                    "id": 5639,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "addToWhitelist",
                                    "nameLocation": "118:14:32",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5637,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5636,
                                                "mutability": "mutable",
                                                "name": "newElement",
                                                "nameLocation": "141:10:32",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5639,
                                                "src": "133:18:32",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5635,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "133:7:32",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "132:20:32"
                                    },
                                    "returnParameters": {
                                        "id": 5638,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "161:0:32"
                                    },
                                    "scope": 5658,
                                    "src": "109:53:32",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "8ab1d681",
                                    "id": 5644,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "removeFromWhitelist",
                                    "nameLocation": "177:19:32",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5642,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5641,
                                                "mutability": "mutable",
                                                "name": "newElement",
                                                "nameLocation": "205:10:32",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5644,
                                                "src": "197:18:32",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5640,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "197:7:32",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "196:20:32"
                                    },
                                    "returnParameters": {
                                        "id": 5643,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "225:0:32"
                                    },
                                    "scope": 5658,
                                    "src": "168:58:32",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "3a3ab672",
                                    "id": 5651,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isOnWhitelist",
                                    "nameLocation": "241:13:32",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5647,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5646,
                                                "mutability": "mutable",
                                                "name": "newElement",
                                                "nameLocation": "263:10:32",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5651,
                                                "src": "255:18:32",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5645,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "255:7:32",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "254:20:32"
                                    },
                                    "returnParameters": {
                                        "id": 5650,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5649,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5651,
                                                "src": "298:4:32",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 5648,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "298:4:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "297:6:32"
                                    },
                                    "scope": 5658,
                                    "src": "232:72:32",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "d01f63f5",
                                    "id": 5657,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getWhitelist",
                                    "nameLocation": "319:12:32",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5652,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "331:2:32"
                                    },
                                    "returnParameters": {
                                        "id": 5656,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5655,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5657,
                                                "src": "357:16:32",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 5653,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "357:7:32",
                                                        "stateMutability": "nonpayable",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "id": 5654,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "357:9:32",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                        "typeString": "address[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "356:18:32"
                                    },
                                    "scope": 5658,
                                    "src": "310:65:32",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 5659,
                            "src": "67:310:32",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:336:32"
                },
                "id": 32
            },
            "contracts/external/avm/AVM_CrossDomainEnabled.sol": {
                "ast": {
                    "absolutePath": "contracts/external/avm/AVM_CrossDomainEnabled.sol",
                    "exportedSymbols": {
                        "AVM_CrossDomainEnabled": [
                            5748
                        ],
                        "ArbSys": [
                            5839
                        ]
                    },
                    "id": 5749,
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5660,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "196:23:33"
                        },
                        {
                            "absolutePath": "contracts/external/avm/interfaces/ArbSys.sol",
                            "file": "./interfaces/ArbSys.sol",
                            "id": 5661,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5749,
                            "sourceUnit": 5840,
                            "src": "221:33:33",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "AVM_CrossDomainEnabled",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 5748,
                            "linearizedBaseContracts": [
                                5748
                            ],
                            "name": "AVM_CrossDomainEnabled",
                            "nameLocation": "274:22:33",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "anonymous": false,
                                    "id": 5671,
                                    "name": "SentCrossDomainMessage",
                                    "nameLocation": "309:22:33",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 5670,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5663,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "from",
                                                "nameLocation": "348:4:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5671,
                                                "src": "332:20:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5662,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "332:7:33",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5665,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "370:2:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5671,
                                                "src": "354:18:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5664,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "354:7:33",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5667,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "id",
                                                "nameLocation": "390:2:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5671,
                                                "src": "374:18:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5666,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "374:7:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5669,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "400:4:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5671,
                                                "src": "394:10:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 5668,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "394:5:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "331:74:33"
                                    },
                                    "src": "303:103:33"
                                },
                                {
                                    "body": {
                                        "id": 5686,
                                        "nodeType": "Block",
                                        "src": "471:110:33",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 5681,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 5676,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "489:3:33",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 5677,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "489:10:33",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5679,
                                                                        "name": "l1Counterpart",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5673,
                                                                        "src": "520:13:33",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 5678,
                                                                    "name": "applyL1ToL2Alias",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5713,
                                                                    "src": "503:16:33",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_address_$",
                                                                        "typeString": "function (address) pure returns (address)"
                                                                    }
                                                                },
                                                                "id": 5680,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "503:31:33",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "489:45:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f4e4c595f434f554e544552504152545f47415445574159",
                                                            "id": 5682,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "536:26:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f",
                                                                "typeString": "literal_string \"ONLY_COUNTERPART_GATEWAY\""
                                                            },
                                                            "value": "ONLY_COUNTERPART_GATEWAY"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f",
                                                                "typeString": "literal_string \"ONLY_COUNTERPART_GATEWAY\""
                                                            }
                                                        ],
                                                        "id": 5675,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "481:7:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 5683,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "481:82:33",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5684,
                                                "nodeType": "ExpressionStatement",
                                                "src": "481:82:33"
                                            },
                                            {
                                                "id": 5685,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "573:1:33"
                                            }
                                        ]
                                    },
                                    "id": 5687,
                                    "name": "onlyFromCrossDomainAccount",
                                    "nameLocation": "421:26:33",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 5674,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5673,
                                                "mutability": "mutable",
                                                "name": "l1Counterpart",
                                                "nameLocation": "456:13:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5687,
                                                "src": "448:21:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5672,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "448:7:33",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "447:23:33"
                                    },
                                    "src": "412:169:33",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 5693,
                                    "mutability": "constant",
                                    "name": "offset",
                                    "nameLocation": "604:6:33",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5748,
                                    "src": "587:77:33",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                    },
                                    "typeName": {
                                        "id": 5688,
                                        "name": "uint160",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "587:7:33",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                        }
                                    },
                                    "value": {
                                        "arguments": [
                                            {
                                                "hexValue": "307831313131303030303030303030303030303030303030303030303030303030303030303031313131",
                                                "id": 5691,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "621:42:33",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "value": "0x1111000000000000000000000000000000001111"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 5690,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "613:7:33",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint160_$",
                                                "typeString": "type(uint160)"
                                            },
                                            "typeName": {
                                                "id": 5689,
                                                "name": "uint160",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "613:7:33",
                                                "typeDescriptions": {}
                                            }
                                        },
                                        "id": 5692,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "613:51:33",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint160",
                                            "typeString": "uint160"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5712,
                                        "nodeType": "Block",
                                        "src": "913:65:33",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5710,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5700,
                                                        "name": "l2Address",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5698,
                                                        "src": "923:9:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint160",
                                                                    "typeString": "uint160"
                                                                },
                                                                "id": 5708,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5705,
                                                                            "name": "l1Address",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5695,
                                                                            "src": "951:9:33",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "id": 5704,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "943:7:33",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_uint160_$",
                                                                            "typeString": "type(uint160)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5703,
                                                                            "name": "uint160",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "943:7:33",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5706,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "943:18:33",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint160",
                                                                        "typeString": "uint160"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "id": 5707,
                                                                    "name": "offset",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5693,
                                                                    "src": "964:6:33",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint160",
                                                                        "typeString": "uint160"
                                                                    }
                                                                },
                                                                "src": "943:27:33",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint160",
                                                                    "typeString": "uint160"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint160",
                                                                    "typeString": "uint160"
                                                                }
                                                            ],
                                                            "id": 5702,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "935:7:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 5701,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "935:7:33",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 5709,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "935:36:33",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "923:48:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 5711,
                                                "nodeType": "ExpressionStatement",
                                                "src": "923:48:33"
                                            }
                                        ]
                                    },
                                    "id": 5713,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "applyL1ToL2Alias",
                                    "nameLocation": "835:16:33",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5696,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5695,
                                                "mutability": "mutable",
                                                "name": "l1Address",
                                                "nameLocation": "860:9:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5713,
                                                "src": "852:17:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5694,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "852:7:33",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "851:19:33"
                                    },
                                    "returnParameters": {
                                        "id": 5699,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5698,
                                                "mutability": "mutable",
                                                "name": "l2Address",
                                                "nameLocation": "902:9:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5713,
                                                "src": "894:17:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5697,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "894:7:33",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "893:19:33"
                                    },
                                    "scope": 5748,
                                    "src": "826:152:33",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5746,
                                        "nodeType": "Block",
                                        "src": "2016:235:33",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5725
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5725,
                                                        "mutability": "mutable",
                                                        "name": "id",
                                                        "nameLocation": "2120:2:33",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5746,
                                                        "src": "2112:10:33",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5724,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2112:7:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5736,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 5733,
                                                            "name": "to",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5717,
                                                            "src": "2157:2:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5734,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5719,
                                                            "src": "2161:4:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "313030",
                                                                            "id": 5729,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "2140:3:33",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_100_by_1",
                                                                                "typeString": "int_const 100"
                                                                            },
                                                                            "value": "100"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_100_by_1",
                                                                                "typeString": "int_const 100"
                                                                            }
                                                                        ],
                                                                        "id": 5728,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "2132:7:33",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5727,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "2132:7:33",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5730,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2132:12:33",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 5726,
                                                                "name": "ArbSys",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5839,
                                                                "src": "2125:6:33",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_ArbSys_$5839_$",
                                                                    "typeString": "type(contract ArbSys)"
                                                                }
                                                            },
                                                            "id": 5731,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2125:20:33",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_ArbSys_$5839",
                                                                "typeString": "contract ArbSys"
                                                            }
                                                        },
                                                        "id": 5732,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sendTxToL1",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5786,
                                                        "src": "2125:31:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                                            "typeString": "function (address,bytes memory) payable external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5735,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2125:41:33",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2112:54:33"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 5738,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5715,
                                                            "src": "2205:4:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5739,
                                                            "name": "to",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5717,
                                                            "src": "2211:2:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5740,
                                                            "name": "id",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5725,
                                                            "src": "2215:2:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 5741,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5719,
                                                            "src": "2219:4:33",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 5737,
                                                        "name": "SentCrossDomainMessage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5671,
                                                        "src": "2182:22:33",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,address,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "id": 5742,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2182:42:33",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5743,
                                                "nodeType": "EmitStatement",
                                                "src": "2177:47:33"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5744,
                                                    "name": "id",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5725,
                                                    "src": "2242:2:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5723,
                                                "id": 5745,
                                                "nodeType": "Return",
                                                "src": "2235:9:33"
                                            }
                                        ]
                                    },
                                    "id": 5747,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendCrossDomainMessage",
                                    "nameLocation": "1891:22:33",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5720,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5715,
                                                "mutability": "mutable",
                                                "name": "user",
                                                "nameLocation": "1931:4:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5747,
                                                "src": "1923:12:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5714,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1923:7:33",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5717,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "1953:2:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5747,
                                                "src": "1945:10:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5716,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1945:7:33",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5719,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "1978:4:33",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5747,
                                                "src": "1965:17:33",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 5718,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1965:5:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1913:75:33"
                                    },
                                    "returnParameters": {
                                        "id": 5723,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5722,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5747,
                                                "src": "2007:7:33",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5721,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2007:7:33",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2006:9:33"
                                    },
                                    "scope": 5748,
                                    "src": "1882:369:33",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 5749,
                            "src": "256:1997:33",
                            "usedErrors": []
                        }
                    ],
                    "src": "196:2058:33"
                },
                "id": 33
            },
            "contracts/external/avm/interfaces/ArbSys.sol": {
                "ast": {
                    "absolutePath": "contracts/external/avm/interfaces/ArbSys.sol",
                    "exportedSymbols": {
                        "ArbSys": [
                            5839
                        ]
                    },
                    "id": 5840,
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5750,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "205:23:34"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "ArbSys",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 5751,
                                "nodeType": "StructuredDocumentation",
                                "src": "230:338:34",
                                "text": " @notice Precompiled contract that exists in every Arbitrum chain at address(100),\n 0x0000000000000000000000000000000000000064. Exposes a variety of system-level functionality. ArbSys provides\n systems functionality useful to some Arbitrum contracts. Any contract running on an Arbitrum Chain can call the\n chain's ArbSys."
                            },
                            "fullyImplemented": false,
                            "id": 5839,
                            "linearizedBaseContracts": [
                                5839
                            ],
                            "name": "ArbSys",
                            "nameLocation": "579:6:34",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 5752,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "592:118:34",
                                        "text": " @notice Get internal version number identifying an ArbOS build\n @return version number as int"
                                    },
                                    "functionSelector": "051038f2",
                                    "id": 5757,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "arbOSVersion",
                                    "nameLocation": "724:12:34",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5753,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "736:2:34"
                                    },
                                    "returnParameters": {
                                        "id": 5756,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5755,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5757,
                                                "src": "762:7:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5754,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "762:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "761:9:34"
                                    },
                                    "scope": 5839,
                                    "src": "715:56:34",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "d127f54a",
                                    "id": 5762,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "arbChainID",
                                    "nameLocation": "786:10:34",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5758,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "796:2:34"
                                    },
                                    "returnParameters": {
                                        "id": 5761,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5760,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5762,
                                                "src": "822:7:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5759,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "822:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "821:9:34"
                                    },
                                    "scope": 5839,
                                    "src": "777:54:34",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 5763,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "837:162:34",
                                        "text": " @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)\n @return block number as int"
                                    },
                                    "functionSelector": "a3b1b31d",
                                    "id": 5768,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "arbBlockNumber",
                                    "nameLocation": "1013:14:34",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5764,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1027:2:34"
                                    },
                                    "returnParameters": {
                                        "id": 5767,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5766,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5768,
                                                "src": "1053:7:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5765,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1053:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1052:9:34"
                                    },
                                    "scope": 5839,
                                    "src": "1004:58:34",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 5769,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1068:293:34",
                                        "text": " @notice Send given amount of Eth to dest from sender.\n This is a convenience function, which is equivalent to calling sendTxToL1 with empty calldataForL1.\n @param destination recipient address on L1\n @return unique identifier for this L2-to-L1 transaction."
                                    },
                                    "functionSelector": "25e16063",
                                    "id": 5776,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "withdrawEth",
                                    "nameLocation": "1375:11:34",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5772,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5771,
                                                "mutability": "mutable",
                                                "name": "destination",
                                                "nameLocation": "1395:11:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5776,
                                                "src": "1387:19:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5770,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1387:7:34",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1386:21:34"
                                    },
                                    "returnParameters": {
                                        "id": 5775,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5774,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5776,
                                                "src": "1434:7:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5773,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1434:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1433:9:34"
                                    },
                                    "scope": 5839,
                                    "src": "1366:77:34",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 5777,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1449:236:34",
                                        "text": " @notice Send a transaction to L1\n @param destination recipient address on L1\n @param calldataForL1 (optional) calldata for L1 contract call\n @return a unique identifier for this L2-to-L1 transaction."
                                    },
                                    "functionSelector": "928c169a",
                                    "id": 5786,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendTxToL1",
                                    "nameLocation": "1699:10:34",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5782,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5779,
                                                "mutability": "mutable",
                                                "name": "destination",
                                                "nameLocation": "1718:11:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5786,
                                                "src": "1710:19:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5778,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1710:7:34",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5781,
                                                "mutability": "mutable",
                                                "name": "calldataForL1",
                                                "nameLocation": "1746:13:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5786,
                                                "src": "1731:28:34",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 5780,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1731:5:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1709:51:34"
                                    },
                                    "returnParameters": {
                                        "id": 5785,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5784,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5786,
                                                "src": "1787:7:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5783,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1787:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1786:9:34"
                                    },
                                    "scope": 5839,
                                    "src": "1690:106:34",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 5787,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1802:316:34",
                                        "text": " @notice get the number of transactions issued by the given external account or the account sequence number of the given contract\n @param account target account\n @return the number of transactions issued by the given external account or the account sequence number of the given contract"
                                    },
                                    "functionSelector": "23ca0cd2",
                                    "id": 5794,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getTransactionCount",
                                    "nameLocation": "2132:19:34",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5790,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5789,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "2160:7:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5794,
                                                "src": "2152:15:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5788,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2152:7:34",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2151:17:34"
                                    },
                                    "returnParameters": {
                                        "id": 5793,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5792,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5794,
                                                "src": "2192:7:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5791,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2192:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2191:9:34"
                                    },
                                    "scope": 5839,
                                    "src": "2123:78:34",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 5795,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2207:323:34",
                                        "text": " @notice get the value of target L2 storage slot\n This function is only callable from address 0 to prevent contracts from being able to call it\n @param account target account\n @param index target index of storage slot\n @return stotage value for the given account at the given index"
                                    },
                                    "functionSelector": "a169625f",
                                    "id": 5804,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getStorageAt",
                                    "nameLocation": "2544:12:34",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5800,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5797,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "2565:7:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5804,
                                                "src": "2557:15:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5796,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2557:7:34",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5799,
                                                "mutability": "mutable",
                                                "name": "index",
                                                "nameLocation": "2582:5:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5804,
                                                "src": "2574:13:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5798,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2574:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2556:32:34"
                                    },
                                    "returnParameters": {
                                        "id": 5803,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5802,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5804,
                                                "src": "2612:7:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5801,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2612:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2611:9:34"
                                    },
                                    "scope": 5839,
                                    "src": "2535:86:34",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 5805,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2627:136:34",
                                        "text": " @notice check if current call is coming from l1\n @return true if the caller of this was called directly from L1"
                                    },
                                    "functionSelector": "08bd624c",
                                    "id": 5810,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isTopLevelCall",
                                    "nameLocation": "2777:14:34",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5806,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2791:2:34"
                                    },
                                    "returnParameters": {
                                        "id": 5809,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5808,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5810,
                                                "src": "2817:4:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 5807,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2817:4:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2816:6:34"
                                    },
                                    "scope": 5839,
                                    "src": "2768:55:34",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "anonymous": false,
                                    "id": 5816,
                                    "name": "EthWithdrawal",
                                    "nameLocation": "2835:13:34",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 5815,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5812,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "destAddr",
                                                "nameLocation": "2865:8:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5816,
                                                "src": "2849:24:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5811,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2849:7:34",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5814,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "2883:6:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5816,
                                                "src": "2875:14:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5813,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2875:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2848:42:34"
                                    },
                                    "src": "2829:62:34"
                                },
                                {
                                    "anonymous": false,
                                    "id": 5838,
                                    "name": "L2ToL1Transaction",
                                    "nameLocation": "2903:17:34",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 5837,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5818,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "caller",
                                                "nameLocation": "2938:6:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "2930:14:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5817,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2930:7:34",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5820,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "destination",
                                                "nameLocation": "2970:11:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "2954:27:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5819,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2954:7:34",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5822,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "uniqueId",
                                                "nameLocation": "3007:8:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "2991:24:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5821,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2991:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5824,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "batchNumber",
                                                "nameLocation": "3041:11:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "3025:27:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5823,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3025:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5826,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "indexInBatch",
                                                "nameLocation": "3070:12:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "3062:20:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5825,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3062:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5828,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "arbBlockNum",
                                                "nameLocation": "3100:11:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "3092:19:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5827,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3092:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5830,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "ethBlockNum",
                                                "nameLocation": "3129:11:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "3121:19:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5829,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3121:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5832,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "3158:9:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "3150:17:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5831,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3150:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5834,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "callvalue",
                                                "nameLocation": "3185:9:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "3177:17:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5833,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3177:7:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5836,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "3210:4:34",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5838,
                                                "src": "3204:10:34",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 5835,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3204:5:34",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2920:300:34"
                                    },
                                    "src": "2897:324:34"
                                }
                            ],
                            "scope": 5840,
                            "src": "569:2654:34",
                            "usedErrors": []
                        }
                    ],
                    "src": "205:3019:34"
                },
                "id": 34
            },
            "contracts/external/avm/interfaces/iArbitrum_Inbox.sol": {
                "ast": {
                    "absolutePath": "contracts/external/avm/interfaces/iArbitrum_Inbox.sol",
                    "exportedSymbols": {
                        "IBridge": [
                            5847
                        ],
                        "iArbitrum_Inbox": [
                            5874
                        ]
                    },
                    "id": 5875,
                    "license": "Apache-2.0",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5841,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "40:23:35"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IBridge",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 5847,
                            "linearizedBaseContracts": [
                                5847
                            ],
                            "name": "IBridge",
                            "nameLocation": "75:7:35",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "ab5d8943",
                                    "id": 5846,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "activeOutbox",
                                    "nameLocation": "98:12:35",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5842,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "110:2:35"
                                    },
                                    "returnParameters": {
                                        "id": 5845,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5844,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5846,
                                                "src": "136:7:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5843,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "136:7:35",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "135:9:35"
                                    },
                                    "scope": 5847,
                                    "src": "89:56:35",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 5875,
                            "src": "65:82:35",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "iArbitrum_Inbox",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 5874,
                            "linearizedBaseContracts": [
                                5874
                            ],
                            "name": "iArbitrum_Inbox",
                            "nameLocation": "159:15:35",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "1b871c8d",
                                    "id": 5868,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "createRetryableTicketNoRefundAliasRewrite",
                                    "nameLocation": "820:41:35",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5864,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5849,
                                                "mutability": "mutable",
                                                "name": "destAddr",
                                                "nameLocation": "879:8:35",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5868,
                                                "src": "871:16:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5848,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "871:7:35",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5851,
                                                "mutability": "mutable",
                                                "name": "l2CallValue",
                                                "nameLocation": "905:11:35",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5868,
                                                "src": "897:19:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5850,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "897:7:35",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5853,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "934:17:35",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5868,
                                                "src": "926:25:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5852,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "926:7:35",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5855,
                                                "mutability": "mutable",
                                                "name": "excessFeeRefundAddress",
                                                "nameLocation": "969:22:35",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5868,
                                                "src": "961:30:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5854,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "961:7:35",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5857,
                                                "mutability": "mutable",
                                                "name": "callValueRefundAddress",
                                                "nameLocation": "1009:22:35",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5868,
                                                "src": "1001:30:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5856,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1001:7:35",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5859,
                                                "mutability": "mutable",
                                                "name": "maxGas",
                                                "nameLocation": "1049:6:35",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5868,
                                                "src": "1041:14:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5858,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1041:7:35",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5861,
                                                "mutability": "mutable",
                                                "name": "gasPriceBid",
                                                "nameLocation": "1073:11:35",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5868,
                                                "src": "1065:19:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5860,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1065:7:35",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5863,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "1109:4:35",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5868,
                                                "src": "1094:19:35",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 5862,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1094:5:35",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "861:258:35"
                                    },
                                    "returnParameters": {
                                        "id": 5867,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5866,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5868,
                                                "src": "1146:7:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5865,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1146:7:35",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1145:9:35"
                                    },
                                    "scope": 5874,
                                    "src": "811:344:35",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "e78cea92",
                                    "id": 5873,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "bridge",
                                    "nameLocation": "1170:6:35",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5869,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1176:2:35"
                                    },
                                    "returnParameters": {
                                        "id": 5872,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5871,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5873,
                                                "src": "1202:7:35",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5870,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1202:7:35",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1201:9:35"
                                    },
                                    "scope": 5874,
                                    "src": "1161:50:35",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 5875,
                            "src": "149:1064:35",
                            "usedErrors": []
                        }
                    ],
                    "src": "40:1174:35"
                },
                "id": 35
            },
            "contracts/external/avm/interfaces/iArbitrum_Outbox.sol": {
                "ast": {
                    "absolutePath": "contracts/external/avm/interfaces/iArbitrum_Outbox.sol",
                    "exportedSymbols": {
                        "iArbitrum_Outbox": [
                            5882
                        ]
                    },
                    "id": 5883,
                    "license": "Apache-2.0",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5876,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "863:23:36"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "iArbitrum_Outbox",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 5882,
                            "linearizedBaseContracts": [
                                5882
                            ],
                            "name": "iArbitrum_Outbox",
                            "nameLocation": "898:16:36",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "80648b02",
                                    "id": 5881,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "l2ToL1Sender",
                                    "nameLocation": "930:12:36",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5877,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "942:2:36"
                                    },
                                    "returnParameters": {
                                        "id": 5880,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5879,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5881,
                                                "src": "968:7:36",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5878,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "968:7:36",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "967:9:36"
                                    },
                                    "scope": 5882,
                                    "src": "921:56:36",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 5883,
                            "src": "888:91:36",
                            "usedErrors": []
                        }
                    ],
                    "src": "863:117:36"
                },
                "id": 36
            },
            "contracts/external/chainbridge/Bridge.sol": {
                "ast": {
                    "absolutePath": "contracts/external/chainbridge/Bridge.sol",
                    "exportedSymbols": {
                        "AccessControl": [
                            619
                        ],
                        "Bridge": [
                            6993
                        ],
                        "Context": [
                            1974
                        ],
                        "ERC165": [
                            2201
                        ],
                        "IAccessControl": [
                            295
                        ],
                        "IBridge": [
                            7383
                        ],
                        "IDepositExecute": [
                            7409
                        ],
                        "IERC165": [
                            2213
                        ],
                        "IERCHandler": [
                            7437
                        ],
                        "IGenericHandler": [
                            7453
                        ],
                        "Pausable": [
                            821
                        ],
                        "SafeMath": [
                            2525
                        ],
                        "Strings": [
                            2177
                        ]
                    },
                    "id": 6994,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5884,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:37"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/access/AccessControl.sol",
                            "file": "@openzeppelin/contracts/access/AccessControl.sol",
                            "id": 5885,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6994,
                            "sourceUnit": 620,
                            "src": "67:58:37",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/security/Pausable.sol",
                            "file": "@openzeppelin/contracts/security/Pausable.sol",
                            "id": 5886,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6994,
                            "sourceUnit": 822,
                            "src": "126:55:37",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/math/SafeMath.sol",
                            "file": "@openzeppelin/contracts/utils/math/SafeMath.sol",
                            "id": 5887,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6994,
                            "sourceUnit": 2526,
                            "src": "182:57:37",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/external/chainbridge/interfaces/IDepositExecute.sol",
                            "file": "./interfaces/IDepositExecute.sol",
                            "id": 5888,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6994,
                            "sourceUnit": 7410,
                            "src": "240:42:37",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/external/chainbridge/interfaces/IBridge.sol",
                            "file": "./interfaces/IBridge.sol",
                            "id": 5889,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6994,
                            "sourceUnit": 7384,
                            "src": "283:34:37",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/external/chainbridge/interfaces/IERCHandler.sol",
                            "file": "./interfaces/IERCHandler.sol",
                            "id": 5890,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6994,
                            "sourceUnit": 7438,
                            "src": "318:38:37",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/external/chainbridge/interfaces/IGenericHandler.sol",
                            "file": "./interfaces/IGenericHandler.sol",
                            "id": 5891,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6994,
                            "sourceUnit": 7454,
                            "src": "357:42:37",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 5893,
                                        "name": "Pausable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 821,
                                        "src": "559:8:37"
                                    },
                                    "id": 5894,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "559:8:37"
                                },
                                {
                                    "baseName": {
                                        "id": 5895,
                                        "name": "AccessControl",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 619,
                                        "src": "569:13:37"
                                    },
                                    "id": 5896,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "569:13:37"
                                }
                            ],
                            "canonicalName": "Bridge",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 5892,
                                "nodeType": "StructuredDocumentation",
                                "src": "401:138:37",
                                "text": "@title Facilitates deposits, creation and votiing of deposit proposals, and deposit executions.\n@author ChainSafe Systems."
                            },
                            "fullyImplemented": true,
                            "id": 6993,
                            "linearizedBaseContracts": [
                                6993,
                                619,
                                2201,
                                2213,
                                295,
                                821,
                                1974
                            ],
                            "name": "Bridge",
                            "nameLocation": "549:6:37",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "id": 5899,
                                    "libraryName": {
                                        "id": 5897,
                                        "name": "SafeMath",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2525,
                                        "src": "595:8:37"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "589:27:37",
                                    "typeName": {
                                        "id": 5898,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "608:7:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    }
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "beab7131",
                                    "id": 5901,
                                    "mutability": "mutable",
                                    "name": "_chainID",
                                    "nameLocation": "635:8:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "622:21:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                    },
                                    "typeName": {
                                        "id": 5900,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "622:5:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "d7a9cd79",
                                    "id": 5903,
                                    "mutability": "mutable",
                                    "name": "_relayerThreshold",
                                    "nameLocation": "664:17:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "649:32:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5902,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "649:7:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "802aabe8",
                                    "id": 5905,
                                    "mutability": "mutable",
                                    "name": "_totalRelayers",
                                    "nameLocation": "702:14:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "687:29:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5904,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "687:7:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "9d5773e0",
                                    "id": 5907,
                                    "mutability": "mutable",
                                    "name": "_totalProposals",
                                    "nameLocation": "737:15:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "722:30:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5906,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "722:7:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "c5b37c22",
                                    "id": 5909,
                                    "mutability": "mutable",
                                    "name": "_fee",
                                    "nameLocation": "773:4:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "758:19:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5908,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "758:7:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "c5ec8970",
                                    "id": 5911,
                                    "mutability": "mutable",
                                    "name": "_expiry",
                                    "nameLocation": "798:7:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "783:22:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5910,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "783:7:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "canonicalName": "Bridge.Vote",
                                    "id": 5914,
                                    "members": [
                                        {
                                            "id": 5912,
                                            "name": "No",
                                            "nameLocation": "824:2:37",
                                            "nodeType": "EnumValue",
                                            "src": "824:2:37"
                                        },
                                        {
                                            "id": 5913,
                                            "name": "Yes",
                                            "nameLocation": "828:3:37",
                                            "nodeType": "EnumValue",
                                            "src": "828:3:37"
                                        }
                                    ],
                                    "name": "Vote",
                                    "nameLocation": "817:4:37",
                                    "nodeType": "EnumDefinition",
                                    "src": "812:21:37"
                                },
                                {
                                    "canonicalName": "Bridge.ProposalStatus",
                                    "id": 5920,
                                    "members": [
                                        {
                                            "id": 5915,
                                            "name": "Inactive",
                                            "nameLocation": "861:8:37",
                                            "nodeType": "EnumValue",
                                            "src": "861:8:37"
                                        },
                                        {
                                            "id": 5916,
                                            "name": "Active",
                                            "nameLocation": "871:6:37",
                                            "nodeType": "EnumValue",
                                            "src": "871:6:37"
                                        },
                                        {
                                            "id": 5917,
                                            "name": "Passed",
                                            "nameLocation": "879:6:37",
                                            "nodeType": "EnumValue",
                                            "src": "879:6:37"
                                        },
                                        {
                                            "id": 5918,
                                            "name": "Executed",
                                            "nameLocation": "887:8:37",
                                            "nodeType": "EnumValue",
                                            "src": "887:8:37"
                                        },
                                        {
                                            "id": 5919,
                                            "name": "Cancelled",
                                            "nameLocation": "897:9:37",
                                            "nodeType": "EnumValue",
                                            "src": "897:9:37"
                                        }
                                    ],
                                    "name": "ProposalStatus",
                                    "nameLocation": "844:14:37",
                                    "nodeType": "EnumDefinition",
                                    "src": "839:69:37"
                                },
                                {
                                    "canonicalName": "Bridge.Proposal",
                                    "id": 5936,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 5922,
                                            "mutability": "mutable",
                                            "name": "_resourceID",
                                            "nameLocation": "948:11:37",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5936,
                                            "src": "940:19:37",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 5921,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "940:7:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 5924,
                                            "mutability": "mutable",
                                            "name": "_dataHash",
                                            "nameLocation": "977:9:37",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5936,
                                            "src": "969:17:37",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 5923,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "969:7:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 5927,
                                            "mutability": "mutable",
                                            "name": "_yesVotes",
                                            "nameLocation": "1006:9:37",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5936,
                                            "src": "996:19:37",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                "typeString": "address[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 5925,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "996:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 5926,
                                                "nodeType": "ArrayTypeName",
                                                "src": "996:9:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 5930,
                                            "mutability": "mutable",
                                            "name": "_noVotes",
                                            "nameLocation": "1035:8:37",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5936,
                                            "src": "1025:18:37",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                "typeString": "address[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 5928,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1025:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 5929,
                                                "nodeType": "ArrayTypeName",
                                                "src": "1025:9:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                    "typeString": "address[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 5933,
                                            "mutability": "mutable",
                                            "name": "_status",
                                            "nameLocation": "1068:7:37",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5936,
                                            "src": "1053:22:37",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                "typeString": "enum Bridge.ProposalStatus"
                                            },
                                            "typeName": {
                                                "id": 5932,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 5931,
                                                    "name": "ProposalStatus",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5920,
                                                    "src": "1053:14:37"
                                                },
                                                "referencedDeclaration": 5920,
                                                "src": "1053:14:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                    "typeString": "enum Bridge.ProposalStatus"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 5935,
                                            "mutability": "mutable",
                                            "name": "_proposedBlock",
                                            "nameLocation": "1093:14:37",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5936,
                                            "src": "1085:22:37",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 5934,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1085:7:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "Proposal",
                                    "nameLocation": "921:8:37",
                                    "nodeType": "StructDefinition",
                                    "scope": 6993,
                                    "src": "914:200:37",
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "4b0b919d",
                                    "id": 5940,
                                    "mutability": "mutable",
                                    "name": "_depositCounts",
                                    "nameLocation": "1200:14:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "1168:46:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$",
                                        "typeString": "mapping(uint8 => uint64)"
                                    },
                                    "typeName": {
                                        "id": 5939,
                                        "keyType": {
                                            "id": 5937,
                                            "name": "uint8",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1176:5:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1168:24:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$",
                                            "typeString": "mapping(uint8 => uint64)"
                                        },
                                        "valueType": {
                                            "id": 5938,
                                            "name": "uint64",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1185:6:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "84db809f",
                                    "id": 5944,
                                    "mutability": "mutable",
                                    "name": "_resourceIDToHandlerAddress",
                                    "nameLocation": "1292:27:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "1257:62:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                        "typeString": "mapping(bytes32 => address)"
                                    },
                                    "typeName": {
                                        "id": 5943,
                                        "keyType": {
                                            "id": 5941,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1265:7:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1257:27:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                            "typeString": "mapping(bytes32 => address)"
                                        },
                                        "valueType": {
                                            "id": 5942,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1276:7:37",
                                            "stateMutability": "nonpayable",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "3ee7094a",
                                    "id": 5950,
                                    "mutability": "mutable",
                                    "name": "_depositRecords",
                                    "nameLocation": "1426:15:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "1376:65:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint8_$_t_bytes_storage_$_$",
                                        "typeString": "mapping(uint64 => mapping(uint8 => bytes))"
                                    },
                                    "typeName": {
                                        "id": 5949,
                                        "keyType": {
                                            "id": 5945,
                                            "name": "uint64",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1384:6:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1376:42:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint8_$_t_bytes_storage_$_$",
                                            "typeString": "mapping(uint64 => mapping(uint8 => bytes))"
                                        },
                                        "valueType": {
                                            "id": 5948,
                                            "keyType": {
                                                "id": 5946,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1402:5:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                }
                                            },
                                            "nodeType": "Mapping",
                                            "src": "1394:23:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint8_$_t_bytes_storage_$",
                                                "typeString": "mapping(uint8 => bytes)"
                                            },
                                            "valueType": {
                                                "id": 5947,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1411:5:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "50598719",
                                    "id": 5957,
                                    "mutability": "mutable",
                                    "name": "_proposals",
                                    "nameLocation": "1567:10:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "1512:65:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$_$",
                                        "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))"
                                    },
                                    "typeName": {
                                        "id": 5956,
                                        "keyType": {
                                            "id": 5951,
                                            "name": "uint72",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1520:6:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint72",
                                                "typeString": "uint72"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1512:47:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$_$",
                                            "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))"
                                        },
                                        "valueType": {
                                            "id": 5955,
                                            "keyType": {
                                                "id": 5952,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1538:7:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "Mapping",
                                            "src": "1530:28:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$",
                                                "typeString": "mapping(bytes32 => struct Bridge.Proposal)"
                                            },
                                            "valueType": {
                                                "id": 5954,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 5953,
                                                    "name": "Proposal",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 5936,
                                                    "src": "1549:8:37"
                                                },
                                                "referencedDeclaration": 5936,
                                                "src": "1549:8:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                    "typeString": "struct Bridge.Proposal"
                                                }
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "7febe63f",
                                    "id": 5965,
                                    "mutability": "mutable",
                                    "name": "_hasVotedOnProposal",
                                    "nameLocation": "1733:19:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "1662:90:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$",
                                        "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))"
                                    },
                                    "typeName": {
                                        "id": 5964,
                                        "keyType": {
                                            "id": 5958,
                                            "name": "uint72",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1670:6:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint72",
                                                "typeString": "uint72"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1662:63:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$",
                                            "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))"
                                        },
                                        "valueType": {
                                            "id": 5963,
                                            "keyType": {
                                                "id": 5959,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1688:7:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "nodeType": "Mapping",
                                            "src": "1680:44:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                                "typeString": "mapping(bytes32 => mapping(address => bool))"
                                            },
                                            "valueType": {
                                                "id": 5962,
                                                "keyType": {
                                                    "id": 5960,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1707:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "Mapping",
                                                "src": "1699:24:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                    "typeString": "mapping(address => bool)"
                                                },
                                                "valueType": {
                                                    "id": 5961,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1718:4:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                }
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "id": 5969,
                                    "name": "RelayerThresholdChanged",
                                    "nameLocation": "1765:23:37",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 5968,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5967,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "newThreshold",
                                                "nameLocation": "1805:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5969,
                                                "src": "1789:28:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5966,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1789:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1788:30:37"
                                    },
                                    "src": "1759:60:37"
                                },
                                {
                                    "anonymous": false,
                                    "id": 5973,
                                    "name": "RelayerAdded",
                                    "nameLocation": "1830:12:37",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 5972,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5971,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "relayer",
                                                "nameLocation": "1859:7:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5973,
                                                "src": "1843:23:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5970,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1843:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1842:25:37"
                                    },
                                    "src": "1824:44:37"
                                },
                                {
                                    "anonymous": false,
                                    "id": 5977,
                                    "name": "RelayerRemoved",
                                    "nameLocation": "1879:14:37",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 5976,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5975,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "relayer",
                                                "nameLocation": "1910:7:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5977,
                                                "src": "1894:23:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5974,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1894:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1893:25:37"
                                    },
                                    "src": "1873:46:37"
                                },
                                {
                                    "anonymous": false,
                                    "id": 5985,
                                    "name": "Deposit",
                                    "nameLocation": "1930:7:37",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 5984,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5979,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "destinationChainID",
                                                "nameLocation": "1952:18:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5985,
                                                "src": "1938:32:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 5978,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1938:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5981,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "1988:10:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5985,
                                                "src": "1972:26:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5980,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1972:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5983,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "2015:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5985,
                                                "src": "2000:27:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 5982,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2000:6:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1937:91:37"
                                    },
                                    "src": "1924:105:37"
                                },
                                {
                                    "anonymous": false,
                                    "id": 5998,
                                    "name": "ProposalEvent",
                                    "nameLocation": "2040:13:37",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 5997,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5987,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "originChainID",
                                                "nameLocation": "2077:13:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5998,
                                                "src": "2063:27:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 5986,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2063:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5989,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "2115:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5998,
                                                "src": "2100:27:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 5988,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2100:6:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5992,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "status",
                                                "nameLocation": "2160:6:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5998,
                                                "src": "2137:29:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                    "typeString": "enum Bridge.ProposalStatus"
                                                },
                                                "typeName": {
                                                    "id": 5991,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5990,
                                                        "name": "ProposalStatus",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 5920,
                                                        "src": "2137:14:37"
                                                    },
                                                    "referencedDeclaration": 5920,
                                                    "src": "2137:14:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                        "typeString": "enum Bridge.ProposalStatus"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5994,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "2184:10:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5998,
                                                "src": "2176:18:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5993,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2176:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5996,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "dataHash",
                                                "nameLocation": "2212:8:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5998,
                                                "src": "2204:16:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5995,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2204:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2053:173:37"
                                    },
                                    "src": "2034:193:37"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6009,
                                    "name": "ProposalVote",
                                    "nameLocation": "2239:12:37",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6008,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6000,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "originChainID",
                                                "nameLocation": "2275:13:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6009,
                                                "src": "2261:27:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 5999,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2261:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6002,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "2313:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6009,
                                                "src": "2298:27:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6001,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2298:6:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6005,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "status",
                                                "nameLocation": "2358:6:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6009,
                                                "src": "2335:29:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                    "typeString": "enum Bridge.ProposalStatus"
                                                },
                                                "typeName": {
                                                    "id": 6004,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6003,
                                                        "name": "ProposalStatus",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 5920,
                                                        "src": "2335:14:37"
                                                    },
                                                    "referencedDeclaration": 5920,
                                                    "src": "2335:14:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                        "typeString": "enum Bridge.ProposalStatus"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6007,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "2382:10:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6009,
                                                "src": "2374:18:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6006,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2374:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2251:147:37"
                                    },
                                    "src": "2233:166:37"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "926d7d7f",
                                    "id": 6014,
                                    "mutability": "constant",
                                    "name": "RELAYER_ROLE",
                                    "nameLocation": "2429:12:37",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6993,
                                    "src": "2405:64:37",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6010,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2405:7:37",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "arguments": [
                                            {
                                                "hexValue": "52454c415945525f524f4c45",
                                                "id": 6012,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2454:14:37",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4",
                                                    "typeString": "literal_string \"RELAYER_ROLE\""
                                                },
                                                "value": "RELAYER_ROLE"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4",
                                                    "typeString": "literal_string \"RELAYER_ROLE\""
                                                }
                                            ],
                                            "id": 6011,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "2444:9:37",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                        },
                                        "id": 6013,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2444:25:37",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 6020,
                                        "nodeType": "Block",
                                        "src": "2497:40:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 6016,
                                                        "name": "_onlyAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6067,
                                                        "src": "2507:10:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 6017,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2507:12:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6018,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2507:12:37"
                                            },
                                            {
                                                "id": 6019,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "2529:1:37"
                                            }
                                        ]
                                    },
                                    "id": 6021,
                                    "name": "onlyAdmin",
                                    "nameLocation": "2485:9:37",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 6015,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2494:2:37"
                                    },
                                    "src": "2476:61:37",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 6027,
                                        "nodeType": "Block",
                                        "src": "2573:49:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 6023,
                                                        "name": "_onlyAdminOrRelayer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6054,
                                                        "src": "2583:19:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 6024,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2583:21:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6025,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2583:21:37"
                                            },
                                            {
                                                "id": 6026,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "2614:1:37"
                                            }
                                        ]
                                    },
                                    "id": 6028,
                                    "name": "onlyAdminOrRelayer",
                                    "nameLocation": "2552:18:37",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 6022,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2570:2:37"
                                    },
                                    "src": "2543:79:37",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 6034,
                                        "nodeType": "Block",
                                        "src": "2652:43:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 6030,
                                                        "name": "_onlyRelayers",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6080,
                                                        "src": "2662:13:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 6031,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2662:15:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6032,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2662:15:37"
                                            },
                                            {
                                                "id": 6033,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "2687:1:37"
                                            }
                                        ]
                                    },
                                    "id": 6035,
                                    "name": "onlyRelayers",
                                    "nameLocation": "2637:12:37",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 6029,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2649:2:37"
                                    },
                                    "src": "2628:67:37",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 6053,
                                        "nodeType": "Block",
                                        "src": "2745:170:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 6049,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 6040,
                                                                        "name": "DEFAULT_ADMIN_ROLE",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 317,
                                                                        "src": "2784:18:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 6041,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -15,
                                                                            "src": "2804:3:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 6042,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "2804:10:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 6039,
                                                                    "name": "hasRole",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 398,
                                                                    "src": "2776:7:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                                        "typeString": "function (bytes32,address) view returns (bool)"
                                                                    }
                                                                },
                                                                "id": 6043,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "2776:39:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "||",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 6045,
                                                                        "name": "RELAYER_ROLE",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6014,
                                                                        "src": "2827:12:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 6046,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -15,
                                                                            "src": "2841:3:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 6047,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "2841:10:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 6044,
                                                                    "name": "hasRole",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 398,
                                                                    "src": "2819:7:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                                        "typeString": "function (bytes32,address) view returns (bool)"
                                                                    }
                                                                },
                                                                "id": 6048,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "2819:33:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "2776:76:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "73656e646572206973206e6f742072656c61796572206f722061646d696e",
                                                            "id": 6050,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2866:32:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe",
                                                                "typeString": "literal_string \"sender is not relayer or admin\""
                                                            },
                                                            "value": "sender is not relayer or admin"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe",
                                                                "typeString": "literal_string \"sender is not relayer or admin\""
                                                            }
                                                        ],
                                                        "id": 6038,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2755:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6051,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2755:153:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6052,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2755:153:37"
                                            }
                                        ]
                                    },
                                    "id": 6054,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_onlyAdminOrRelayer",
                                    "nameLocation": "2710:19:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6036,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2729:2:37"
                                    },
                                    "returnParameters": {
                                        "id": 6037,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2745:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "2701:214:37",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 6066,
                                        "nodeType": "Block",
                                        "src": "2956:99:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 6059,
                                                                    "name": "DEFAULT_ADMIN_ROLE",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 317,
                                                                    "src": "2982:18:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 6060,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "3002:3:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 6061,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "3002:10:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 6058,
                                                                "name": "hasRole",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 398,
                                                                "src": "2974:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (bytes32,address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 6062,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2974:39:37",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "73656e64657220646f65736e277420686176652061646d696e20726f6c65",
                                                            "id": 6063,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3015:32:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205",
                                                                "typeString": "literal_string \"sender doesn't have admin role\""
                                                            },
                                                            "value": "sender doesn't have admin role"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205",
                                                                "typeString": "literal_string \"sender doesn't have admin role\""
                                                            }
                                                        ],
                                                        "id": 6057,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2966:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6064,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2966:82:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6065,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2966:82:37"
                                            }
                                        ]
                                    },
                                    "id": 6067,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_onlyAdmin",
                                    "nameLocation": "2930:10:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6055,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2940:2:37"
                                    },
                                    "returnParameters": {
                                        "id": 6056,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2956:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "2921:134:37",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 6079,
                                        "nodeType": "Block",
                                        "src": "3099:95:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 6072,
                                                                    "name": "RELAYER_ROLE",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6014,
                                                                    "src": "3125:12:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 6073,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "3139:3:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 6074,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "3139:10:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 6071,
                                                                "name": "hasRole",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 398,
                                                                "src": "3117:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (bytes32,address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 6075,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3117:33:37",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "73656e64657220646f65736e277420686176652072656c6179657220726f6c65",
                                                            "id": 6076,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3152:34:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4",
                                                                "typeString": "literal_string \"sender doesn't have relayer role\""
                                                            },
                                                            "value": "sender doesn't have relayer role"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4",
                                                                "typeString": "literal_string \"sender doesn't have relayer role\""
                                                            }
                                                        ],
                                                        "id": 6070,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3109:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6077,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3109:78:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6078,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3109:78:37"
                                            }
                                        ]
                                    },
                                    "id": 6080,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_onlyRelayers",
                                    "nameLocation": "3070:13:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6068,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3083:2:37"
                                    },
                                    "returnParameters": {
                                        "id": 6069,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3099:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "3061:133:37",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 6144,
                                        "nodeType": "Block",
                                        "src": "3800:401:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 6097,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 6095,
                                                        "name": "_chainID",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5901,
                                                        "src": "3810:8:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 6096,
                                                        "name": "chainID",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6083,
                                                        "src": "3821:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "src": "3810:18:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "id": 6098,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3810:18:37"
                                            },
                                            {
                                                "expression": {
                                                    "id": 6101,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 6099,
                                                        "name": "_relayerThreshold",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5903,
                                                        "src": "3838:17:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 6100,
                                                        "name": "initialRelayerThreshold",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6088,
                                                        "src": "3858:23:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3838:43:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 6102,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3838:43:37"
                                            },
                                            {
                                                "expression": {
                                                    "id": 6105,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 6103,
                                                        "name": "_fee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5909,
                                                        "src": "3891:4:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 6104,
                                                        "name": "fee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6090,
                                                        "src": "3898:3:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3891:10:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 6106,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3891:10:37"
                                            },
                                            {
                                                "expression": {
                                                    "id": 6109,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 6107,
                                                        "name": "_expiry",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5911,
                                                        "src": "3911:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 6108,
                                                        "name": "expiry",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6092,
                                                        "src": "3921:6:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3911:16:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 6110,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3911:16:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6112,
                                                            "name": "DEFAULT_ADMIN_ROLE",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 317,
                                                            "src": "3949:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6113,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "3969:3:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 6114,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "3969:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6111,
                                                        "name": "_setupRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 533,
                                                        "src": "3938:10:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address)"
                                                        }
                                                    },
                                                    "id": 6115,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3938:42:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6116,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3938:42:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6118,
                                                            "name": "RELAYER_ROLE",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6014,
                                                            "src": "4004:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6119,
                                                            "name": "DEFAULT_ADMIN_ROLE",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 317,
                                                            "src": "4018:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 6117,
                                                        "name": "_setRoleAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 557,
                                                        "src": "3990:13:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                                                            "typeString": "function (bytes32,bytes32)"
                                                        }
                                                    },
                                                    "id": 6120,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3990:47:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6121,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3990:47:37"
                                            },
                                            {
                                                "body": {
                                                    "id": 6142,
                                                    "nodeType": "Block",
                                                    "src": "4097:98:37",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 6133,
                                                                        "name": "RELAYER_ROLE",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6014,
                                                                        "src": "4121:12:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "baseExpression": {
                                                                            "id": 6134,
                                                                            "name": "initialRelayers",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6086,
                                                                            "src": "4135:15:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                                "typeString": "address[] memory"
                                                                            }
                                                                        },
                                                                        "id": 6136,
                                                                        "indexExpression": {
                                                                            "id": 6135,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6123,
                                                                            "src": "4151:1:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "4135:18:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 6132,
                                                                    "name": "grantRole",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 476,
                                                                    "src": "4111:9:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                                        "typeString": "function (bytes32,address)"
                                                                    }
                                                                },
                                                                "id": 6137,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4111:43:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 6138,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4111:43:37"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6140,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "++",
                                                                "prefix": false,
                                                                "src": "4168:16:37",
                                                                "subExpression": {
                                                                    "id": 6139,
                                                                    "name": "_totalRelayers",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5905,
                                                                    "src": "4168:14:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 6141,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4168:16:37"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 6128,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 6125,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6123,
                                                        "src": "4064:1:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 6126,
                                                            "name": "initialRelayers",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6086,
                                                            "src": "4068:15:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                "typeString": "address[] memory"
                                                            }
                                                        },
                                                        "id": 6127,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4068:22:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4064:26:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 6143,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        6123
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 6123,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "4061:1:37",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 6143,
                                                            "src": "4053:9:37",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 6122,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "4053:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 6124,
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "4053:9:37"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 6130,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "++",
                                                        "prefix": false,
                                                        "src": "4092:3:37",
                                                        "subExpression": {
                                                            "id": 6129,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6123,
                                                            "src": "4092:1:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 6131,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "4092:3:37"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "4048:147:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6081,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3200:426:37",
                                        "text": "@notice Initializes Bridge, creates and grants {msg.sender} the admin role,\ncreates and grants {initialRelayers} the relayer role.\n@param chainID ID of chain the Bridge contract exists on.\n@param initialRelayers Addresses that should be initially granted the relayer role.\n@param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed."
                                    },
                                    "id": 6145,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6093,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6083,
                                                "mutability": "mutable",
                                                "name": "chainID",
                                                "nameLocation": "3658:7:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6145,
                                                "src": "3652:13:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 6082,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3652:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6086,
                                                "mutability": "mutable",
                                                "name": "initialRelayers",
                                                "nameLocation": "3692:15:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6145,
                                                "src": "3675:32:37",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 6084,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "3675:7:37",
                                                        "stateMutability": "nonpayable",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "id": 6085,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "3675:9:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                        "typeString": "address[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6088,
                                                "mutability": "mutable",
                                                "name": "initialRelayerThreshold",
                                                "nameLocation": "3725:23:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6145,
                                                "src": "3717:31:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6087,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3717:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6090,
                                                "mutability": "mutable",
                                                "name": "fee",
                                                "nameLocation": "3766:3:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6145,
                                                "src": "3758:11:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6089,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3758:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6092,
                                                "mutability": "mutable",
                                                "name": "expiry",
                                                "nameLocation": "3787:6:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6145,
                                                "src": "3779:14:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6091,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3779:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3642:157:37"
                                    },
                                    "returnParameters": {
                                        "id": 6094,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3800:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "3631:570:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 6158,
                                        "nodeType": "Block",
                                        "src": "4393:54:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6154,
                                                            "name": "RELAYER_ROLE",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6014,
                                                            "src": "4418:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6155,
                                                            "name": "relayer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6148,
                                                            "src": "4432:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6153,
                                                        "name": "hasRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 398,
                                                        "src": "4410:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                            "typeString": "function (bytes32,address) view returns (bool)"
                                                        }
                                                    },
                                                    "id": 6156,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4410:30:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 6152,
                                                "id": 6157,
                                                "nodeType": "Return",
                                                "src": "4403:37:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6146,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4207:116:37",
                                        "text": "@notice Returns true if {relayer} has the relayer role.\n@param relayer Address to check."
                                    },
                                    "functionSelector": "541d5548",
                                    "id": 6159,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isRelayer",
                                    "nameLocation": "4337:9:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6149,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6148,
                                                "mutability": "mutable",
                                                "name": "relayer",
                                                "nameLocation": "4355:7:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6159,
                                                "src": "4347:15:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6147,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4347:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4346:17:37"
                                    },
                                    "returnParameters": {
                                        "id": 6152,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6151,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6159,
                                                "src": "4387:4:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 6150,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4387:4:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4386:6:37"
                                    },
                                    "scope": 6993,
                                    "src": "4328:119:37",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6178,
                                        "nodeType": "Block",
                                        "src": "4758:110:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6168,
                                                            "name": "DEFAULT_ADMIN_ROLE",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 317,
                                                            "src": "4778:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6169,
                                                            "name": "newAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6162,
                                                            "src": "4798:8:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6167,
                                                        "name": "grantRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 476,
                                                        "src": "4768:9:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address)"
                                                        }
                                                    },
                                                    "id": 6170,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4768:39:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6171,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4768:39:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6173,
                                                            "name": "DEFAULT_ADMIN_ROLE",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 317,
                                                            "src": "4830:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6174,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "4850:3:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 6175,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "4850:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6172,
                                                        "name": "renounceRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 519,
                                                        "src": "4817:12:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address)"
                                                        }
                                                    },
                                                    "id": 6176,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4817:44:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6177,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4817:44:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6160,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4453:240:37",
                                        "text": "@notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\n@notice Only callable by an address that currently has the admin role.\n@param newAdmin Address that admin role will be granted to."
                                    },
                                    "functionSelector": "5e1fab0f",
                                    "id": 6179,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6165,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6164,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "4748:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4748:9:37"
                                        }
                                    ],
                                    "name": "renounceAdmin",
                                    "nameLocation": "4707:13:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6163,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6162,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "4729:8:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6179,
                                                "src": "4721:16:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6161,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4721:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4720:18:37"
                                    },
                                    "returnParameters": {
                                        "id": 6166,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4758:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "4698:170:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6188,
                                        "nodeType": "Block",
                                        "src": "5106:25:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 6185,
                                                        "name": "_pause",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 804,
                                                        "src": "5116:6:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 6186,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5116:8:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6187,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5116:8:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6180,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4874:177:37",
                                        "text": "@notice Pauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role."
                                    },
                                    "functionSelector": "80ae1c28",
                                    "id": 6189,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6183,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6182,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "5096:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5096:9:37"
                                        }
                                    ],
                                    "name": "adminPauseTransfers",
                                    "nameLocation": "5065:19:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6181,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5084:2:37"
                                    },
                                    "returnParameters": {
                                        "id": 6184,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5106:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "5056:75:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6198,
                                        "nodeType": "Block",
                                        "src": "5373:27:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 6195,
                                                        "name": "_unpause",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 820,
                                                        "src": "5383:8:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 6196,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5383:10:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6197,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5383:10:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6190,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5137:179:37",
                                        "text": "@notice Unpauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role."
                                    },
                                    "functionSelector": "ffaac0eb",
                                    "id": 6199,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6193,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6192,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "5363:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5363:9:37"
                                        }
                                    ],
                                    "name": "adminUnpauseTransfers",
                                    "nameLocation": "5330:21:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6191,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5351:2:37"
                                    },
                                    "returnParameters": {
                                        "id": 6194,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5373:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "5321:79:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6215,
                                        "nodeType": "Block",
                                        "src": "5802:101:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 6209,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 6207,
                                                        "name": "_relayerThreshold",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5903,
                                                        "src": "5812:17:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 6208,
                                                        "name": "newThreshold",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6202,
                                                        "src": "5832:12:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5812:32:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 6210,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5812:32:37"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 6212,
                                                            "name": "newThreshold",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6202,
                                                            "src": "5883:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 6211,
                                                        "name": "RelayerThresholdChanged",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5969,
                                                        "src": "5859:23:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256)"
                                                        }
                                                    },
                                                    "id": 6213,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5859:37:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6214,
                                                "nodeType": "EmitStatement",
                                                "src": "5854:42:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6200,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5406:313:37",
                                        "text": "@notice Modifies the number of votes required for a proposal to be considered passed.\n@notice Only callable by an address that currently has the admin role.\n@param newThreshold Value {_relayerThreshold} will be changed to.\n@notice Emits {RelayerThresholdChanged} event."
                                    },
                                    "functionSelector": "4e056005",
                                    "id": 6216,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6205,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6204,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "5792:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5792:9:37"
                                        }
                                    ],
                                    "name": "adminChangeRelayerThreshold",
                                    "nameLocation": "5733:27:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6203,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6202,
                                                "mutability": "mutable",
                                                "name": "newThreshold",
                                                "nameLocation": "5769:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6216,
                                                "src": "5761:20:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6201,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5761:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5760:22:37"
                                    },
                                    "returnParameters": {
                                        "id": 6206,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5802:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "5724:179:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6245,
                                        "nodeType": "Block",
                                        "src": "6272:216:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6229,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "!",
                                                            "prefix": true,
                                                            "src": "6290:38:37",
                                                            "subExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 6226,
                                                                        "name": "RELAYER_ROLE",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6014,
                                                                        "src": "6299:12:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 6227,
                                                                        "name": "relayerAddress",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6219,
                                                                        "src": "6313:14:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 6225,
                                                                    "name": "hasRole",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 398,
                                                                    "src": "6291:7:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                                        "typeString": "function (bytes32,address) view returns (bool)"
                                                                    }
                                                                },
                                                                "id": 6228,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6291:37:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6164647220616c7265616479206861732072656c6179657220726f6c6521",
                                                            "id": 6230,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6330:32:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85",
                                                                "typeString": "literal_string \"addr already has relayer role!\""
                                                            },
                                                            "value": "addr already has relayer role!"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85",
                                                                "typeString": "literal_string \"addr already has relayer role!\""
                                                            }
                                                        ],
                                                        "id": 6224,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6282:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6231,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6282:81:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6232,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6282:81:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6234,
                                                            "name": "RELAYER_ROLE",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6014,
                                                            "src": "6383:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6235,
                                                            "name": "relayerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6219,
                                                            "src": "6397:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6233,
                                                        "name": "grantRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 476,
                                                        "src": "6373:9:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address)"
                                                        }
                                                    },
                                                    "id": 6236,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6373:39:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6237,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6373:39:37"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 6239,
                                                            "name": "relayerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6219,
                                                            "src": "6440:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6238,
                                                        "name": "RelayerAdded",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5973,
                                                        "src": "6427:12:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 6240,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6427:28:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6241,
                                                "nodeType": "EmitStatement",
                                                "src": "6422:33:37"
                                            },
                                            {
                                                "expression": {
                                                    "id": 6243,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": false,
                                                    "src": "6465:16:37",
                                                    "subExpression": {
                                                        "id": 6242,
                                                        "name": "_totalRelayers",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5905,
                                                        "src": "6465:14:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 6244,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6465:16:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6217,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5909:290:37",
                                        "text": "@notice Grants {relayerAddress} the relayer role and increases {_totalRelayer} count.\n@notice Only callable by an address that currently has the admin role.\n@param relayerAddress Address of relayer to be added.\n@notice Emits {RelayerAdded} event."
                                    },
                                    "functionSelector": "cdb0f73a",
                                    "id": 6246,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6222,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6221,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "6262:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6262:9:37"
                                        }
                                    ],
                                    "name": "adminAddRelayer",
                                    "nameLocation": "6213:15:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6220,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6219,
                                                "mutability": "mutable",
                                                "name": "relayerAddress",
                                                "nameLocation": "6237:14:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6246,
                                                "src": "6229:22:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6218,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6229:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6228:24:37"
                                    },
                                    "returnParameters": {
                                        "id": 6223,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6272:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "6204:284:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6274,
                                        "nodeType": "Block",
                                        "src": "6865:219:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 6256,
                                                                    "name": "RELAYER_ROLE",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6014,
                                                                    "src": "6891:12:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 6257,
                                                                    "name": "relayerAddress",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6249,
                                                                    "src": "6905:14:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 6255,
                                                                "name": "hasRole",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 398,
                                                                "src": "6883:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (bytes32,address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 6258,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6883:37:37",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6164647220646f65736e277420686176652072656c6179657220726f6c6521",
                                                            "id": 6259,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6922:33:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864",
                                                                "typeString": "literal_string \"addr doesn't have relayer role!\""
                                                            },
                                                            "value": "addr doesn't have relayer role!"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864",
                                                                "typeString": "literal_string \"addr doesn't have relayer role!\""
                                                            }
                                                        ],
                                                        "id": 6254,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6875:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6260,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6875:81:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6261,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6875:81:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6263,
                                                            "name": "RELAYER_ROLE",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6014,
                                                            "src": "6977:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6264,
                                                            "name": "relayerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6249,
                                                            "src": "6991:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6262,
                                                        "name": "revokeRole",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 496,
                                                        "src": "6966:10:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address)"
                                                        }
                                                    },
                                                    "id": 6265,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6966:40:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6266,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6966:40:37"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 6268,
                                                            "name": "relayerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6249,
                                                            "src": "7036:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6267,
                                                        "name": "RelayerRemoved",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5977,
                                                        "src": "7021:14:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 6269,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7021:30:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6270,
                                                "nodeType": "EmitStatement",
                                                "src": "7016:35:37"
                                            },
                                            {
                                                "expression": {
                                                    "id": 6272,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "--",
                                                    "prefix": false,
                                                    "src": "7061:16:37",
                                                    "subExpression": {
                                                        "id": 6271,
                                                        "name": "_totalRelayers",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5905,
                                                        "src": "7061:14:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 6273,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7061:16:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6247,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6494:295:37",
                                        "text": "@notice Removes relayer role for {relayerAddress} and decreases {_totalRelayer} count.\n@notice Only callable by an address that currently has the admin role.\n@param relayerAddress Address of relayer to be removed.\n@notice Emits {RelayerRemoved} event."
                                    },
                                    "functionSelector": "9d82dd63",
                                    "id": 6275,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6252,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6251,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "6855:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6855:9:37"
                                        }
                                    ],
                                    "name": "adminRemoveRelayer",
                                    "nameLocation": "6803:18:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6250,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6249,
                                                "mutability": "mutable",
                                                "name": "relayerAddress",
                                                "nameLocation": "6830:14:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6275,
                                                "src": "6822:22:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6248,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6822:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6821:24:37"
                                    },
                                    "returnParameters": {
                                        "id": 6253,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6865:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "6794:290:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6307,
                                        "nodeType": "Block",
                                        "src": "7766:187:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 6291,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 6287,
                                                            "name": "_resourceIDToHandlerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5944,
                                                            "src": "7776:27:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                "typeString": "mapping(bytes32 => address)"
                                                            }
                                                        },
                                                        "id": 6289,
                                                        "indexExpression": {
                                                            "id": 6288,
                                                            "name": "resourceID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6280,
                                                            "src": "7804:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "7776:39:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 6290,
                                                        "name": "handlerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6278,
                                                        "src": "7818:14:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "7776:56:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 6292,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7776:56:37"
                                            },
                                            {
                                                "assignments": [
                                                    6295
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6295,
                                                        "mutability": "mutable",
                                                        "name": "handler",
                                                        "nameLocation": "7854:7:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6307,
                                                        "src": "7842:19:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                            "typeString": "contract IERCHandler"
                                                        },
                                                        "typeName": {
                                                            "id": 6294,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 6293,
                                                                "name": "IERCHandler",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 7437,
                                                                "src": "7842:11:37"
                                                            },
                                                            "referencedDeclaration": 7437,
                                                            "src": "7842:11:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                                "typeString": "contract IERCHandler"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6299,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 6297,
                                                            "name": "handlerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6278,
                                                            "src": "7876:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6296,
                                                        "name": "IERCHandler",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7437,
                                                        "src": "7864:11:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IERCHandler_$7437_$",
                                                            "typeString": "type(contract IERCHandler)"
                                                        }
                                                    },
                                                    "id": 6298,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7864:27:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                        "typeString": "contract IERCHandler"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "7842:49:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6303,
                                                            "name": "resourceID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6280,
                                                            "src": "7921:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6304,
                                                            "name": "tokenAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6282,
                                                            "src": "7933:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 6300,
                                                            "name": "handler",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6295,
                                                            "src": "7901:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                                "typeString": "contract IERCHandler"
                                                            }
                                                        },
                                                        "id": 6302,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "setResource",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 7420,
                                                        "src": "7901:19:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                                                            "typeString": "function (bytes32,address) external"
                                                        }
                                                    },
                                                    "id": 6305,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7901:45:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6306,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7901:45:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6276,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7090:530:37",
                                        "text": "@notice Sets a new resource for handler contracts that use the IERCHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed."
                                    },
                                    "functionSelector": "cb10f215",
                                    "id": 6308,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6285,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6284,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "7756:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "7756:9:37"
                                        }
                                    ],
                                    "name": "adminSetResource",
                                    "nameLocation": "7634:16:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6283,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6278,
                                                "mutability": "mutable",
                                                "name": "handlerAddress",
                                                "nameLocation": "7668:14:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6308,
                                                "src": "7660:22:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6277,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7660:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6280,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "7700:10:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6308,
                                                "src": "7692:18:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6279,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7692:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6282,
                                                "mutability": "mutable",
                                                "name": "tokenAddress",
                                                "nameLocation": "7728:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6308,
                                                "src": "7720:20:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6281,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7720:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7650:96:37"
                                    },
                                    "returnParameters": {
                                        "id": 6286,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "7766:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "7625:328:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6346,
                                        "nodeType": "Block",
                                        "src": "8722:238:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 6328,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 6324,
                                                            "name": "_resourceIDToHandlerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5944,
                                                            "src": "8732:27:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                "typeString": "mapping(bytes32 => address)"
                                                            }
                                                        },
                                                        "id": 6326,
                                                        "indexExpression": {
                                                            "id": 6325,
                                                            "name": "resourceID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6313,
                                                            "src": "8760:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "8732:39:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 6327,
                                                        "name": "handlerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6311,
                                                        "src": "8774:14:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "8732:56:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 6329,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8732:56:37"
                                            },
                                            {
                                                "assignments": [
                                                    6332
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6332,
                                                        "mutability": "mutable",
                                                        "name": "handler",
                                                        "nameLocation": "8814:7:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6346,
                                                        "src": "8798:23:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IGenericHandler_$7453",
                                                            "typeString": "contract IGenericHandler"
                                                        },
                                                        "typeName": {
                                                            "id": 6331,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 6330,
                                                                "name": "IGenericHandler",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 7453,
                                                                "src": "8798:15:37"
                                                            },
                                                            "referencedDeclaration": 7453,
                                                            "src": "8798:15:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IGenericHandler_$7453",
                                                                "typeString": "contract IGenericHandler"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6336,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 6334,
                                                            "name": "handlerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6311,
                                                            "src": "8840:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6333,
                                                        "name": "IGenericHandler",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7453,
                                                        "src": "8824:15:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IGenericHandler_$7453_$",
                                                            "typeString": "type(contract IGenericHandler)"
                                                        }
                                                    },
                                                    "id": 6335,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8824:31:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IGenericHandler_$7453",
                                                        "typeString": "contract IGenericHandler"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "8798:57:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6340,
                                                            "name": "resourceID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6313,
                                                            "src": "8885:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6341,
                                                            "name": "contractAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6315,
                                                            "src": "8897:15:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 6342,
                                                            "name": "depositFunctionSig",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6317,
                                                            "src": "8914:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        },
                                                        {
                                                            "id": 6343,
                                                            "name": "executeFunctionSig",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6319,
                                                            "src": "8934:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 6337,
                                                            "name": "handler",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6332,
                                                            "src": "8865:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IGenericHandler_$7453",
                                                                "typeString": "contract IGenericHandler"
                                                            }
                                                        },
                                                        "id": 6339,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "setResource",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 7452,
                                                        "src": "8865:19:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$",
                                                            "typeString": "function (bytes32,address,bytes4,bytes4) external"
                                                        }
                                                    },
                                                    "id": 6344,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8865:88:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6345,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8865:88:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6309,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7959:537:37",
                                        "text": "@notice Sets a new resource for handler contracts that use the IGenericHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed."
                                    },
                                    "functionSelector": "e8437ee7",
                                    "id": 6347,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6322,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6321,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "8712:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "8712:9:37"
                                        }
                                    ],
                                    "name": "adminSetGenericResource",
                                    "nameLocation": "8510:23:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6320,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6311,
                                                "mutability": "mutable",
                                                "name": "handlerAddress",
                                                "nameLocation": "8551:14:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6347,
                                                "src": "8543:22:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6310,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8543:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6313,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "8583:10:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6347,
                                                "src": "8575:18:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6312,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8575:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6315,
                                                "mutability": "mutable",
                                                "name": "contractAddress",
                                                "nameLocation": "8611:15:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6347,
                                                "src": "8603:23:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6314,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8603:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6317,
                                                "mutability": "mutable",
                                                "name": "depositFunctionSig",
                                                "nameLocation": "8643:18:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6347,
                                                "src": "8636:25:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 6316,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8636:6:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6319,
                                                "mutability": "mutable",
                                                "name": "executeFunctionSig",
                                                "nameLocation": "8678:18:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6347,
                                                "src": "8671:25:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 6318,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8671:6:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8533:169:37"
                                    },
                                    "returnParameters": {
                                        "id": 6323,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8722:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "8501:459:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6370,
                                        "nodeType": "Block",
                                        "src": "9442:109:37",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    6359
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6359,
                                                        "mutability": "mutable",
                                                        "name": "handler",
                                                        "nameLocation": "9464:7:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6370,
                                                        "src": "9452:19:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                            "typeString": "contract IERCHandler"
                                                        },
                                                        "typeName": {
                                                            "id": 6358,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 6357,
                                                                "name": "IERCHandler",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 7437,
                                                                "src": "9452:11:37"
                                                            },
                                                            "referencedDeclaration": 7437,
                                                            "src": "9452:11:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                                "typeString": "contract IERCHandler"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6363,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 6361,
                                                            "name": "handlerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6350,
                                                            "src": "9486:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6360,
                                                        "name": "IERCHandler",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7437,
                                                        "src": "9474:11:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IERCHandler_$7437_$",
                                                            "typeString": "type(contract IERCHandler)"
                                                        }
                                                    },
                                                    "id": 6362,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9474:27:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                        "typeString": "contract IERCHandler"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9452:49:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6367,
                                                            "name": "tokenAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6352,
                                                            "src": "9531:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 6364,
                                                            "name": "handler",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6359,
                                                            "src": "9511:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                                "typeString": "contract IERCHandler"
                                                            }
                                                        },
                                                        "id": 6366,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "setBurnable",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 7426,
                                                        "src": "9511:19:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address) external"
                                                        }
                                                    },
                                                    "id": 6368,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9511:33:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6369,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9511:33:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6348,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8966:380:37",
                                        "text": "@notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed."
                                    },
                                    "functionSelector": "8c0c2631",
                                    "id": 6371,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6355,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6354,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "9432:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "9432:9:37"
                                        }
                                    ],
                                    "name": "adminSetBurnable",
                                    "nameLocation": "9360:16:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6353,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6350,
                                                "mutability": "mutable",
                                                "name": "handlerAddress",
                                                "nameLocation": "9385:14:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6371,
                                                "src": "9377:22:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6349,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9377:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6352,
                                                "mutability": "mutable",
                                                "name": "tokenAddress",
                                                "nameLocation": "9409:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6371,
                                                "src": "9401:20:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6351,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9401:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9376:46:37"
                                    },
                                    "returnParameters": {
                                        "id": 6356,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "9442:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "9351:200:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6405,
                                        "nodeType": "Block",
                                        "src": "10285:137:37",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    6385
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6385,
                                                        "mutability": "mutable",
                                                        "name": "nonceAndID",
                                                        "nameLocation": "10302:10:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6405,
                                                        "src": "10295:17:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        },
                                                        "typeName": {
                                                            "id": 6384,
                                                            "name": "uint72",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "10295:6:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint72",
                                                                "typeString": "uint72"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6398,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint72",
                                                        "typeString": "uint72"
                                                    },
                                                    "id": 6397,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint72",
                                                                    "typeString": "uint72"
                                                                },
                                                                "id": 6391,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 6388,
                                                                            "name": "depositNonce",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6376,
                                                                            "src": "10323:12:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint64",
                                                                                "typeString": "uint64"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint64",
                                                                                "typeString": "uint64"
                                                                            }
                                                                        ],
                                                                        "id": 6387,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "10316:6:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_uint72_$",
                                                                            "typeString": "type(uint72)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 6386,
                                                                            "name": "uint72",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "10316:6:37",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 6389,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "10316:20:37",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint72",
                                                                        "typeString": "uint72"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<<",
                                                                "rightExpression": {
                                                                    "hexValue": "38",
                                                                    "id": 6390,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "10340:1:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_8_by_1",
                                                                        "typeString": "int_const 8"
                                                                    },
                                                                    "value": "8"
                                                                },
                                                                "src": "10316:25:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint72",
                                                                    "typeString": "uint72"
                                                                }
                                                            }
                                                        ],
                                                        "id": 6392,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "10315:27:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "|",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 6395,
                                                                "name": "originChainID",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6374,
                                                                "src": "10352:13:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            ],
                                                            "id": 6394,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "10345:6:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint72_$",
                                                                "typeString": "type(uint72)"
                                                            },
                                                            "typeName": {
                                                                "id": 6393,
                                                                "name": "uint72",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "10345:6:37",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 6396,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "10345:21:37",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        }
                                                    },
                                                    "src": "10315:51:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint72",
                                                        "typeString": "uint72"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "10295:71:37"
                                            },
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 6399,
                                                            "name": "_proposals",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5957,
                                                            "src": "10383:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$_$",
                                                                "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                                                            }
                                                        },
                                                        "id": 6401,
                                                        "indexExpression": {
                                                            "id": 6400,
                                                            "name": "nonceAndID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6385,
                                                            "src": "10394:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint72",
                                                                "typeString": "uint72"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "10383:22:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$",
                                                            "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                                                        }
                                                    },
                                                    "id": 6403,
                                                    "indexExpression": {
                                                        "id": 6402,
                                                        "name": "dataHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6378,
                                                        "src": "10406:8:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "10383:32:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage",
                                                        "typeString": "struct Bridge.Proposal storage ref"
                                                    }
                                                },
                                                "functionReturnParameters": 6383,
                                                "id": 6404,
                                                "nodeType": "Return",
                                                "src": "10376:39:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6372,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9557:572:37",
                                        "text": "@notice Returns a proposal.\n@param originChainID Chain ID deposit originated from.\n@param depositNonce ID of proposal generated by proposal's origin Bridge contract.\n@param dataHash Hash of data to be provided when deposit proposal is executed.\n@return Proposal which consists of:\n- _dataHash Hash of data to be provided when deposit proposal is executed.\n- _yesVotes Number of votes in favor of proposal.\n- _noVotes Number of votes against proposal.\n- _status Current status of proposal."
                                    },
                                    "functionSelector": "a9cf69fa",
                                    "id": 6406,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getProposal",
                                    "nameLocation": "10143:11:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6379,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6374,
                                                "mutability": "mutable",
                                                "name": "originChainID",
                                                "nameLocation": "10170:13:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6406,
                                                "src": "10164:19:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 6373,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10164:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6376,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "10200:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6406,
                                                "src": "10193:19:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6375,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10193:6:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6378,
                                                "mutability": "mutable",
                                                "name": "dataHash",
                                                "nameLocation": "10230:8:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6406,
                                                "src": "10222:16:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6377,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10222:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10154:90:37"
                                    },
                                    "returnParameters": {
                                        "id": 6383,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6382,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6406,
                                                "src": "10268:15:37",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Proposal_$5936_memory_ptr",
                                                    "typeString": "struct Bridge.Proposal"
                                                },
                                                "typeName": {
                                                    "id": 6381,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6380,
                                                        "name": "Proposal",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 5936,
                                                        "src": "10268:8:37"
                                                    },
                                                    "referencedDeclaration": 5936,
                                                    "src": "10268:8:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                        "typeString": "struct Bridge.Proposal"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10267:17:37"
                                    },
                                    "scope": 6993,
                                    "src": "10134:288:37",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6425,
                                        "nodeType": "Block",
                                        "src": "10635:98:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 6417,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 6415,
                                                                "name": "_fee",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5909,
                                                                "src": "10653:4:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "id": 6416,
                                                                "name": "newFee",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6409,
                                                                "src": "10661:6:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "10653:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "43757272656e742066656520697320657175616c20746f206e657720666565",
                                                            "id": 6418,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "10669:33:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133",
                                                                "typeString": "literal_string \"Current fee is equal to new fee\""
                                                            },
                                                            "value": "Current fee is equal to new fee"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133",
                                                                "typeString": "literal_string \"Current fee is equal to new fee\""
                                                            }
                                                        ],
                                                        "id": 6414,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "10645:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6419,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "10645:58:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6420,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10645:58:37"
                                            },
                                            {
                                                "expression": {
                                                    "id": 6423,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 6421,
                                                        "name": "_fee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5909,
                                                        "src": "10713:4:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 6422,
                                                        "name": "newFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6409,
                                                        "src": "10720:6:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "10713:13:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 6424,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10713:13:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6407,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10428:143:37",
                                        "text": "@notice Changes deposit fee.\n@notice Only callable by admin.\n@param newFee Value {_fee} will be updated to."
                                    },
                                    "functionSelector": "91c404ac",
                                    "id": 6426,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6412,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6411,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "10625:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "10625:9:37"
                                        }
                                    ],
                                    "name": "adminChangeFee",
                                    "nameLocation": "10585:14:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6410,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6409,
                                                "mutability": "mutable",
                                                "name": "newFee",
                                                "nameLocation": "10608:6:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6426,
                                                "src": "10600:14:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6408,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10600:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10599:16:37"
                                    },
                                    "returnParameters": {
                                        "id": 6413,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "10635:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "10576:157:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6455,
                                        "nodeType": "Block",
                                        "src": "11271:134:37",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    6442
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6442,
                                                        "mutability": "mutable",
                                                        "name": "handler",
                                                        "nameLocation": "11293:7:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6455,
                                                        "src": "11281:19:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                            "typeString": "contract IERCHandler"
                                                        },
                                                        "typeName": {
                                                            "id": 6441,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 6440,
                                                                "name": "IERCHandler",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 7437,
                                                                "src": "11281:11:37"
                                                            },
                                                            "referencedDeclaration": 7437,
                                                            "src": "11281:11:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                                "typeString": "contract IERCHandler"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6446,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 6444,
                                                            "name": "handlerAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6429,
                                                            "src": "11315:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6443,
                                                        "name": "IERCHandler",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7437,
                                                        "src": "11303:11:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IERCHandler_$7437_$",
                                                            "typeString": "type(contract IERCHandler)"
                                                        }
                                                    },
                                                    "id": 6445,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11303:27:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                        "typeString": "contract IERCHandler"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "11281:49:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6450,
                                                            "name": "tokenAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6431,
                                                            "src": "11357:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 6451,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6433,
                                                            "src": "11371:9:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 6452,
                                                            "name": "amountOrTokenID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6435,
                                                            "src": "11382:15:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 6447,
                                                            "name": "handler",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6442,
                                                            "src": "11340:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERCHandler_$7437",
                                                                "typeString": "contract IERCHandler"
                                                            }
                                                        },
                                                        "id": 6449,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "withdraw",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 7436,
                                                        "src": "11340:16:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256) external"
                                                        }
                                                    },
                                                    "id": 6453,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11340:58:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6454,
                                                "nodeType": "ExpressionStatement",
                                                "src": "11340:58:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6427,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10739:357:37",
                                        "text": "@notice Used to manually withdraw funds from ERC safes.\n@param handlerAddress Address of handler to withdraw from.\n@param tokenAddress Address of token to withdraw.\n@param recipient Address to withdraw tokens to.\n@param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to withdraw."
                                    },
                                    "functionSelector": "780cf004",
                                    "id": 6456,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6438,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6437,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "11261:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "11261:9:37"
                                        }
                                    ],
                                    "name": "adminWithdraw",
                                    "nameLocation": "11110:13:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6436,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6429,
                                                "mutability": "mutable",
                                                "name": "handlerAddress",
                                                "nameLocation": "11141:14:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6456,
                                                "src": "11133:22:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6428,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11133:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6431,
                                                "mutability": "mutable",
                                                "name": "tokenAddress",
                                                "nameLocation": "11173:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6456,
                                                "src": "11165:20:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6430,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11165:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6433,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "11203:9:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6456,
                                                "src": "11195:17:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6432,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11195:7:37",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6435,
                                                "mutability": "mutable",
                                                "name": "amountOrTokenID",
                                                "nameLocation": "11230:15:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6456,
                                                "src": "11222:23:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6434,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11222:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11123:128:37"
                                    },
                                    "returnParameters": {
                                        "id": 6439,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "11271:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "11101:304:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6531,
                                        "nodeType": "Block",
                                        "src": "11979:581:37",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 6472,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 6469,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "11997:3:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 6470,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "value",
                                                                "nodeType": "MemberAccess",
                                                                "src": "11997:9:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 6471,
                                                                "name": "_fee",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5909,
                                                                "src": "12010:4:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "11997:17:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e636f72726563742066656520737570706c696564",
                                                            "id": 6473,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "12016:24:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5",
                                                                "typeString": "literal_string \"Incorrect fee supplied\""
                                                            },
                                                            "value": "Incorrect fee supplied"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5",
                                                                "typeString": "literal_string \"Incorrect fee supplied\""
                                                            }
                                                        ],
                                                        "id": 6468,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "11989:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6474,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11989:52:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6475,
                                                "nodeType": "ExpressionStatement",
                                                "src": "11989:52:37"
                                            },
                                            {
                                                "assignments": [
                                                    6477
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6477,
                                                        "mutability": "mutable",
                                                        "name": "handler",
                                                        "nameLocation": "12060:7:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6531,
                                                        "src": "12052:15:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 6476,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12052:7:37",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6481,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 6478,
                                                        "name": "_resourceIDToHandlerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5944,
                                                        "src": "12070:27:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                            "typeString": "mapping(bytes32 => address)"
                                                        }
                                                    },
                                                    "id": 6480,
                                                    "indexExpression": {
                                                        "id": 6479,
                                                        "name": "resourceID",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6461,
                                                        "src": "12098:10:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "12070:39:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12052:57:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 6488,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 6483,
                                                                "name": "handler",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6477,
                                                                "src": "12127:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 6486,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "12146:1:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 6485,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "12138:7:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 6484,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "12138:7:37",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 6487,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "12138:10:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "12127:21:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "7265736f757263654944206e6f74206d617070656420746f2068616e646c6572",
                                                            "id": 6489,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "12150:34:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52",
                                                                "typeString": "literal_string \"resourceID not mapped to handler\""
                                                            },
                                                            "value": "resourceID not mapped to handler"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52",
                                                                "typeString": "literal_string \"resourceID not mapped to handler\""
                                                            }
                                                        ],
                                                        "id": 6482,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "12119:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6490,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12119:66:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6491,
                                                "nodeType": "ExpressionStatement",
                                                "src": "12119:66:37"
                                            },
                                            {
                                                "assignments": [
                                                    6493
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6493,
                                                        "mutability": "mutable",
                                                        "name": "depositNonce",
                                                        "nameLocation": "12203:12:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6531,
                                                        "src": "12196:19:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        },
                                                        "typeName": {
                                                            "id": 6492,
                                                            "name": "uint64",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12196:6:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6498,
                                                "initialValue": {
                                                    "id": 6497,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "++",
                                                    "prefix": true,
                                                    "src": "12218:36:37",
                                                    "subExpression": {
                                                        "baseExpression": {
                                                            "id": 6494,
                                                            "name": "_depositCounts",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5940,
                                                            "src": "12220:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$",
                                                                "typeString": "mapping(uint8 => uint64)"
                                                            }
                                                        },
                                                        "id": 6496,
                                                        "indexExpression": {
                                                            "id": 6495,
                                                            "name": "destinationChainID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6459,
                                                            "src": "12235:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "12220:34:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12196:58:37"
                                            },
                                            {
                                                "expression": {
                                                    "id": 6505,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 6499,
                                                                "name": "_depositRecords",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5950,
                                                                "src": "12264:15:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_uint64_$_t_mapping$_t_uint8_$_t_bytes_storage_$_$",
                                                                    "typeString": "mapping(uint64 => mapping(uint8 => bytes storage ref))"
                                                                }
                                                            },
                                                            "id": 6502,
                                                            "indexExpression": {
                                                                "id": 6500,
                                                                "name": "depositNonce",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6493,
                                                                "src": "12280:12:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "12264:29:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_uint8_$_t_bytes_storage_$",
                                                                "typeString": "mapping(uint8 => bytes storage ref)"
                                                            }
                                                        },
                                                        "id": 6503,
                                                        "indexExpression": {
                                                            "id": 6501,
                                                            "name": "destinationChainID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6459,
                                                            "src": "12294:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "12264:49:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_storage",
                                                            "typeString": "bytes storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 6504,
                                                        "name": "data",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6463,
                                                        "src": "12316:4:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                            "typeString": "bytes calldata"
                                                        }
                                                    },
                                                    "src": "12264:56:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage",
                                                        "typeString": "bytes storage ref"
                                                    }
                                                },
                                                "id": 6506,
                                                "nodeType": "ExpressionStatement",
                                                "src": "12264:56:37"
                                            },
                                            {
                                                "assignments": [
                                                    6509
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6509,
                                                        "mutability": "mutable",
                                                        "name": "depositHandler",
                                                        "nameLocation": "12347:14:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6531,
                                                        "src": "12331:30:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IDepositExecute_$7409",
                                                            "typeString": "contract IDepositExecute"
                                                        },
                                                        "typeName": {
                                                            "id": 6508,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 6507,
                                                                "name": "IDepositExecute",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 7409,
                                                                "src": "12331:15:37"
                                                            },
                                                            "referencedDeclaration": 7409,
                                                            "src": "12331:15:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IDepositExecute_$7409",
                                                                "typeString": "contract IDepositExecute"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6513,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 6511,
                                                            "name": "handler",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6477,
                                                            "src": "12380:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6510,
                                                        "name": "IDepositExecute",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7409,
                                                        "src": "12364:15:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IDepositExecute_$7409_$",
                                                            "typeString": "type(contract IDepositExecute)"
                                                        }
                                                    },
                                                    "id": 6512,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12364:24:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IDepositExecute_$7409",
                                                        "typeString": "contract IDepositExecute"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12331:57:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6517,
                                                            "name": "resourceID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6461,
                                                            "src": "12421:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6518,
                                                            "name": "destinationChainID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6459,
                                                            "src": "12433:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        {
                                                            "id": 6519,
                                                            "name": "depositNonce",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6493,
                                                            "src": "12453:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6520,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "12467:3:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 6521,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "12467:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 6522,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6463,
                                                            "src": "12479:4:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                                "typeString": "bytes calldata"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                                "typeString": "bytes calldata"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 6514,
                                                            "name": "depositHandler",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6509,
                                                            "src": "12398:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IDepositExecute_$7409",
                                                                "typeString": "contract IDepositExecute"
                                                            }
                                                        },
                                                        "id": 6516,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "deposit",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 7400,
                                                        "src": "12398:22:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint8_$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes32,uint8,uint64,address,bytes memory) external"
                                                        }
                                                    },
                                                    "id": 6523,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12398:86:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6524,
                                                "nodeType": "ExpressionStatement",
                                                "src": "12398:86:37"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 6526,
                                                            "name": "destinationChainID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6459,
                                                            "src": "12508:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        {
                                                            "id": 6527,
                                                            "name": "resourceID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6461,
                                                            "src": "12528:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6528,
                                                            "name": "depositNonce",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6493,
                                                            "src": "12540:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 6525,
                                                        "name": "Deposit",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5985,
                                                        "src": "12500:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_bytes32_$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint8,bytes32,uint64)"
                                                        }
                                                    },
                                                    "id": 6529,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12500:53:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6530,
                                                "nodeType": "EmitStatement",
                                                "src": "12495:58:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6457,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11411:418:37",
                                        "text": "@notice Initiates a transfer using a specified handler contract.\n@notice Only callable when Bridge is not paused.\n@param destinationChainID ID of chain deposit will be bridged to.\n@param resourceID ResourceID used to find address of handler to be used for deposit.\n@param data Additional data to be passed to specified handler.\n@notice Emits {Deposit} event."
                                    },
                                    "functionSelector": "05e2ca17",
                                    "id": 6532,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6466,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6465,
                                                "name": "whenNotPaused",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 777,
                                                "src": "11965:13:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "11965:13:37"
                                        }
                                    ],
                                    "name": "deposit",
                                    "nameLocation": "11843:7:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6464,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6459,
                                                "mutability": "mutable",
                                                "name": "destinationChainID",
                                                "nameLocation": "11866:18:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6532,
                                                "src": "11860:24:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 6458,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11860:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6461,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "11902:10:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6532,
                                                "src": "11894:18:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6460,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11894:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6463,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "11937:4:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6532,
                                                "src": "11922:19:37",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6462,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11922:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11850:97:37"
                                    },
                                    "returnParameters": {
                                        "id": 6467,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "11979:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "11834:726:37",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6761,
                                        "nodeType": "Block",
                                        "src": "13394:2229:37",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    6549
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6549,
                                                        "mutability": "mutable",
                                                        "name": "nonceAndID",
                                                        "nameLocation": "13411:10:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6761,
                                                        "src": "13404:17:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        },
                                                        "typeName": {
                                                            "id": 6548,
                                                            "name": "uint72",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "13404:6:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint72",
                                                                "typeString": "uint72"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6562,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint72",
                                                        "typeString": "uint72"
                                                    },
                                                    "id": 6561,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint72",
                                                                    "typeString": "uint72"
                                                                },
                                                                "id": 6555,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 6552,
                                                                            "name": "depositNonce",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6537,
                                                                            "src": "13432:12:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint64",
                                                                                "typeString": "uint64"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint64",
                                                                                "typeString": "uint64"
                                                                            }
                                                                        ],
                                                                        "id": 6551,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "13425:6:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_uint72_$",
                                                                            "typeString": "type(uint72)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 6550,
                                                                            "name": "uint72",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "13425:6:37",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 6553,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "13425:20:37",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint72",
                                                                        "typeString": "uint72"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<<",
                                                                "rightExpression": {
                                                                    "hexValue": "38",
                                                                    "id": 6554,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "13449:1:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_8_by_1",
                                                                        "typeString": "int_const 8"
                                                                    },
                                                                    "value": "8"
                                                                },
                                                                "src": "13425:25:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint72",
                                                                    "typeString": "uint72"
                                                                }
                                                            }
                                                        ],
                                                        "id": 6556,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "13424:27:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "|",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 6559,
                                                                "name": "chainID",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6535,
                                                                "src": "13461:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            ],
                                                            "id": 6558,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "13454:6:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint72_$",
                                                                "typeString": "type(uint72)"
                                                            },
                                                            "typeName": {
                                                                "id": 6557,
                                                                "name": "uint72",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "13454:6:37",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 6560,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "13454:15:37",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        }
                                                    },
                                                    "src": "13424:45:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint72",
                                                        "typeString": "uint72"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "13404:65:37"
                                            },
                                            {
                                                "assignments": [
                                                    6565
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6565,
                                                        "mutability": "mutable",
                                                        "name": "proposal",
                                                        "nameLocation": "13496:8:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6761,
                                                        "src": "13479:25:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "storage",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                            "typeString": "struct Bridge.Proposal"
                                                        },
                                                        "typeName": {
                                                            "id": 6564,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 6563,
                                                                "name": "Proposal",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 5936,
                                                                "src": "13479:8:37"
                                                            },
                                                            "referencedDeclaration": 5936,
                                                            "src": "13479:8:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                "typeString": "struct Bridge.Proposal"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6571,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 6566,
                                                            "name": "_proposals",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5957,
                                                            "src": "13507:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$_$",
                                                                "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                                                            }
                                                        },
                                                        "id": 6568,
                                                        "indexExpression": {
                                                            "id": 6567,
                                                            "name": "nonceAndID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6549,
                                                            "src": "13518:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint72",
                                                                "typeString": "uint72"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "13507:22:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$",
                                                            "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                                                        }
                                                    },
                                                    "id": 6570,
                                                    "indexExpression": {
                                                        "id": 6569,
                                                        "name": "dataHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6541,
                                                        "src": "13530:8:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "13507:32:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage",
                                                        "typeString": "struct Bridge.Proposal storage ref"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "13479:60:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 6580,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "id": 6573,
                                                                    "name": "_resourceIDToHandlerAddress",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5944,
                                                                    "src": "13558:27:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                        "typeString": "mapping(bytes32 => address)"
                                                                    }
                                                                },
                                                                "id": 6575,
                                                                "indexExpression": {
                                                                    "id": 6574,
                                                                    "name": "resourceID",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6539,
                                                                    "src": "13586:10:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "13558:39:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 6578,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "13609:1:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 6577,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "13601:7:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 6576,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "13601:7:37",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 6579,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "13601:10:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "13558:53:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6e6f2068616e646c657220666f72207265736f757263654944",
                                                            "id": 6581,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13613:27:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20",
                                                                "typeString": "literal_string \"no handler for resourceID\""
                                                            },
                                                            "value": "no handler for resourceID"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20",
                                                                "typeString": "literal_string \"no handler for resourceID\""
                                                            }
                                                        ],
                                                        "id": 6572,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "13550:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6582,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13550:91:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6583,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13550:91:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 6591,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 6587,
                                                                            "name": "proposal",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6565,
                                                                            "src": "13667:8:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                "typeString": "struct Bridge.Proposal storage pointer"
                                                                            }
                                                                        },
                                                                        "id": 6588,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "_status",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5933,
                                                                        "src": "13667:16:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                            "typeString": "enum Bridge.ProposalStatus"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                            "typeString": "enum Bridge.ProposalStatus"
                                                                        }
                                                                    ],
                                                                    "id": 6586,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "13659:7:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_uint256_$",
                                                                        "typeString": "type(uint256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 6585,
                                                                        "name": "uint256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "13659:7:37",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 6589,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "13659:25:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<=",
                                                            "rightExpression": {
                                                                "hexValue": "31",
                                                                "id": 6590,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "13688:1:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            },
                                                            "src": "13659:30:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "70726f706f73616c20616c7265616479207061737365642f65786563757465642f63616e63656c6c6564",
                                                            "id": 6592,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13691:44:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194",
                                                                "typeString": "literal_string \"proposal already passed/executed/cancelled\""
                                                            },
                                                            "value": "proposal already passed/executed/cancelled"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c48a67927cb12b6986df316341a7e026082eb20c4db86a85c59231eb345d8194",
                                                                "typeString": "literal_string \"proposal already passed/executed/cancelled\""
                                                            }
                                                        ],
                                                        "id": 6584,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "13651:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6593,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13651:85:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6594,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13651:85:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 6604,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "!",
                                                            "prefix": true,
                                                            "src": "13754:54:37",
                                                            "subExpression": {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "baseExpression": {
                                                                            "id": 6596,
                                                                            "name": "_hasVotedOnProposal",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5965,
                                                                            "src": "13755:19:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$",
                                                                                "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))"
                                                                            }
                                                                        },
                                                                        "id": 6598,
                                                                        "indexExpression": {
                                                                            "id": 6597,
                                                                            "name": "nonceAndID",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6549,
                                                                            "src": "13775:10:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint72",
                                                                                "typeString": "uint72"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "13755:31:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                                                            "typeString": "mapping(bytes32 => mapping(address => bool))"
                                                                        }
                                                                    },
                                                                    "id": 6600,
                                                                    "indexExpression": {
                                                                        "id": 6599,
                                                                        "name": "dataHash",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6541,
                                                                        "src": "13787:8:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "13755:41:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                                        "typeString": "mapping(address => bool)"
                                                                    }
                                                                },
                                                                "id": 6603,
                                                                "indexExpression": {
                                                                    "expression": {
                                                                        "id": 6601,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "13797:3:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 6602,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "13797:10:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "13755:53:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "72656c6179657220616c726561647920766f746564",
                                                            "id": 6605,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13810:23:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b",
                                                                "typeString": "literal_string \"relayer already voted\""
                                                            },
                                                            "value": "relayer already voted"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b",
                                                                "typeString": "literal_string \"relayer already voted\""
                                                            }
                                                        ],
                                                        "id": 6595,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "13746:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6606,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13746:88:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6607,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13746:88:37"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 6614,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 6610,
                                                                    "name": "proposal",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6565,
                                                                    "src": "13857:8:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                        "typeString": "struct Bridge.Proposal storage pointer"
                                                                    }
                                                                },
                                                                "id": 6611,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "_status",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5933,
                                                                "src": "13857:16:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                }
                                                            ],
                                                            "id": 6609,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "13849:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                                "typeString": "type(uint256)"
                                                            },
                                                            "typeName": {
                                                                "id": 6608,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "13849:7:37",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 6612,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "13849:25:37",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 6613,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "13878:1:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "13849:30:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 6706,
                                                    "nodeType": "Block",
                                                    "src": "14412:582:37",
                                                    "statements": [
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 6669,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "expression": {
                                                                                "id": 6665,
                                                                                "name": "proposal",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 6565,
                                                                                "src": "14447:8:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                    "typeString": "struct Bridge.Proposal storage pointer"
                                                                                }
                                                                            },
                                                                            "id": 6666,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "_proposedBlock",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 5935,
                                                                            "src": "14447:23:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "expression": {
                                                                                "id": 6662,
                                                                                "name": "block",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -4,
                                                                                "src": "14430:5:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_block",
                                                                                    "typeString": "block"
                                                                                }
                                                                            },
                                                                            "id": 6663,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "number",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "14430:12:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "id": 6664,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sub",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2404,
                                                                        "src": "14430:16:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 6667,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "14430:41:37",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": ">",
                                                                "rightExpression": {
                                                                    "id": 6668,
                                                                    "name": "_expiry",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5911,
                                                                    "src": "14474:7:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "14430:51:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "falseBody": {
                                                                "id": 6704,
                                                                "nodeType": "Block",
                                                                "src": "14838:146:37",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    },
                                                                                    "id": 6691,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                        "id": 6688,
                                                                                        "name": "dataHash",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 6541,
                                                                                        "src": "14864:8:37",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes32",
                                                                                            "typeString": "bytes32"
                                                                                        }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "==",
                                                                                    "rightExpression": {
                                                                                        "expression": {
                                                                                            "id": 6689,
                                                                                            "name": "proposal",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 6565,
                                                                                            "src": "14876:8:37",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                                "typeString": "struct Bridge.Proposal storage pointer"
                                                                                            }
                                                                                        },
                                                                                        "id": 6690,
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "_dataHash",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 5924,
                                                                                        "src": "14876:18:37",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes32",
                                                                                            "typeString": "bytes32"
                                                                                        }
                                                                                    },
                                                                                    "src": "14864:30:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bool",
                                                                                        "typeString": "bool"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "hexValue": "6461746168617368206d69736d61746368",
                                                                                    "id": 6692,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "string",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "14896:19:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_stringliteral_e3209b3b3221a11cdef33af435affcc74bff38eb4aaafc629c451edb5bb6cf58",
                                                                                        "typeString": "literal_string \"datahash mismatch\""
                                                                                    },
                                                                                    "value": "datahash mismatch"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_bool",
                                                                                        "typeString": "bool"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_stringliteral_e3209b3b3221a11cdef33af435affcc74bff38eb4aaafc629c451edb5bb6cf58",
                                                                                        "typeString": "literal_string \"datahash mismatch\""
                                                                                    }
                                                                                ],
                                                                                "id": 6687,
                                                                                "name": "require",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [
                                                                                    -18,
                                                                                    -18
                                                                                ],
                                                                                "referencedDeclaration": -18,
                                                                                "src": "14856:7:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                                    "typeString": "function (bool,string memory) pure"
                                                                                }
                                                                            },
                                                                            "id": 6693,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "14856:60:37",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 6694,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "14856:60:37"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 6700,
                                                                                        "name": "msg",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": -15,
                                                                                        "src": "14958:3:37",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_magic_message",
                                                                                            "typeString": "msg"
                                                                                        }
                                                                                    },
                                                                                    "id": 6701,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "sender",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "src": "14958:10:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "expression": {
                                                                                        "id": 6695,
                                                                                        "name": "proposal",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 6565,
                                                                                        "src": "14934:8:37",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                            "typeString": "struct Bridge.Proposal storage pointer"
                                                                                        }
                                                                                    },
                                                                                    "id": 6698,
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "_yesVotes",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 5927,
                                                                                    "src": "14934:18:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                        "typeString": "address[] storage ref"
                                                                                    }
                                                                                },
                                                                                "id": 6699,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "push",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "14934:23:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                                                                    "typeString": "function (address[] storage pointer,address)"
                                                                                }
                                                                            },
                                                                            "id": 6702,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "14934:35:37",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 6703,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "14934:35:37"
                                                                    }
                                                                ]
                                                            },
                                                            "id": 6705,
                                                            "nodeType": "IfStatement",
                                                            "src": "14426:558:37",
                                                            "trueBody": {
                                                                "id": 6686,
                                                                "nodeType": "Block",
                                                                "src": "14483:349:37",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 6675,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "expression": {
                                                                                    "id": 6670,
                                                                                    "name": "proposal",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6565,
                                                                                    "src": "14667:8:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                        "typeString": "struct Bridge.Proposal storage pointer"
                                                                                    }
                                                                                },
                                                                                "id": 6672,
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": true,
                                                                                "memberName": "_status",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 5933,
                                                                                "src": "14667:16:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "expression": {
                                                                                    "id": 6673,
                                                                                    "name": "ProposalStatus",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5920,
                                                                                    "src": "14686:14:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                                        "typeString": "type(enum Bridge.ProposalStatus)"
                                                                                    }
                                                                                },
                                                                                "id": 6674,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "memberName": "Cancelled",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 5919,
                                                                                "src": "14686:24:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                                }
                                                                            },
                                                                            "src": "14667:43:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                "typeString": "enum Bridge.ProposalStatus"
                                                                            }
                                                                        },
                                                                        "id": 6676,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "14667:43:37"
                                                                    },
                                                                    {
                                                                        "eventCall": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 6678,
                                                                                    "name": "chainID",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6535,
                                                                                    "src": "14747:7:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint8",
                                                                                        "typeString": "uint8"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 6679,
                                                                                    "name": "depositNonce",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6537,
                                                                                    "src": "14756:12:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint64",
                                                                                        "typeString": "uint64"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 6680,
                                                                                        "name": "ProposalStatus",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5920,
                                                                                        "src": "14770:14:37",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                                            "typeString": "type(enum Bridge.ProposalStatus)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6681,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "Cancelled",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 5919,
                                                                                    "src": "14770:24:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                        "typeString": "enum Bridge.ProposalStatus"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 6682,
                                                                                    "name": "resourceID",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6539,
                                                                                    "src": "14796:10:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 6683,
                                                                                    "name": "dataHash",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6541,
                                                                                    "src": "14808:8:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint8",
                                                                                        "typeString": "uint8"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint64",
                                                                                        "typeString": "uint64"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                        "typeString": "enum Bridge.ProposalStatus"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                ],
                                                                                "id": 6677,
                                                                                "name": "ProposalEvent",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5998,
                                                                                "src": "14733:13:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$5920_$_t_bytes32_$_t_bytes32_$returns$__$",
                                                                                    "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)"
                                                                                }
                                                                            },
                                                                            "id": 6684,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "14733:84:37",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 6685,
                                                                        "nodeType": "EmitStatement",
                                                                        "src": "14728:89:37"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                },
                                                "id": 6707,
                                                "nodeType": "IfStatement",
                                                "src": "13845:1149:37",
                                                "trueBody": {
                                                    "id": 6661,
                                                    "nodeType": "Block",
                                                    "src": "13881:525:37",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 6616,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "++",
                                                                "prefix": true,
                                                                "src": "13895:17:37",
                                                                "subExpression": {
                                                                    "id": 6615,
                                                                    "name": "_totalProposals",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5907,
                                                                    "src": "13897:15:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 6617,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "13895:17:37"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6641,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "baseExpression": {
                                                                            "id": 6618,
                                                                            "name": "_proposals",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5957,
                                                                            "src": "13926:10:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$_$",
                                                                                "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                                                                            }
                                                                        },
                                                                        "id": 6621,
                                                                        "indexExpression": {
                                                                            "id": 6619,
                                                                            "name": "nonceAndID",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6549,
                                                                            "src": "13937:10:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint72",
                                                                                "typeString": "uint72"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "13926:22:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$",
                                                                            "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 6622,
                                                                    "indexExpression": {
                                                                        "id": 6620,
                                                                        "name": "dataHash",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6541,
                                                                        "src": "13949:8:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "13926:32:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage",
                                                                        "typeString": "struct Bridge.Proposal storage ref"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 6624,
                                                                            "name": "resourceID",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6539,
                                                                            "src": "14001:10:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes32",
                                                                                "typeString": "bytes32"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 6625,
                                                                            "name": "dataHash",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6541,
                                                                            "src": "14040:8:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes32",
                                                                                "typeString": "bytes32"
                                                                            }
                                                                        },
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "hexValue": "31",
                                                                                    "id": 6629,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "14091:1:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                                        "typeString": "int_const 1"
                                                                                    },
                                                                                    "value": "1"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                                        "typeString": "int_const 1"
                                                                                    }
                                                                                ],
                                                                                "id": 6628,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "NewExpression",
                                                                                "src": "14077:13:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                                                                    "typeString": "function (uint256) pure returns (address[] memory)"
                                                                                },
                                                                                "typeName": {
                                                                                    "baseType": {
                                                                                        "id": 6626,
                                                                                        "name": "address",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "14081:7:37",
                                                                                        "stateMutability": "nonpayable",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "id": 6627,
                                                                                    "nodeType": "ArrayTypeName",
                                                                                    "src": "14081:9:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                                                        "typeString": "address[]"
                                                                                    }
                                                                                }
                                                                            },
                                                                            "id": 6630,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "14077:16:37",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                                "typeString": "address[] memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "hexValue": "30",
                                                                                    "id": 6634,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "14135:1:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    },
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    }
                                                                                ],
                                                                                "id": 6633,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "NewExpression",
                                                                                "src": "14121:13:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                                                                    "typeString": "function (uint256) pure returns (address[] memory)"
                                                                                },
                                                                                "typeName": {
                                                                                    "baseType": {
                                                                                        "id": 6631,
                                                                                        "name": "address",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "14125:7:37",
                                                                                        "stateMutability": "nonpayable",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "id": 6632,
                                                                                    "nodeType": "ArrayTypeName",
                                                                                    "src": "14125:9:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                                                        "typeString": "address[]"
                                                                                    }
                                                                                }
                                                                            },
                                                                            "id": 6635,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "14121:16:37",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                                "typeString": "address[] memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 6636,
                                                                                "name": "ProposalStatus",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5920,
                                                                                "src": "14164:14:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                                    "typeString": "type(enum Bridge.ProposalStatus)"
                                                                                }
                                                                            },
                                                                            "id": 6637,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "memberName": "Active",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 5916,
                                                                            "src": "14164:21:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                "typeString": "enum Bridge.ProposalStatus"
                                                                            }
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 6638,
                                                                                "name": "block",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -4,
                                                                                "src": "14219:5:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_block",
                                                                                    "typeString": "block"
                                                                                }
                                                                            },
                                                                            "id": 6639,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "number",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "14219:12:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_bytes32",
                                                                                "typeString": "bytes32"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_bytes32",
                                                                                "typeString": "bytes32"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                                "typeString": "address[] memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                                "typeString": "address[] memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                "typeString": "enum Bridge.ProposalStatus"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 6623,
                                                                        "name": "Proposal",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5936,
                                                                        "src": "13961:8:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_struct$_Proposal_$5936_storage_ptr_$",
                                                                            "typeString": "type(struct Bridge.Proposal storage pointer)"
                                                                        }
                                                                    },
                                                                    "id": 6640,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "structConstructorCall",
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        "_resourceID",
                                                                        "_dataHash",
                                                                        "_yesVotes",
                                                                        "_noVotes",
                                                                        "_status",
                                                                        "_proposedBlock"
                                                                    ],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "13961:285:37",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_memory_ptr",
                                                                        "typeString": "struct Bridge.Proposal memory"
                                                                    }
                                                                },
                                                                "src": "13926:320:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage",
                                                                    "typeString": "struct Bridge.Proposal storage ref"
                                                                }
                                                            },
                                                            "id": 6642,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "13926:320:37"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6650,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "expression": {
                                                                            "id": 6643,
                                                                            "name": "proposal",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6565,
                                                                            "src": "14261:8:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                "typeString": "struct Bridge.Proposal storage pointer"
                                                                            }
                                                                        },
                                                                        "id": 6646,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "_yesVotes",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5927,
                                                                        "src": "14261:18:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                            "typeString": "address[] storage ref"
                                                                        }
                                                                    },
                                                                    "id": 6647,
                                                                    "indexExpression": {
                                                                        "hexValue": "30",
                                                                        "id": 6645,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "14280:1:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "14261:21:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "expression": {
                                                                        "id": 6648,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "14285:3:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 6649,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "14285:10:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "14261:34:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "id": 6651,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "14261:34:37"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 6653,
                                                                        "name": "chainID",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6535,
                                                                        "src": "14328:7:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 6654,
                                                                        "name": "depositNonce",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6537,
                                                                        "src": "14337:12:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 6655,
                                                                            "name": "ProposalStatus",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5920,
                                                                            "src": "14351:14:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                                "typeString": "type(enum Bridge.ProposalStatus)"
                                                                            }
                                                                        },
                                                                        "id": 6656,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "memberName": "Active",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5916,
                                                                        "src": "14351:21:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                            "typeString": "enum Bridge.ProposalStatus"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 6657,
                                                                        "name": "resourceID",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6539,
                                                                        "src": "14374:10:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 6658,
                                                                        "name": "dataHash",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6541,
                                                                        "src": "14386:8:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                            "typeString": "enum Bridge.ProposalStatus"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    ],
                                                                    "id": 6652,
                                                                    "name": "ProposalEvent",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5998,
                                                                    "src": "14314:13:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$5920_$_t_bytes32_$_t_bytes32_$returns$__$",
                                                                        "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)"
                                                                    }
                                                                },
                                                                "id": 6659,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "14314:81:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 6660,
                                                            "nodeType": "EmitStatement",
                                                            "src": "14309:86:37"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                        "typeString": "enum Bridge.ProposalStatus"
                                                    },
                                                    "id": 6712,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 6708,
                                                            "name": "proposal",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6565,
                                                            "src": "15007:8:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                "typeString": "struct Bridge.Proposal storage pointer"
                                                            }
                                                        },
                                                        "id": 6709,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "_status",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5933,
                                                        "src": "15007:16:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                            "typeString": "enum Bridge.ProposalStatus"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 6710,
                                                            "name": "ProposalStatus",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5920,
                                                            "src": "15027:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                "typeString": "type(enum Bridge.ProposalStatus)"
                                                            }
                                                        },
                                                        "id": 6711,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "Cancelled",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5919,
                                                        "src": "15027:24:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                            "typeString": "enum Bridge.ProposalStatus"
                                                        }
                                                    },
                                                    "src": "15007:44:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 6760,
                                                "nodeType": "IfStatement",
                                                "src": "15003:614:37",
                                                "trueBody": {
                                                    "id": 6759,
                                                    "nodeType": "Block",
                                                    "src": "15053:564:37",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 6722,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "baseExpression": {
                                                                            "baseExpression": {
                                                                                "id": 6713,
                                                                                "name": "_hasVotedOnProposal",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5965,
                                                                                "src": "15067:19:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$_$",
                                                                                    "typeString": "mapping(uint72 => mapping(bytes32 => mapping(address => bool)))"
                                                                                }
                                                                            },
                                                                            "id": 6718,
                                                                            "indexExpression": {
                                                                                "id": 6714,
                                                                                "name": "nonceAndID",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 6549,
                                                                                "src": "15087:10:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint72",
                                                                                    "typeString": "uint72"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "15067:31:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$",
                                                                                "typeString": "mapping(bytes32 => mapping(address => bool))"
                                                                            }
                                                                        },
                                                                        "id": 6719,
                                                                        "indexExpression": {
                                                                            "id": 6715,
                                                                            "name": "dataHash",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6541,
                                                                            "src": "15099:8:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes32",
                                                                                "typeString": "bytes32"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "15067:41:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                                            "typeString": "mapping(address => bool)"
                                                                        }
                                                                    },
                                                                    "id": 6720,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 6716,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -15,
                                                                            "src": "15109:3:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 6717,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "15109:10:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "15067:53:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "hexValue": "74727565",
                                                                    "id": 6721,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "15123:4:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                "src": "15067:60:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 6723,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "15067:60:37"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 6725,
                                                                        "name": "chainID",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6535,
                                                                        "src": "15159:7:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 6726,
                                                                        "name": "depositNonce",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6537,
                                                                        "src": "15168:12:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 6727,
                                                                            "name": "proposal",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6565,
                                                                            "src": "15182:8:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                "typeString": "struct Bridge.Proposal storage pointer"
                                                                            }
                                                                        },
                                                                        "id": 6728,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "_status",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5933,
                                                                        "src": "15182:16:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                            "typeString": "enum Bridge.ProposalStatus"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 6729,
                                                                        "name": "resourceID",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 6539,
                                                                        "src": "15200:10:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                            "typeString": "enum Bridge.ProposalStatus"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    ],
                                                                    "id": 6724,
                                                                    "name": "ProposalVote",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6009,
                                                                    "src": "15146:12:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$5920_$_t_bytes32_$returns$__$",
                                                                        "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)"
                                                                    }
                                                                },
                                                                "id": 6730,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "15146:65:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 6731,
                                                            "nodeType": "EmitStatement",
                                                            "src": "15141:70:37"
                                                        },
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "id": 6740,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 6734,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 6732,
                                                                        "name": "_relayerThreshold",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5903,
                                                                        "src": "15355:17:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<=",
                                                                    "rightExpression": {
                                                                        "hexValue": "31",
                                                                        "id": 6733,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "15376:1:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_1_by_1",
                                                                            "typeString": "int_const 1"
                                                                        },
                                                                        "value": "1"
                                                                    },
                                                                    "src": "15355:22:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "||",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 6739,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "expression": {
                                                                            "expression": {
                                                                                "id": 6735,
                                                                                "name": "proposal",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 6565,
                                                                                "src": "15381:8:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                    "typeString": "struct Bridge.Proposal storage pointer"
                                                                                }
                                                                            },
                                                                            "id": 6736,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "_yesVotes",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 5927,
                                                                            "src": "15381:18:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                                "typeString": "address[] storage ref"
                                                                            }
                                                                        },
                                                                        "id": 6737,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "length",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "15381:25:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">=",
                                                                    "rightExpression": {
                                                                        "id": 6738,
                                                                        "name": "_relayerThreshold",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5903,
                                                                        "src": "15410:17:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "15381:46:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "src": "15355:72:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 6758,
                                                            "nodeType": "IfStatement",
                                                            "src": "15351:256:37",
                                                            "trueBody": {
                                                                "id": 6757,
                                                                "nodeType": "Block",
                                                                "src": "15429:178:37",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 6746,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "expression": {
                                                                                    "id": 6741,
                                                                                    "name": "proposal",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6565,
                                                                                    "src": "15447:8:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                        "typeString": "struct Bridge.Proposal storage pointer"
                                                                                    }
                                                                                },
                                                                                "id": 6743,
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": true,
                                                                                "memberName": "_status",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 5933,
                                                                                "src": "15447:16:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "expression": {
                                                                                    "id": 6744,
                                                                                    "name": "ProposalStatus",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5920,
                                                                                    "src": "15466:14:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                                        "typeString": "type(enum Bridge.ProposalStatus)"
                                                                                    }
                                                                                },
                                                                                "id": 6745,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "memberName": "Passed",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 5917,
                                                                                "src": "15466:21:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                                }
                                                                            },
                                                                            "src": "15447:40:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                "typeString": "enum Bridge.ProposalStatus"
                                                                            }
                                                                        },
                                                                        "id": 6747,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "15447:40:37"
                                                                    },
                                                                    {
                                                                        "eventCall": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 6749,
                                                                                    "name": "chainID",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6535,
                                                                                    "src": "15525:7:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint8",
                                                                                        "typeString": "uint8"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 6750,
                                                                                    "name": "depositNonce",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6537,
                                                                                    "src": "15534:12:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint64",
                                                                                        "typeString": "uint64"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 6751,
                                                                                        "name": "ProposalStatus",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5920,
                                                                                        "src": "15548:14:37",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                                            "typeString": "type(enum Bridge.ProposalStatus)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6752,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "Passed",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 5917,
                                                                                    "src": "15548:21:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                        "typeString": "enum Bridge.ProposalStatus"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 6753,
                                                                                    "name": "resourceID",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6539,
                                                                                    "src": "15571:10:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 6754,
                                                                                    "name": "dataHash",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 6541,
                                                                                    "src": "15583:8:37",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint8",
                                                                                        "typeString": "uint8"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint64",
                                                                                        "typeString": "uint64"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                                        "typeString": "enum Bridge.ProposalStatus"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_bytes32",
                                                                                        "typeString": "bytes32"
                                                                                    }
                                                                                ],
                                                                                "id": 6748,
                                                                                "name": "ProposalEvent",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5998,
                                                                                "src": "15511:13:37",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$5920_$_t_bytes32_$_t_bytes32_$returns$__$",
                                                                                    "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)"
                                                                                }
                                                                            },
                                                                            "id": 6755,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "15511:81:37",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 6756,
                                                                        "nodeType": "EmitStatement",
                                                                        "src": "15506:86:37"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6533,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "12566:653:37",
                                        "text": "@notice When called, {msg.sender} will be marked as voting in favor of proposal.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param dataHash Hash of data provided when deposit was made.\n@notice Proposal must not have already been passed or executed.\n@notice {msg.sender} must not have already voted on proposal.\n@notice Emits {ProposalEvent} event with status indicating the proposal status.\n@notice Emits {ProposalVote} event."
                                    },
                                    "functionSelector": "1ff013f1",
                                    "id": 6762,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6544,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6543,
                                                "name": "onlyRelayers",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6035,
                                                "src": "13367:12:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "13367:12:37"
                                        },
                                        {
                                            "id": 6546,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6545,
                                                "name": "whenNotPaused",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 777,
                                                "src": "13380:13:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "13380:13:37"
                                        }
                                    ],
                                    "name": "voteProposal",
                                    "nameLocation": "13233:12:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6542,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6535,
                                                "mutability": "mutable",
                                                "name": "chainID",
                                                "nameLocation": "13261:7:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6762,
                                                "src": "13255:13:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 6534,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13255:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6537,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "13285:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6762,
                                                "src": "13278:19:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6536,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13278:6:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6539,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "13315:10:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6762,
                                                "src": "13307:18:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6538,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13307:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6541,
                                                "mutability": "mutable",
                                                "name": "dataHash",
                                                "nameLocation": "13343:8:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6762,
                                                "src": "13335:16:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6540,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13335:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13245:112:37"
                                    },
                                    "returnParameters": {
                                        "id": 6547,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "13394:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "13224:2399:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6837,
                                        "nodeType": "Block",
                                        "src": "16300:525:37",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    6775
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6775,
                                                        "mutability": "mutable",
                                                        "name": "nonceAndID",
                                                        "nameLocation": "16317:10:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6837,
                                                        "src": "16310:17:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        },
                                                        "typeName": {
                                                            "id": 6774,
                                                            "name": "uint72",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "16310:6:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint72",
                                                                "typeString": "uint72"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6788,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint72",
                                                        "typeString": "uint72"
                                                    },
                                                    "id": 6787,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint72",
                                                                    "typeString": "uint72"
                                                                },
                                                                "id": 6781,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 6778,
                                                                            "name": "depositNonce",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6767,
                                                                            "src": "16338:12:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint64",
                                                                                "typeString": "uint64"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint64",
                                                                                "typeString": "uint64"
                                                                            }
                                                                        ],
                                                                        "id": 6777,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "16331:6:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_uint72_$",
                                                                            "typeString": "type(uint72)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 6776,
                                                                            "name": "uint72",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "16331:6:37",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 6779,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "16331:20:37",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint72",
                                                                        "typeString": "uint72"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<<",
                                                                "rightExpression": {
                                                                    "hexValue": "38",
                                                                    "id": 6780,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "16355:1:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_8_by_1",
                                                                        "typeString": "int_const 8"
                                                                    },
                                                                    "value": "8"
                                                                },
                                                                "src": "16331:25:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint72",
                                                                    "typeString": "uint72"
                                                                }
                                                            }
                                                        ],
                                                        "id": 6782,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "16330:27:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "|",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 6785,
                                                                "name": "chainID",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6765,
                                                                "src": "16367:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            ],
                                                            "id": 6784,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "16360:6:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint72_$",
                                                                "typeString": "type(uint72)"
                                                            },
                                                            "typeName": {
                                                                "id": 6783,
                                                                "name": "uint72",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "16360:6:37",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 6786,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "16360:15:37",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        }
                                                    },
                                                    "src": "16330:45:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint72",
                                                        "typeString": "uint72"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "16310:65:37"
                                            },
                                            {
                                                "assignments": [
                                                    6791
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6791,
                                                        "mutability": "mutable",
                                                        "name": "proposal",
                                                        "nameLocation": "16402:8:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6837,
                                                        "src": "16385:25:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "storage",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                            "typeString": "struct Bridge.Proposal"
                                                        },
                                                        "typeName": {
                                                            "id": 6790,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 6789,
                                                                "name": "Proposal",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 5936,
                                                                "src": "16385:8:37"
                                                            },
                                                            "referencedDeclaration": 5936,
                                                            "src": "16385:8:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                "typeString": "struct Bridge.Proposal"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6797,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 6792,
                                                            "name": "_proposals",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5957,
                                                            "src": "16413:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$_$",
                                                                "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                                                            }
                                                        },
                                                        "id": 6794,
                                                        "indexExpression": {
                                                            "id": 6793,
                                                            "name": "nonceAndID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6775,
                                                            "src": "16424:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint72",
                                                                "typeString": "uint72"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "16413:22:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$",
                                                            "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                                                        }
                                                    },
                                                    "id": 6796,
                                                    "indexExpression": {
                                                        "id": 6795,
                                                        "name": "dataHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6769,
                                                        "src": "16436:8:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "16413:32:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage",
                                                        "typeString": "struct Bridge.Proposal storage ref"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "16385:60:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                "typeString": "enum Bridge.ProposalStatus"
                                                            },
                                                            "id": 6803,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 6799,
                                                                    "name": "proposal",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6791,
                                                                    "src": "16464:8:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                        "typeString": "struct Bridge.Proposal storage pointer"
                                                                    }
                                                                },
                                                                "id": 6800,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "_status",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5933,
                                                                "src": "16464:16:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 6801,
                                                                    "name": "ProposalStatus",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5920,
                                                                    "src": "16484:14:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                        "typeString": "type(enum Bridge.ProposalStatus)"
                                                                    }
                                                                },
                                                                "id": 6802,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "Cancelled",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5919,
                                                                "src": "16484:24:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                }
                                                            },
                                                            "src": "16464:44:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "50726f706f73616c20616c72656164792063616e63656c6c6564",
                                                            "id": 6804,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16510:28:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f",
                                                                "typeString": "literal_string \"Proposal already cancelled\""
                                                            },
                                                            "value": "Proposal already cancelled"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_3e17bfcd355060e4798c0d940327e9e82091039c8817e9bd1bb8653b1bc06f8f",
                                                                "typeString": "literal_string \"Proposal already cancelled\""
                                                            }
                                                        ],
                                                        "id": 6798,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "16456:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6805,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16456:83:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6806,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16456:83:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 6815,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 6811,
                                                                            "name": "proposal",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6791,
                                                                            "src": "16574:8:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                                "typeString": "struct Bridge.Proposal storage pointer"
                                                                            }
                                                                        },
                                                                        "id": 6812,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "_proposedBlock",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5935,
                                                                        "src": "16574:23:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 6808,
                                                                            "name": "block",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -4,
                                                                            "src": "16557:5:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_block",
                                                                                "typeString": "block"
                                                                            }
                                                                        },
                                                                        "id": 6809,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "number",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "16557:12:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "id": 6810,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sub",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2404,
                                                                    "src": "16557:16:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 6813,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "16557:41:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "id": 6814,
                                                                "name": "_expiry",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5911,
                                                                "src": "16601:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "16557:51:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "50726f706f73616c206e6f7420617420657870697279207468726573686f6c64",
                                                            "id": 6816,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16610:34:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225",
                                                                "typeString": "literal_string \"Proposal not at expiry threshold\""
                                                            },
                                                            "value": "Proposal not at expiry threshold"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225",
                                                                "typeString": "literal_string \"Proposal not at expiry threshold\""
                                                            }
                                                        ],
                                                        "id": 6807,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "16549:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6817,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16549:96:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6818,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16549:96:37"
                                            },
                                            {
                                                "expression": {
                                                    "id": 6824,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "id": 6819,
                                                            "name": "proposal",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6791,
                                                            "src": "16656:8:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                "typeString": "struct Bridge.Proposal storage pointer"
                                                            }
                                                        },
                                                        "id": 6821,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "_status",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5933,
                                                        "src": "16656:16:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                            "typeString": "enum Bridge.ProposalStatus"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 6822,
                                                            "name": "ProposalStatus",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5920,
                                                            "src": "16675:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                "typeString": "type(enum Bridge.ProposalStatus)"
                                                            }
                                                        },
                                                        "id": 6823,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "Cancelled",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5919,
                                                        "src": "16675:24:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                            "typeString": "enum Bridge.ProposalStatus"
                                                        }
                                                    },
                                                    "src": "16656:43:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                        "typeString": "enum Bridge.ProposalStatus"
                                                    }
                                                },
                                                "id": 6825,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16656:43:37"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 6827,
                                                            "name": "chainID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6765,
                                                            "src": "16728:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        {
                                                            "id": 6828,
                                                            "name": "depositNonce",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6767,
                                                            "src": "16737:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6829,
                                                                "name": "ProposalStatus",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5920,
                                                                "src": "16751:14:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                    "typeString": "type(enum Bridge.ProposalStatus)"
                                                                }
                                                            },
                                                            "id": 6830,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberName": "Cancelled",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5919,
                                                            "src": "16751:24:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                "typeString": "enum Bridge.ProposalStatus"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6831,
                                                                "name": "proposal",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6791,
                                                                "src": "16777:8:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                    "typeString": "struct Bridge.Proposal storage pointer"
                                                                }
                                                            },
                                                            "id": 6832,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "_resourceID",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5922,
                                                            "src": "16777:20:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6833,
                                                                "name": "proposal",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6791,
                                                                "src": "16799:8:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                    "typeString": "struct Bridge.Proposal storage pointer"
                                                                }
                                                            },
                                                            "id": 6834,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "_dataHash",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5924,
                                                            "src": "16799:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                "typeString": "enum Bridge.ProposalStatus"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 6826,
                                                        "name": "ProposalEvent",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5998,
                                                        "src": "16714:13:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$5920_$_t_bytes32_$_t_bytes32_$returns$__$",
                                                            "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)"
                                                        }
                                                    },
                                                    "id": 6835,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16714:104:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6836,
                                                "nodeType": "EmitStatement",
                                                "src": "16709:109:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6763,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "15629:532:37",
                                        "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param dataHash Hash of data originally provided when deposit was made.\n@notice Proposal must be past expiry threshold.\n@notice Emits {ProposalEvent} event with status {Cancelled}."
                                    },
                                    "functionSelector": "17f03ce5",
                                    "id": 6838,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6772,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6771,
                                                "name": "onlyAdminOrRelayer",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6028,
                                                "src": "16281:18:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "16281:18:37"
                                        }
                                    ],
                                    "name": "cancelProposal",
                                    "nameLocation": "16175:14:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6770,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6765,
                                                "mutability": "mutable",
                                                "name": "chainID",
                                                "nameLocation": "16205:7:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6838,
                                                "src": "16199:13:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 6764,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16199:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6767,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "16229:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6838,
                                                "src": "16222:19:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6766,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16222:6:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6769,
                                                "mutability": "mutable",
                                                "name": "dataHash",
                                                "nameLocation": "16259:8:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6838,
                                                "src": "16251:16:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6768,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16251:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16189:84:37"
                                    },
                                    "returnParameters": {
                                        "id": 6773,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "16300:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "16166:659:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 6956,
                                        "nodeType": "Block",
                                        "src": "17660:894:37",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    6855
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6855,
                                                        "mutability": "mutable",
                                                        "name": "handler",
                                                        "nameLocation": "17678:7:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6956,
                                                        "src": "17670:15:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 6854,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "17670:7:37",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6859,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 6856,
                                                        "name": "_resourceIDToHandlerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5944,
                                                        "src": "17688:27:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                            "typeString": "mapping(bytes32 => address)"
                                                        }
                                                    },
                                                    "id": 6858,
                                                    "indexExpression": {
                                                        "id": 6857,
                                                        "name": "resourceID",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6847,
                                                        "src": "17716:10:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "17688:39:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "17670:57:37"
                                            },
                                            {
                                                "assignments": [
                                                    6861
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6861,
                                                        "mutability": "mutable",
                                                        "name": "nonceAndID",
                                                        "nameLocation": "17744:10:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6956,
                                                        "src": "17737:17:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        },
                                                        "typeName": {
                                                            "id": 6860,
                                                            "name": "uint72",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "17737:6:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint72",
                                                                "typeString": "uint72"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6874,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint72",
                                                        "typeString": "uint72"
                                                    },
                                                    "id": 6873,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint72",
                                                                    "typeString": "uint72"
                                                                },
                                                                "id": 6867,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 6864,
                                                                            "name": "depositNonce",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6843,
                                                                            "src": "17765:12:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint64",
                                                                                "typeString": "uint64"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint64",
                                                                                "typeString": "uint64"
                                                                            }
                                                                        ],
                                                                        "id": 6863,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "17758:6:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_uint72_$",
                                                                            "typeString": "type(uint72)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 6862,
                                                                            "name": "uint72",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "17758:6:37",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 6865,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "17758:20:37",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint72",
                                                                        "typeString": "uint72"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<<",
                                                                "rightExpression": {
                                                                    "hexValue": "38",
                                                                    "id": 6866,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "17782:1:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_8_by_1",
                                                                        "typeString": "int_const 8"
                                                                    },
                                                                    "value": "8"
                                                                },
                                                                "src": "17758:25:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint72",
                                                                    "typeString": "uint72"
                                                                }
                                                            }
                                                        ],
                                                        "id": 6868,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "17757:27:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "|",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 6871,
                                                                "name": "chainID",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6841,
                                                                "src": "17794:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            ],
                                                            "id": 6870,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "17787:6:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint72_$",
                                                                "typeString": "type(uint72)"
                                                            },
                                                            "typeName": {
                                                                "id": 6869,
                                                                "name": "uint72",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "17787:6:37",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 6872,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "17787:15:37",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint72",
                                                            "typeString": "uint72"
                                                        }
                                                    },
                                                    "src": "17757:45:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint72",
                                                        "typeString": "uint72"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "17737:65:37"
                                            },
                                            {
                                                "assignments": [
                                                    6876
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6876,
                                                        "mutability": "mutable",
                                                        "name": "dataHash",
                                                        "nameLocation": "17820:8:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6956,
                                                        "src": "17812:16:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 6875,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "17812:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6884,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 6880,
                                                                    "name": "handler",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6855,
                                                                    "src": "17858:7:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 6881,
                                                                    "name": "data",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6845,
                                                                    "src": "17867:4:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                                        "typeString": "bytes calldata"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 6878,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "17841:3:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 6879,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodePacked",
                                                                "nodeType": "MemberAccess",
                                                                "src": "17841:16:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function () pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 6882,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "17841:31:37",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 6877,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -8,
                                                        "src": "17831:9:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 6883,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17831:42:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "17812:61:37"
                                            },
                                            {
                                                "assignments": [
                                                    6887
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6887,
                                                        "mutability": "mutable",
                                                        "name": "proposal",
                                                        "nameLocation": "17900:8:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6956,
                                                        "src": "17883:25:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "storage",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                            "typeString": "struct Bridge.Proposal"
                                                        },
                                                        "typeName": {
                                                            "id": 6886,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 6885,
                                                                "name": "Proposal",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 5936,
                                                                "src": "17883:8:37"
                                                            },
                                                            "referencedDeclaration": 5936,
                                                            "src": "17883:8:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                "typeString": "struct Bridge.Proposal"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6893,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 6888,
                                                            "name": "_proposals",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5957,
                                                            "src": "17911:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$_$",
                                                                "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                                                            }
                                                        },
                                                        "id": 6890,
                                                        "indexExpression": {
                                                            "id": 6889,
                                                            "name": "nonceAndID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6861,
                                                            "src": "17922:10:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint72",
                                                                "typeString": "uint72"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "17911:22:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$5936_storage_$",
                                                            "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                                                        }
                                                    },
                                                    "id": 6892,
                                                    "indexExpression": {
                                                        "id": 6891,
                                                        "name": "dataHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6876,
                                                        "src": "17934:8:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "17911:32:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage",
                                                        "typeString": "struct Bridge.Proposal storage ref"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "17883:60:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                "typeString": "enum Bridge.ProposalStatus"
                                                            },
                                                            "id": 6899,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 6895,
                                                                    "name": "proposal",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6887,
                                                                    "src": "17962:8:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                        "typeString": "struct Bridge.Proposal storage pointer"
                                                                    }
                                                                },
                                                                "id": 6896,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "_status",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5933,
                                                                "src": "17962:16:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 6897,
                                                                    "name": "ProposalStatus",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5920,
                                                                    "src": "17982:14:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                        "typeString": "type(enum Bridge.ProposalStatus)"
                                                                    }
                                                                },
                                                                "id": 6898,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "Inactive",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5915,
                                                                "src": "17982:23:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                }
                                                            },
                                                            "src": "17962:43:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "70726f706f73616c206973206e6f7420616374697665",
                                                            "id": 6900,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "18007:24:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_013e8b17787a426ffc75241aa23815a5265a074b42d8838ecebf3970339f42f4",
                                                                "typeString": "literal_string \"proposal is not active\""
                                                            },
                                                            "value": "proposal is not active"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_013e8b17787a426ffc75241aa23815a5265a074b42d8838ecebf3970339f42f4",
                                                                "typeString": "literal_string \"proposal is not active\""
                                                            }
                                                        ],
                                                        "id": 6894,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "17954:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6901,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17954:78:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6902,
                                                "nodeType": "ExpressionStatement",
                                                "src": "17954:78:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                "typeString": "enum Bridge.ProposalStatus"
                                                            },
                                                            "id": 6908,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 6904,
                                                                    "name": "proposal",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6887,
                                                                    "src": "18050:8:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                        "typeString": "struct Bridge.Proposal storage pointer"
                                                                    }
                                                                },
                                                                "id": 6905,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "_status",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5933,
                                                                "src": "18050:16:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 6906,
                                                                    "name": "ProposalStatus",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5920,
                                                                    "src": "18070:14:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                        "typeString": "type(enum Bridge.ProposalStatus)"
                                                                    }
                                                                },
                                                                "id": 6907,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "Passed",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5917,
                                                                "src": "18070:21:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                    "typeString": "enum Bridge.ProposalStatus"
                                                                }
                                                            },
                                                            "src": "18050:41:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "70726f706f73616c20616c7265616479207472616e73666572726564",
                                                            "id": 6909,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "18093:30:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_00b04c534306f551d2ead1f9f63f0158b74c6c6e51741a5b803ded09eea1e088",
                                                                "typeString": "literal_string \"proposal already transferred\""
                                                            },
                                                            "value": "proposal already transferred"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_00b04c534306f551d2ead1f9f63f0158b74c6c6e51741a5b803ded09eea1e088",
                                                                "typeString": "literal_string \"proposal already transferred\""
                                                            }
                                                        ],
                                                        "id": 6903,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "18042:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6910,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "18042:82:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6911,
                                                "nodeType": "ExpressionStatement",
                                                "src": "18042:82:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            "id": 6916,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 6913,
                                                                "name": "dataHash",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6876,
                                                                "src": "18142:8:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 6914,
                                                                    "name": "proposal",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6887,
                                                                    "src": "18154:8:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                        "typeString": "struct Bridge.Proposal storage pointer"
                                                                    }
                                                                },
                                                                "id": 6915,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "_dataHash",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5924,
                                                                "src": "18154:18:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "src": "18142:30:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6461746120646f65736e2774206d61746368206461746168617368",
                                                            "id": 6917,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "18174:29:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_37d86f109f909109dc6877be2d485881af52bdb007799914a63fc66c911a84aa",
                                                                "typeString": "literal_string \"data doesn't match datahash\""
                                                            },
                                                            "value": "data doesn't match datahash"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_37d86f109f909109dc6877be2d485881af52bdb007799914a63fc66c911a84aa",
                                                                "typeString": "literal_string \"data doesn't match datahash\""
                                                            }
                                                        ],
                                                        "id": 6912,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "18134:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 6918,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "18134:70:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6919,
                                                "nodeType": "ExpressionStatement",
                                                "src": "18134:70:37"
                                            },
                                            {
                                                "expression": {
                                                    "id": 6925,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "id": 6920,
                                                            "name": "proposal",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6887,
                                                            "src": "18215:8:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                "typeString": "struct Bridge.Proposal storage pointer"
                                                            }
                                                        },
                                                        "id": 6922,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "_status",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5933,
                                                        "src": "18215:16:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                            "typeString": "enum Bridge.ProposalStatus"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 6923,
                                                            "name": "ProposalStatus",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5920,
                                                            "src": "18234:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$5920_$",
                                                                "typeString": "type(enum Bridge.ProposalStatus)"
                                                            }
                                                        },
                                                        "id": 6924,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "Executed",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5918,
                                                        "src": "18234:23:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                            "typeString": "enum Bridge.ProposalStatus"
                                                        }
                                                    },
                                                    "src": "18215:42:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                        "typeString": "enum Bridge.ProposalStatus"
                                                    }
                                                },
                                                "id": 6926,
                                                "nodeType": "ExpressionStatement",
                                                "src": "18215:42:37"
                                            },
                                            {
                                                "assignments": [
                                                    6929
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 6929,
                                                        "mutability": "mutable",
                                                        "name": "depositHandler",
                                                        "nameLocation": "18284:14:37",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6956,
                                                        "src": "18268:30:37",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IDepositExecute_$7409",
                                                            "typeString": "contract IDepositExecute"
                                                        },
                                                        "typeName": {
                                                            "id": 6928,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 6927,
                                                                "name": "IDepositExecute",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 7409,
                                                                "src": "18268:15:37"
                                                            },
                                                            "referencedDeclaration": 7409,
                                                            "src": "18268:15:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IDepositExecute_$7409",
                                                                "typeString": "contract IDepositExecute"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 6936,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 6931,
                                                                "name": "_resourceIDToHandlerAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5944,
                                                                "src": "18317:27:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                    "typeString": "mapping(bytes32 => address)"
                                                                }
                                                            },
                                                            "id": 6934,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 6932,
                                                                    "name": "proposal",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 6887,
                                                                    "src": "18345:8:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                        "typeString": "struct Bridge.Proposal storage pointer"
                                                                    }
                                                                },
                                                                "id": 6933,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "_resourceID",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5922,
                                                                "src": "18345:20:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "18317:49:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 6930,
                                                        "name": "IDepositExecute",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7409,
                                                        "src": "18301:15:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IDepositExecute_$7409_$",
                                                            "typeString": "type(contract IDepositExecute)"
                                                        }
                                                    },
                                                    "id": 6935,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "18301:66:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IDepositExecute_$7409",
                                                        "typeString": "contract IDepositExecute"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "18268:99:37"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 6940,
                                                                "name": "proposal",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6887,
                                                                "src": "18408:8:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                    "typeString": "struct Bridge.Proposal storage pointer"
                                                                }
                                                            },
                                                            "id": 6941,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "_resourceID",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5922,
                                                            "src": "18408:20:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 6942,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6845,
                                                            "src": "18430:4:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                                "typeString": "bytes calldata"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                                "typeString": "bytes calldata"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 6937,
                                                            "name": "depositHandler",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6929,
                                                            "src": "18377:14:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IDepositExecute_$7409",
                                                                "typeString": "contract IDepositExecute"
                                                            }
                                                        },
                                                        "id": 6939,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "executeProposal",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 7408,
                                                        "src": "18377:30:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes32,bytes memory) external"
                                                        }
                                                    },
                                                    "id": 6943,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "18377:58:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6944,
                                                "nodeType": "ExpressionStatement",
                                                "src": "18377:58:37"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 6946,
                                                            "name": "chainID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6841,
                                                            "src": "18465:7:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        {
                                                            "id": 6947,
                                                            "name": "depositNonce",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6843,
                                                            "src": "18474:12:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6948,
                                                                "name": "proposal",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6887,
                                                                "src": "18488:8:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                    "typeString": "struct Bridge.Proposal storage pointer"
                                                                }
                                                            },
                                                            "id": 6949,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "_status",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5933,
                                                            "src": "18488:16:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                "typeString": "enum Bridge.ProposalStatus"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6950,
                                                                "name": "proposal",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6887,
                                                                "src": "18506:8:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                    "typeString": "struct Bridge.Proposal storage pointer"
                                                                }
                                                            },
                                                            "id": 6951,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "_resourceID",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5922,
                                                            "src": "18506:20:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 6952,
                                                                "name": "proposal",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6887,
                                                                "src": "18528:8:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Proposal_$5936_storage_ptr",
                                                                    "typeString": "struct Bridge.Proposal storage pointer"
                                                                }
                                                            },
                                                            "id": 6953,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "_dataHash",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5924,
                                                            "src": "18528:18:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_enum$_ProposalStatus_$5920",
                                                                "typeString": "enum Bridge.ProposalStatus"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 6945,
                                                        "name": "ProposalEvent",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5998,
                                                        "src": "18451:13:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$5920_$_t_bytes32_$_t_bytes32_$returns$__$",
                                                            "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32,bytes32)"
                                                        }
                                                    },
                                                    "id": 6954,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "18451:96:37",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 6955,
                                                "nodeType": "EmitStatement",
                                                "src": "18446:101:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6839,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "16831:648:37",
                                        "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice Only callable by relayers when Bridge is not paused.\n@param chainID ID of chain deposit originated from.\n@param resourceID ResourceID to be used when making deposits.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param data Data originally provided when deposit was made.\n@notice Proposal must have Passed status.\n@notice Hash of {data} must equal proposal's {dataHash}.\n@notice Emits {ProposalEvent} event with status {Executed}."
                                    },
                                    "functionSelector": "4454b20d",
                                    "id": 6957,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6850,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6849,
                                                "name": "onlyRelayers",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6035,
                                                "src": "17633:12:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "17633:12:37"
                                        },
                                        {
                                            "id": 6852,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6851,
                                                "name": "whenNotPaused",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 777,
                                                "src": "17646:13:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "17646:13:37"
                                        }
                                    ],
                                    "name": "executeProposal",
                                    "nameLocation": "17493:15:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6848,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6841,
                                                "mutability": "mutable",
                                                "name": "chainID",
                                                "nameLocation": "17524:7:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6957,
                                                "src": "17518:13:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 6840,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17518:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6843,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "17548:12:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6957,
                                                "src": "17541:19:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6842,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17541:6:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6845,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "17585:4:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6957,
                                                "src": "17570:19:37",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6844,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17570:5:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6847,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "17607:10:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6957,
                                                "src": "17599:18:37",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6846,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17599:7:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17508:115:37"
                                    },
                                    "returnParameters": {
                                        "id": 6853,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "17660:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "17484:1070:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 6991,
                                        "nodeType": "Block",
                                        "src": "19048:113:37",
                                        "statements": [
                                            {
                                                "body": {
                                                    "id": 6989,
                                                    "nodeType": "Block",
                                                    "src": "19101:54:37",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "baseExpression": {
                                                                            "id": 6984,
                                                                            "name": "amounts",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6964,
                                                                            "src": "19133:7:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                                                "typeString": "uint256[] calldata"
                                                                            }
                                                                        },
                                                                        "id": 6986,
                                                                        "indexExpression": {
                                                                            "id": 6985,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6970,
                                                                            "src": "19141:1:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "19133:10:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 6980,
                                                                            "name": "addrs",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6961,
                                                                            "src": "19115:5:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                                                                                "typeString": "address payable[] calldata"
                                                                            }
                                                                        },
                                                                        "id": 6982,
                                                                        "indexExpression": {
                                                                            "id": 6981,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6970,
                                                                            "src": "19121:1:37",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "19115:8:37",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        }
                                                                    },
                                                                    "id": 6983,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "transfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "19115:17:37",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                                                                        "typeString": "function (uint256)"
                                                                    }
                                                                },
                                                                "id": 6987,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "19115:29:37",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 6988,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "19115:29:37"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 6976,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 6973,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6970,
                                                        "src": "19078:1:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 6974,
                                                            "name": "addrs",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6961,
                                                            "src": "19082:5:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                                                                "typeString": "address payable[] calldata"
                                                            }
                                                        },
                                                        "id": 6975,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "19082:12:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "19078:16:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 6990,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        6970
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 6970,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "19071:1:37",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 6990,
                                                            "src": "19063:9:37",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 6969,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "19063:7:37",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 6972,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 6971,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "19075:1:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "19063:13:37"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 6978,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "++",
                                                        "prefix": false,
                                                        "src": "19096:3:37",
                                                        "subExpression": {
                                                            "id": 6977,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6970,
                                                            "src": "19096:1:37",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 6979,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "19096:3:37"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "19058:97:37"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 6958,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "18560:379:37",
                                        "text": "@notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\nThis means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\n@param addrs Array of addresses to transfer {amounts} to.\n@param amounts Array of amonuts to transfer to {addrs}."
                                    },
                                    "functionSelector": "4603ae38",
                                    "id": 6992,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 6967,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 6966,
                                                "name": "onlyAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 6021,
                                                "src": "19038:9:37"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "19038:9:37"
                                        }
                                    ],
                                    "name": "transferFunds",
                                    "nameLocation": "18953:13:37",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6965,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6961,
                                                "mutability": "mutable",
                                                "name": "addrs",
                                                "nameLocation": "18994:5:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6992,
                                                "src": "18967:32:37",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                                                    "typeString": "address payable[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 6959,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "18967:15:37",
                                                        "stateMutability": "payable",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    },
                                                    "id": 6960,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "18967:17:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                                                        "typeString": "address payable[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6964,
                                                "mutability": "mutable",
                                                "name": "amounts",
                                                "nameLocation": "19020:7:37",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6992,
                                                "src": "19001:26:37",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                                    "typeString": "uint256[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 6962,
                                                        "name": "uint256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "19001:7:37",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 6963,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "19001:9:37",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                                        "typeString": "uint256[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18966:62:37"
                                    },
                                    "returnParameters": {
                                        "id": 6968,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "19048:0:37"
                                    },
                                    "scope": 6993,
                                    "src": "18944:217:37",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 6994,
                            "src": "540:18623:37",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:19122:37"
                },
                "id": 37
            },
            "contracts/external/chainbridge/handlers/GenericHandler.sol": {
                "ast": {
                    "absolutePath": "contracts/external/chainbridge/handlers/GenericHandler.sol",
                    "exportedSymbols": {
                        "GenericHandler": [
                            7364
                        ],
                        "IGenericHandler": [
                            7453
                        ]
                    },
                    "id": 7365,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 6995,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:38"
                        },
                        {
                            "absolutePath": "contracts/external/chainbridge/interfaces/IGenericHandler.sol",
                            "file": "../interfaces/IGenericHandler.sol",
                            "id": 6996,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 7365,
                            "sourceUnit": 7454,
                            "src": "67:43:38",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 6998,
                                        "name": "IGenericHandler",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 7453,
                                        "src": "313:15:38"
                                    },
                                    "id": 6999,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "313:15:38"
                                }
                            ],
                            "canonicalName": "GenericHandler",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 6997,
                                "nodeType": "StructuredDocumentation",
                                "src": "112:173:38",
                                "text": "@title Handles generic deposits and deposit executions.\n@author ChainSafe Systems.\n@notice This contract is intended to be used with the Bridge contract."
                            },
                            "fullyImplemented": true,
                            "id": 7364,
                            "linearizedBaseContracts": [
                                7364,
                                7453
                            ],
                            "name": "GenericHandler",
                            "nameLocation": "295:14:38",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "318c136e",
                                    "id": 7001,
                                    "mutability": "mutable",
                                    "name": "_bridgeAddress",
                                    "nameLocation": "350:14:38",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7364,
                                    "src": "335:29:38",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7000,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "335:7:38",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "canonicalName": "GenericHandler.DepositRecord",
                                    "id": 7010,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 7003,
                                            "mutability": "mutable",
                                            "name": "_destinationChainID",
                                            "nameLocation": "408:19:38",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7010,
                                            "src": "402:25:38",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            },
                                            "typeName": {
                                                "id": 7002,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "402:5:38",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 7005,
                                            "mutability": "mutable",
                                            "name": "_depositer",
                                            "nameLocation": "445:10:38",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7010,
                                            "src": "437:18:38",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 7004,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "437:7:38",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 7007,
                                            "mutability": "mutable",
                                            "name": "_resourceID",
                                            "nameLocation": "473:11:38",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7010,
                                            "src": "465:19:38",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 7006,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "465:7:38",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 7009,
                                            "mutability": "mutable",
                                            "name": "_metaData",
                                            "nameLocation": "500:9:38",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7010,
                                            "src": "494:15:38",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                "typeString": "bytes"
                                            },
                                            "typeName": {
                                                "id": 7008,
                                                "name": "bytes",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "494:5:38",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_storage_ptr",
                                                    "typeString": "bytes"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "DepositRecord",
                                    "nameLocation": "378:13:38",
                                    "nodeType": "StructDefinition",
                                    "scope": 7364,
                                    "src": "371:145:38",
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "4402027f",
                                    "id": 7017,
                                    "mutability": "mutable",
                                    "name": "_depositRecords",
                                    "nameLocation": "618:15:38",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7364,
                                    "src": "560:73:38",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7010_storage_$_$",
                                        "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord))"
                                    },
                                    "typeName": {
                                        "id": 7016,
                                        "keyType": {
                                            "id": 7011,
                                            "name": "uint8",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "568:5:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "560:50:38",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7010_storage_$_$",
                                            "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord))"
                                        },
                                        "valueType": {
                                            "id": 7015,
                                            "keyType": {
                                                "id": 7012,
                                                "name": "uint64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "585:6:38",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                }
                                            },
                                            "nodeType": "Mapping",
                                            "src": "577:32:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7010_storage_$",
                                                "typeString": "mapping(uint64 => struct GenericHandler.DepositRecord)"
                                            },
                                            "valueType": {
                                                "id": 7014,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 7013,
                                                    "name": "DepositRecord",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 7010,
                                                    "src": "595:13:38"
                                                },
                                                "referencedDeclaration": 7010,
                                                "src": "595:13:38",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositRecord_$7010_storage_ptr",
                                                    "typeString": "struct GenericHandler.DepositRecord"
                                                }
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "c54c2a11",
                                    "id": 7021,
                                    "mutability": "mutable",
                                    "name": "_resourceIDToContractAddress",
                                    "nameLocation": "713:28:38",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7364,
                                    "src": "678:63:38",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                        "typeString": "mapping(bytes32 => address)"
                                    },
                                    "typeName": {
                                        "id": 7020,
                                        "keyType": {
                                            "id": 7018,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "686:7:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "678:27:38",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                            "typeString": "mapping(bytes32 => address)"
                                        },
                                        "valueType": {
                                            "id": 7019,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "697:7:38",
                                            "stateMutability": "nonpayable",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "ec97d3b4",
                                    "id": 7025,
                                    "mutability": "mutable",
                                    "name": "_contractAddressToResourceID",
                                    "nameLocation": "821:28:38",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7364,
                                    "src": "786:63:38",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                                        "typeString": "mapping(address => bytes32)"
                                    },
                                    "typeName": {
                                        "id": 7024,
                                        "keyType": {
                                            "id": 7022,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "794:7:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "786:27:38",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                                            "typeString": "mapping(address => bytes32)"
                                        },
                                        "valueType": {
                                            "id": 7023,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "805:7:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "cb624463",
                                    "id": 7029,
                                    "mutability": "mutable",
                                    "name": "_contractAddressToDepositFunctionSignature",
                                    "nameLocation": "944:42:38",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7364,
                                    "src": "910:76:38",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$",
                                        "typeString": "mapping(address => bytes4)"
                                    },
                                    "typeName": {
                                        "id": 7028,
                                        "keyType": {
                                            "id": 7026,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "918:7:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "910:26:38",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$",
                                            "typeString": "mapping(address => bytes4)"
                                        },
                                        "valueType": {
                                            "id": 7027,
                                            "name": "bytes4",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "929:6:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "a5c3a985",
                                    "id": 7033,
                                    "mutability": "mutable",
                                    "name": "_contractAddressToExecuteFunctionSignature",
                                    "nameLocation": "1090:42:38",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7364,
                                    "src": "1056:76:38",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$",
                                        "typeString": "mapping(address => bytes4)"
                                    },
                                    "typeName": {
                                        "id": 7032,
                                        "keyType": {
                                            "id": 7030,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1064:7:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1056:26:38",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$",
                                            "typeString": "mapping(address => bytes4)"
                                        },
                                        "valueType": {
                                            "id": 7031,
                                            "name": "bytes4",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1075:6:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "7f79bea8",
                                    "id": 7037,
                                    "mutability": "mutable",
                                    "name": "_contractWhitelist",
                                    "nameLocation": "1219:18:38",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 7364,
                                    "src": "1187:50:38",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                        "typeString": "mapping(address => bool)"
                                    },
                                    "typeName": {
                                        "id": 7036,
                                        "keyType": {
                                            "id": 7034,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1195:7:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1187:24:38",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                            "typeString": "mapping(address => bool)"
                                        },
                                        "valueType": {
                                            "id": 7035,
                                            "name": "bool",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1206:4:38",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7043,
                                        "nodeType": "Block",
                                        "src": "1266:41:38",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 7039,
                                                        "name": "_onlyBridge",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7056,
                                                        "src": "1276:11:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 7040,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1276:13:38",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7041,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1276:13:38"
                                            },
                                            {
                                                "id": 7042,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1299:1:38"
                                            }
                                        ]
                                    },
                                    "id": 7044,
                                    "name": "onlyBridge",
                                    "nameLocation": "1253:10:38",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 7038,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1263:2:38"
                                    },
                                    "src": "1244:63:38",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 7055,
                                        "nodeType": "Block",
                                        "src": "1349:88:38",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 7051,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 7048,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "1367:3:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 7049,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "1367:10:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 7050,
                                                                "name": "_bridgeAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7001,
                                                                "src": "1381:14:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "1367:28:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "73656e646572206d7573742062652062726964676520636f6e7472616374",
                                                            "id": 7052,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1397:32:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e",
                                                                "typeString": "literal_string \"sender must be bridge contract\""
                                                            },
                                                            "value": "sender must be bridge contract"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_0febc0fc8991eb26dfaaceeb4d73d25b76da338550ed76c60410fec84388058e",
                                                                "typeString": "literal_string \"sender must be bridge contract\""
                                                            }
                                                        ],
                                                        "id": 7047,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1359:7:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7053,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1359:71:38",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7054,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1359:71:38"
                                            }
                                        ]
                                    },
                                    "id": 7056,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_onlyBridge",
                                    "nameLocation": "1322:11:38",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7045,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1333:2:38"
                                    },
                                    "returnParameters": {
                                        "id": 7046,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1349:0:38"
                                    },
                                    "scope": 7364,
                                    "src": "1313:124:38",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 7133,
                                        "nodeType": "Block",
                                        "src": "2995:929:38",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 7079,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 7075,
                                                                    "name": "initialResourceIDs",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7062,
                                                                    "src": "3026:18:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                                        "typeString": "bytes32[] memory"
                                                                    }
                                                                },
                                                                "id": 7076,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3026:25:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 7077,
                                                                    "name": "initialContractAddresses",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7065,
                                                                    "src": "3055:24:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                        "typeString": "address[] memory"
                                                                    }
                                                                },
                                                                "id": 7078,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3055:31:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "3026:60:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "696e697469616c5265736f7572636549447320616e6420696e697469616c436f6e7472616374416464726573736573206c656e206d69736d61746368",
                                                            "id": 7080,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3100:62:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510",
                                                                "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\""
                                                            },
                                                            "value": "initialResourceIDs and initialContractAddresses len mismatch"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_4ad26bc3c99f2850e5fe1de98475000419054e7d49a87288c0e5940e995dd510",
                                                                "typeString": "literal_string \"initialResourceIDs and initialContractAddresses len mismatch\""
                                                            }
                                                        ],
                                                        "id": 7074,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3005:7:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7081,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3005:167:38",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7082,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3005:167:38"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 7088,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 7084,
                                                                    "name": "initialContractAddresses",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7065,
                                                                    "src": "3204:24:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                        "typeString": "address[] memory"
                                                                    }
                                                                },
                                                                "id": 7085,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3204:31:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 7086,
                                                                    "name": "initialDepositFunctionSignatures",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7068,
                                                                    "src": "3239:32:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                                        "typeString": "bytes4[] memory"
                                                                    }
                                                                },
                                                                "id": 7087,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3239:39:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "3204:74:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "70726f766964656420636f6e74726163742061646472657373657320616e642066756e6374696f6e207369676e617475726573206c656e206d69736d61746368",
                                                            "id": 7089,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3292:66:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0",
                                                                "typeString": "literal_string \"provided contract addresses and function signatures len mismatch\""
                                                            },
                                                            "value": "provided contract addresses and function signatures len mismatch"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b746ce628071fcac0bf096a6e7891ff5a23e8d585affec3cf59959f2a03a9fe0",
                                                                "typeString": "literal_string \"provided contract addresses and function signatures len mismatch\""
                                                            }
                                                        ],
                                                        "id": 7083,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3183:7:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7090,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3183:185:38",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7091,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3183:185:38"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 7097,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 7093,
                                                                    "name": "initialDepositFunctionSignatures",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7068,
                                                                    "src": "3400:32:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                                        "typeString": "bytes4[] memory"
                                                                    }
                                                                },
                                                                "id": 7094,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3400:39:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 7095,
                                                                    "name": "initialExecuteFunctionSignatures",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7071,
                                                                    "src": "3443:32:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                                        "typeString": "bytes4[] memory"
                                                                    }
                                                                },
                                                                "id": 7096,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3443:39:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "3400:82:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "70726f7669646564206465706f73697420616e6420657865637574652066756e6374696f6e207369676e617475726573206c656e206d69736d61746368",
                                                            "id": 7098,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3496:63:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96",
                                                                "typeString": "literal_string \"provided deposit and execute function signatures len mismatch\""
                                                            },
                                                            "value": "provided deposit and execute function signatures len mismatch"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_9131b91c39cfdeebf122a7e28defa3834f957032b39040decdc270fb62be6d96",
                                                                "typeString": "literal_string \"provided deposit and execute function signatures len mismatch\""
                                                            }
                                                        ],
                                                        "id": 7092,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3379:7:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7099,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3379:190:38",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7100,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3379:190:38"
                                            },
                                            {
                                                "expression": {
                                                    "id": 7103,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 7101,
                                                        "name": "_bridgeAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7001,
                                                        "src": "3580:14:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 7102,
                                                        "name": "bridgeAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7059,
                                                        "src": "3597:13:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "3580:30:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 7104,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3580:30:38"
                                            },
                                            {
                                                "body": {
                                                    "id": 7131,
                                                    "nodeType": "Block",
                                                    "src": "3677:241:38",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "baseExpression": {
                                                                            "id": 7117,
                                                                            "name": "initialResourceIDs",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7062,
                                                                            "src": "3721:18:38",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                                                "typeString": "bytes32[] memory"
                                                                            }
                                                                        },
                                                                        "id": 7119,
                                                                        "indexExpression": {
                                                                            "id": 7118,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7106,
                                                                            "src": "3740:1:38",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "3721:21:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "baseExpression": {
                                                                            "id": 7120,
                                                                            "name": "initialContractAddresses",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7065,
                                                                            "src": "3760:24:38",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                                "typeString": "address[] memory"
                                                                            }
                                                                        },
                                                                        "id": 7122,
                                                                        "indexExpression": {
                                                                            "id": 7121,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7106,
                                                                            "src": "3785:1:38",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "3760:27:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "baseExpression": {
                                                                            "id": 7123,
                                                                            "name": "initialDepositFunctionSignatures",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7068,
                                                                            "src": "3805:32:38",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                                                "typeString": "bytes4[] memory"
                                                                            }
                                                                        },
                                                                        "id": 7125,
                                                                        "indexExpression": {
                                                                            "id": 7124,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7106,
                                                                            "src": "3838:1:38",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "3805:35:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        }
                                                                    },
                                                                    {
                                                                        "baseExpression": {
                                                                            "id": 7126,
                                                                            "name": "initialExecuteFunctionSignatures",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7071,
                                                                            "src": "3858:32:38",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                                                "typeString": "bytes4[] memory"
                                                                            }
                                                                        },
                                                                        "id": 7128,
                                                                        "indexExpression": {
                                                                            "id": 7127,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7106,
                                                                            "src": "3891:1:38",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "3858:35:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        }
                                                                    ],
                                                                    "id": 7116,
                                                                    "name": "_setResource",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7363,
                                                                    "src": "3691:12:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$",
                                                                        "typeString": "function (bytes32,address,bytes4,bytes4)"
                                                                    }
                                                                },
                                                                "id": 7129,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3691:216:38",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 7130,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3691:216:38"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 7112,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 7109,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7106,
                                                        "src": "3641:1:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 7110,
                                                            "name": "initialResourceIDs",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7062,
                                                            "src": "3645:18:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                                "typeString": "bytes32[] memory"
                                                            }
                                                        },
                                                        "id": 7111,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "3645:25:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3641:29:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 7132,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        7106
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 7106,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "3634:1:38",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 7132,
                                                            "src": "3626:9:38",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 7105,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "3626:7:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 7108,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 7107,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3638:1:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "3626:13:38"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 7114,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "++",
                                                        "prefix": false,
                                                        "src": "3672:3:38",
                                                        "subExpression": {
                                                            "id": 7113,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7106,
                                                            "src": "3672:1:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 7115,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "3672:3:38"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "3621:297:38"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7057,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1443:1286:38",
                                        "text": "@param bridgeAddress Contract address of previously deployed Bridge.\n@param initialResourceIDs Resource IDs used to identify a specific contract address.\nThese are the Resource IDs this contract will initially support.\n@param initialContractAddresses These are the addresses the {initialResourceIDs} will point to, and are the contracts that will be\ncalled to perform deposit and execution calls.\n@param initialDepositFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\nand are the function that will be called when executing {deposit}\n@param initialExecuteFunctionSignatures These are the function signatures {initialContractAddresses} will point to,\nand are the function that will be called when executing {executeProposal}\n@dev {initialResourceIDs}, {initialContractAddresses}, {initialDepositFunctionSignatures},\nand {initialExecuteFunctionSignatures} must all have the same length. Also,\nvalues must be ordered in the way that that index x of any mentioned array\nmust be intended for value x of any other array, e.g. {initialContractAddresses}[0]\nis the intended address for {initialDepositFunctionSignatures}[0]."
                                    },
                                    "id": 7134,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7072,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7059,
                                                "mutability": "mutable",
                                                "name": "bridgeAddress",
                                                "nameLocation": "2763:13:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7134,
                                                "src": "2755:21:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7058,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2755:7:38",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7062,
                                                "mutability": "mutable",
                                                "name": "initialResourceIDs",
                                                "nameLocation": "2803:18:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7134,
                                                "src": "2786:35:38",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                    "typeString": "bytes32[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 7060,
                                                        "name": "bytes32",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2786:7:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "id": 7061,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "2786:9:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                                        "typeString": "bytes32[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7065,
                                                "mutability": "mutable",
                                                "name": "initialContractAddresses",
                                                "nameLocation": "2848:24:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7134,
                                                "src": "2831:41:38",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 7063,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2831:7:38",
                                                        "stateMutability": "nonpayable",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "id": 7064,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "2831:9:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                        "typeString": "address[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7068,
                                                "mutability": "mutable",
                                                "name": "initialDepositFunctionSignatures",
                                                "nameLocation": "2898:32:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7134,
                                                "src": "2882:48:38",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                    "typeString": "bytes4[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 7066,
                                                        "name": "bytes4",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2882:6:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "id": 7067,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "2882:8:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                                        "typeString": "bytes4[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7071,
                                                "mutability": "mutable",
                                                "name": "initialExecuteFunctionSignatures",
                                                "nameLocation": "2956:32:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7134,
                                                "src": "2940:48:38",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes4_$dyn_memory_ptr",
                                                    "typeString": "bytes4[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 7069,
                                                        "name": "bytes4",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2940:6:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "id": 7070,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "2940:8:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes4_$dyn_storage_ptr",
                                                        "typeString": "bytes4[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2745:249:38"
                                    },
                                    "returnParameters": {
                                        "id": 7073,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2995:0:38"
                                    },
                                    "scope": 7364,
                                    "src": "2734:1190:38",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7151,
                                        "nodeType": "Block",
                                        "src": "4578:61:38",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 7145,
                                                            "name": "_depositRecords",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7017,
                                                            "src": "4595:15:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7010_storage_$_$",
                                                                "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord storage ref))"
                                                            }
                                                        },
                                                        "id": 7147,
                                                        "indexExpression": {
                                                            "id": 7146,
                                                            "name": "destId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7139,
                                                            "src": "4611:6:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "4595:23:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7010_storage_$",
                                                            "typeString": "mapping(uint64 => struct GenericHandler.DepositRecord storage ref)"
                                                        }
                                                    },
                                                    "id": 7149,
                                                    "indexExpression": {
                                                        "id": 7148,
                                                        "name": "depositNonce",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7137,
                                                        "src": "4619:12:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "4595:37:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositRecord_$7010_storage",
                                                        "typeString": "struct GenericHandler.DepositRecord storage ref"
                                                    }
                                                },
                                                "functionReturnParameters": 7144,
                                                "id": 7150,
                                                "nodeType": "Return",
                                                "src": "4588:44:38"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7135,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3930:537:38",
                                        "text": "@param depositNonce This ID will have been generated by the Bridge contract.\n@param destId ID of chain deposit will be bridged to.\n@return DepositRecord which consists of:\n- _destinationChainID ChainID deposited tokens are intended to end up on.\n- _resourceID ResourceID used when {deposit} was executed.\n- _depositer Address that initially called {deposit} in the Bridge contract.\n- _metaData Data to be passed to method executed in corresponding {resourceID} contract."
                                    },
                                    "functionSelector": "ba484c09",
                                    "id": 7152,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getDepositRecord",
                                    "nameLocation": "4481:16:38",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7140,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7137,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "4505:12:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7152,
                                                "src": "4498:19:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 7136,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4498:6:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7139,
                                                "mutability": "mutable",
                                                "name": "destId",
                                                "nameLocation": "4525:6:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7152,
                                                "src": "4519:12:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 7138,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4519:5:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4497:35:38"
                                    },
                                    "returnParameters": {
                                        "id": 7144,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7143,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7152,
                                                "src": "4556:20:38",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositRecord_$7010_memory_ptr",
                                                    "typeString": "struct GenericHandler.DepositRecord"
                                                },
                                                "typeName": {
                                                    "id": 7142,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 7141,
                                                        "name": "DepositRecord",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 7010,
                                                        "src": "4556:13:38"
                                                    },
                                                    "referencedDeclaration": 7010,
                                                    "src": "4556:13:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositRecord_$7010_storage_ptr",
                                                        "typeString": "struct GenericHandler.DepositRecord"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4555:22:38"
                                    },
                                    "scope": 7364,
                                    "src": "4472:167:38",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "baseFunctions": [
                                        7452
                                    ],
                                    "body": {
                                        "id": 7174,
                                        "nodeType": "Block",
                                        "src": "5794:98:38",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7168,
                                                            "name": "resourceID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7155,
                                                            "src": "5817:10:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 7169,
                                                            "name": "contractAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7157,
                                                            "src": "5829:15:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7170,
                                                            "name": "depositFunctionSig",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7159,
                                                            "src": "5846:18:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        },
                                                        {
                                                            "id": 7171,
                                                            "name": "executeFunctionSig",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7161,
                                                            "src": "5866:18:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        ],
                                                        "id": 7167,
                                                        "name": "_setResource",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7363,
                                                        "src": "5804:12:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_bytes4_$returns$__$",
                                                            "typeString": "function (bytes32,address,bytes4,bytes4)"
                                                        }
                                                    },
                                                    "id": 7172,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5804:81:38",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7173,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5804:81:38"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7153,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4645:957:38",
                                        "text": "@notice First verifies {_resourceIDToContractAddress}[{resourceID}] and\n{_contractAddressToResourceID}[{contractAddress}] are not already set,\nthen sets {_resourceIDToContractAddress} with {contractAddress},\n{_contractAddressToResourceID} with {resourceID},\n{_contractAddressToDepositFunctionSignature} with {depositFunctionSig},\n{_contractAddressToExecuteFunctionSignature} with {executeFunctionSig},\nand {_contractWhitelist} to true for {contractAddress}.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n@param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\n@param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed."
                                    },
                                    "functionSelector": "bba8185a",
                                    "id": 7175,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7165,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7164,
                                                "name": "onlyBridge",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 7044,
                                                "src": "5783:10:38"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5783:10:38"
                                        }
                                    ],
                                    "name": "setResource",
                                    "nameLocation": "5616:11:38",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 7163,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "5774:8:38"
                                    },
                                    "parameters": {
                                        "id": 7162,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7155,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "5645:10:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7175,
                                                "src": "5637:18:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7154,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5637:7:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7157,
                                                "mutability": "mutable",
                                                "name": "contractAddress",
                                                "nameLocation": "5673:15:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7175,
                                                "src": "5665:23:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7156,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5665:7:38",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7159,
                                                "mutability": "mutable",
                                                "name": "depositFunctionSig",
                                                "nameLocation": "5705:18:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7175,
                                                "src": "5698:25:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 7158,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5698:6:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7161,
                                                "mutability": "mutable",
                                                "name": "executeFunctionSig",
                                                "nameLocation": "5740:18:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7175,
                                                "src": "5733:25:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 7160,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5733:6:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5627:137:38"
                                    },
                                    "returnParameters": {
                                        "id": 7166,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5794:0:38"
                                    },
                                    "scope": 7364,
                                    "src": "5607:285:38",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 7258,
                                        "nodeType": "Block",
                                        "src": "6663:1488:38",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    7192
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7192,
                                                        "mutability": "mutable",
                                                        "name": "lenMetadata",
                                                        "nameLocation": "6681:11:38",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 7258,
                                                        "src": "6673:19:38",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 7191,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6673:7:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7193,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6673:19:38"
                                            },
                                            {
                                                "assignments": [
                                                    7195
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7195,
                                                        "mutability": "mutable",
                                                        "name": "metadata",
                                                        "nameLocation": "6715:8:38",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 7258,
                                                        "src": "6702:21:38",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 7194,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6702:5:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7196,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6702:21:38"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6743:708:38",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6811:33:38",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6839:4:38",
                                                                        "type": "",
                                                                        "value": "0xC4"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6826:12:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6826:18:38"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "lenMetadata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6811:11:38"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6897:23:38",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6915:4:38",
                                                                        "type": "",
                                                                        "value": "0x40"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6909:5:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6909:11:38"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "metadata",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6897:8:38"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6941:4:38",
                                                                        "type": "",
                                                                        "value": "0x40"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6951:4:38",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "metadata",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6961:8:38"
                                                                                    },
                                                                                    {
                                                                                        "name": "lenMetadata",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6971:11:38"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6957:3:38"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6957:26:38"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6947:3:38"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6947:37:38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6934:6:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6934:51:38"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6934:51:38"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "metadata",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7205:8:38"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7251:4:38",
                                                                        "type": "",
                                                                        "value": "0xC4"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [],
                                                                                "functionName": {
                                                                                    "name": "calldatasize",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "7339:12:38"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "7339:14:38"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7355:4:38",
                                                                                "type": "",
                                                                                "value": "0xC4"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7335:3:38"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7335:25:38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7175:12:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7175:266:38"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7175:266:38"
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 7192,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "6811:11:38",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 7192,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "6971:11:38",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 7195,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "6897:8:38",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 7195,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "6961:8:38",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 7195,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "7205:8:38",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 7197,
                                                "nodeType": "InlineAssembly",
                                                "src": "6734:717:38"
                                            },
                                            {
                                                "assignments": [
                                                    7199
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7199,
                                                        "mutability": "mutable",
                                                        "name": "contractAddress",
                                                        "nameLocation": "7469:15:38",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 7258,
                                                        "src": "7461:23:38",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 7198,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7461:7:38",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7203,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 7200,
                                                        "name": "_resourceIDToContractAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7021,
                                                        "src": "7487:28:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                            "typeString": "mapping(bytes32 => address)"
                                                        }
                                                    },
                                                    "id": 7202,
                                                    "indexExpression": {
                                                        "id": 7201,
                                                        "name": "resourceID",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7178,
                                                        "src": "7516:10:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "7487:40:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "7461:66:38"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 7205,
                                                                "name": "_contractWhitelist",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7037,
                                                                "src": "7545:18:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                                    "typeString": "mapping(address => bool)"
                                                                }
                                                            },
                                                            "id": 7207,
                                                            "indexExpression": {
                                                                "id": 7206,
                                                                "name": "contractAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7199,
                                                                "src": "7564:15:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "7545:35:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "70726f766964656420636f6e747261637441646472657373206973206e6f742077686974656c6973746564",
                                                            "id": 7208,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7582:45:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05",
                                                                "typeString": "literal_string \"provided contractAddress is not whitelisted\""
                                                            },
                                                            "value": "provided contractAddress is not whitelisted"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05",
                                                                "typeString": "literal_string \"provided contractAddress is not whitelisted\""
                                                            }
                                                        ],
                                                        "id": 7204,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7537:7:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7209,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7537:91:38",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7210,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7537:91:38"
                                            },
                                            {
                                                "assignments": [
                                                    7212
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7212,
                                                        "mutability": "mutable",
                                                        "name": "sig",
                                                        "nameLocation": "7646:3:38",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 7258,
                                                        "src": "7639:10:38",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        },
                                                        "typeName": {
                                                            "id": 7211,
                                                            "name": "bytes4",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7639:6:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7216,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 7213,
                                                        "name": "_contractAddressToDepositFunctionSignature",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7029,
                                                        "src": "7652:42:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$",
                                                            "typeString": "mapping(address => bytes4)"
                                                        }
                                                    },
                                                    "id": 7215,
                                                    "indexExpression": {
                                                        "id": 7214,
                                                        "name": "contractAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7199,
                                                        "src": "7695:15:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "7652:59:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "7639:72:38"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    },
                                                    "id": 7222,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 7217,
                                                        "name": "sig",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7212,
                                                        "src": "7725:3:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "30",
                                                                "id": 7220,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "7739:1:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "id": 7219,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "7732:6:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_bytes4_$",
                                                                "typeString": "type(bytes4)"
                                                            },
                                                            "typeName": {
                                                                "id": 7218,
                                                                "name": "bytes4",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "7732:6:38",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 7221,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "7732:9:38",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "src": "7725:16:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 7244,
                                                "nodeType": "IfStatement",
                                                "src": "7721:237:38",
                                                "trueBody": {
                                                    "id": 7243,
                                                    "nodeType": "Block",
                                                    "src": "7743:215:38",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                7224
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 7224,
                                                                    "mutability": "mutable",
                                                                    "name": "callData",
                                                                    "nameLocation": "7770:8:38",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 7243,
                                                                    "src": "7757:21:38",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7223,
                                                                        "name": "bytes",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7757:5:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                                            "typeString": "bytes"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 7230,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 7227,
                                                                        "name": "sig",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7212,
                                                                        "src": "7798:3:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 7228,
                                                                        "name": "metadata",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7195,
                                                                        "src": "7803:8:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 7225,
                                                                        "name": "abi",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -1,
                                                                        "src": "7781:3:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_abi",
                                                                            "typeString": "abi"
                                                                        }
                                                                    },
                                                                    "id": 7226,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "memberName": "encodePacked",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7781:16:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function () pure returns (bytes memory)"
                                                                    }
                                                                },
                                                                "id": 7229,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7781:31:38",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "7757:55:38"
                                                        },
                                                        {
                                                            "assignments": [
                                                                7232,
                                                                null
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 7232,
                                                                    "mutability": "mutable",
                                                                    "name": "success",
                                                                    "nameLocation": "7832:7:38",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 7243,
                                                                    "src": "7827:12:38",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7231,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7827:4:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                },
                                                                null
                                                            ],
                                                            "id": 7237,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 7235,
                                                                        "name": "callData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7224,
                                                                        "src": "7866:8:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 7233,
                                                                        "name": "contractAddress",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7199,
                                                                        "src": "7845:15:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "id": 7234,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "call",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7845:20:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                                                    }
                                                                },
                                                                "id": 7236,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7845:30:38",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                                    "typeString": "tuple(bool,bytes memory)"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "7826:49:38"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 7239,
                                                                        "name": "success",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7232,
                                                                        "src": "7897:7:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "64656c656761746563616c6c20746f20636f6e747261637441646472657373206661696c6564",
                                                                        "id": 7240,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7906:40:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2",
                                                                            "typeString": "literal_string \"delegatecall to contractAddress failed\""
                                                                        },
                                                                        "value": "delegatecall to contractAddress failed"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2",
                                                                            "typeString": "literal_string \"delegatecall to contractAddress failed\""
                                                                        }
                                                                    ],
                                                                    "id": 7238,
                                                                    "name": "require",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [
                                                                        -18,
                                                                        -18
                                                                    ],
                                                                    "referencedDeclaration": -18,
                                                                    "src": "7889:7:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                        "typeString": "function (bool,string memory) pure"
                                                                    }
                                                                },
                                                                "id": 7241,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7889:58:38",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 7242,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "7889:58:38"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 7256,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 7245,
                                                                "name": "_depositRecords",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7017,
                                                                "src": "7968:15:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_uint8_$_t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7010_storage_$_$",
                                                                    "typeString": "mapping(uint8 => mapping(uint64 => struct GenericHandler.DepositRecord storage ref))"
                                                                }
                                                            },
                                                            "id": 7248,
                                                            "indexExpression": {
                                                                "id": 7246,
                                                                "name": "destinationChainID",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7180,
                                                                "src": "7984:18:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "7968:35:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_uint64_$_t_struct$_DepositRecord_$7010_storage_$",
                                                                "typeString": "mapping(uint64 => struct GenericHandler.DepositRecord storage ref)"
                                                            }
                                                        },
                                                        "id": 7249,
                                                        "indexExpression": {
                                                            "id": 7247,
                                                            "name": "depositNonce",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7182,
                                                            "src": "8004:12:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "7968:49:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_DepositRecord_$7010_storage",
                                                            "typeString": "struct GenericHandler.DepositRecord storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 7251,
                                                                "name": "destinationChainID",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7180,
                                                                "src": "8047:18:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            {
                                                                "id": 7252,
                                                                "name": "depositer",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7184,
                                                                "src": "8079:9:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "id": 7253,
                                                                "name": "resourceID",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7178,
                                                                "src": "8102:10:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            {
                                                                "id": 7254,
                                                                "name": "metadata",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7195,
                                                                "src": "8126:8:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            ],
                                                            "id": 7250,
                                                            "name": "DepositRecord",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7010,
                                                            "src": "8020:13:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_struct$_DepositRecord_$7010_storage_ptr_$",
                                                                "typeString": "type(struct GenericHandler.DepositRecord storage pointer)"
                                                            }
                                                        },
                                                        "id": 7255,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "structConstructorCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "8020:124:38",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_DepositRecord_$7010_memory_ptr",
                                                            "typeString": "struct GenericHandler.DepositRecord memory"
                                                        }
                                                    },
                                                    "src": "7968:176:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositRecord_$7010_storage",
                                                        "typeString": "struct GenericHandler.DepositRecord storage ref"
                                                    }
                                                },
                                                "id": 7257,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7968:176:38"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7176,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5898:575:38",
                                        "text": "@notice A deposit is initiatied by making a deposit in the Bridge contract.\n@param destinationChainID Chain ID deposit is expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@notice {contractAddress} is required to be whitelisted\n@notice If {_contractAddressToDepositFunctionSignature}[{contractAddress}] is set,\n{metaData} is expected to consist of needed function arguments."
                                    },
                                    "functionSelector": "38995da9",
                                    "id": 7259,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7189,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7188,
                                                "name": "onlyBridge",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 7044,
                                                "src": "6652:10:38"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6652:10:38"
                                        }
                                    ],
                                    "name": "deposit",
                                    "nameLocation": "6487:7:38",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7187,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7178,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "6512:10:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7259,
                                                "src": "6504:18:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7177,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6504:7:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7180,
                                                "mutability": "mutable",
                                                "name": "destinationChainID",
                                                "nameLocation": "6538:18:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7259,
                                                "src": "6532:24:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 7179,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6532:5:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7182,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "6573:12:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7259,
                                                "src": "6566:19:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 7181,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6566:6:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7184,
                                                "mutability": "mutable",
                                                "name": "depositer",
                                                "nameLocation": "6603:9:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7259,
                                                "src": "6595:17:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7183,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6595:7:38",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7186,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7259,
                                                "src": "6622:14:38",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 7185,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6622:5:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6494:148:38"
                                    },
                                    "returnParameters": {
                                        "id": 7190,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6663:0:38"
                                    },
                                    "scope": 7364,
                                    "src": "6478:1673:38",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 7320,
                                        "nodeType": "Block",
                                        "src": "8589:1260:38",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    7270
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7270,
                                                        "mutability": "mutable",
                                                        "name": "metaData",
                                                        "nameLocation": "8612:8:38",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 7320,
                                                        "src": "8599:21:38",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 7269,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "8599:5:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7271,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "8599:21:38"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8639:697:38",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8755:23:38",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8773:4:38",
                                                                        "type": "",
                                                                        "value": "0x40"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8767:5:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8767:11:38"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "metaData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8755:8:38"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8867:33:38",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8895:4:38",
                                                                        "type": "",
                                                                        "value": "0x64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8882:12:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8882:18:38"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "lenMeta",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8871:7:38",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8920:4:38",
                                                                        "type": "",
                                                                        "value": "0x40"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8930:4:38",
                                                                                "type": "",
                                                                                "value": "0x60"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "metaData",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "8940:8:38"
                                                                                    },
                                                                                    {
                                                                                        "name": "lenMeta",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "8950:7:38"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "8936:3:38"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "8936:22:38"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8926:3:38"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8926:33:38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8913:6:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8913:47:38"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8913:47:38"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "metaData",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9124:8:38"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9170:4:38",
                                                                        "type": "",
                                                                        "value": "0x64"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [],
                                                                                "functionName": {
                                                                                    "name": "calldatasize",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "9256:12:38"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "9256:14:38"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9272:4:38",
                                                                                "type": "",
                                                                                "value": "0x64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9252:3:38"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9252:25:38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9094:12:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9094:232:38"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9094:232:38"
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 7270,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "8755:8:38",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 7270,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "8940:8:38",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 7270,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "9124:8:38",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 7272,
                                                "nodeType": "InlineAssembly",
                                                "src": "8630:706:38"
                                            },
                                            {
                                                "assignments": [
                                                    7274
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7274,
                                                        "mutability": "mutable",
                                                        "name": "contractAddress",
                                                        "nameLocation": "9354:15:38",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 7320,
                                                        "src": "9346:23:38",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 7273,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9346:7:38",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7278,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 7275,
                                                        "name": "_resourceIDToContractAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7021,
                                                        "src": "9372:28:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                            "typeString": "mapping(bytes32 => address)"
                                                        }
                                                    },
                                                    "id": 7277,
                                                    "indexExpression": {
                                                        "id": 7276,
                                                        "name": "resourceID",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7262,
                                                        "src": "9401:10:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "9372:40:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9346:66:38"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "id": 7280,
                                                                "name": "_contractWhitelist",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7037,
                                                                "src": "9430:18:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                                    "typeString": "mapping(address => bool)"
                                                                }
                                                            },
                                                            "id": 7282,
                                                            "indexExpression": {
                                                                "id": 7281,
                                                                "name": "contractAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7274,
                                                                "src": "9449:15:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "9430:35:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "70726f766964656420636f6e747261637441646472657373206973206e6f742077686974656c6973746564",
                                                            "id": 7283,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9467:45:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05",
                                                                "typeString": "literal_string \"provided contractAddress is not whitelisted\""
                                                            },
                                                            "value": "provided contractAddress is not whitelisted"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b35e1d4b1392122547a6ef1db8ad0b6549b5cc8820bfc81437cf78f8b1333b05",
                                                                "typeString": "literal_string \"provided contractAddress is not whitelisted\""
                                                            }
                                                        ],
                                                        "id": 7279,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "9422:7:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7284,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9422:91:38",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7285,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9422:91:38"
                                            },
                                            {
                                                "assignments": [
                                                    7287
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7287,
                                                        "mutability": "mutable",
                                                        "name": "sig",
                                                        "nameLocation": "9531:3:38",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 7320,
                                                        "src": "9524:10:38",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        },
                                                        "typeName": {
                                                            "id": 7286,
                                                            "name": "bytes4",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9524:6:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes4",
                                                                "typeString": "bytes4"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7291,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 7288,
                                                        "name": "_contractAddressToExecuteFunctionSignature",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7033,
                                                        "src": "9537:42:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$",
                                                            "typeString": "mapping(address => bytes4)"
                                                        }
                                                    },
                                                    "id": 7290,
                                                    "indexExpression": {
                                                        "id": 7289,
                                                        "name": "contractAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7274,
                                                        "src": "9580:15:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "9537:59:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9524:72:38"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    },
                                                    "id": 7297,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 7292,
                                                        "name": "sig",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7287,
                                                        "src": "9610:3:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "30",
                                                                "id": 7295,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "9624:1:38",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "id": 7294,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "9617:6:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_bytes4_$",
                                                                "typeString": "type(bytes4)"
                                                            },
                                                            "typeName": {
                                                                "id": 7293,
                                                                "name": "bytes4",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "9617:6:38",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 7296,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "9617:9:38",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "src": "9610:16:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 7319,
                                                "nodeType": "IfStatement",
                                                "src": "9606:237:38",
                                                "trueBody": {
                                                    "id": 7318,
                                                    "nodeType": "Block",
                                                    "src": "9628:215:38",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                7299
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 7299,
                                                                    "mutability": "mutable",
                                                                    "name": "callData",
                                                                    "nameLocation": "9655:8:38",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 7318,
                                                                    "src": "9642:21:38",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7298,
                                                                        "name": "bytes",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "9642:5:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                                            "typeString": "bytes"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 7305,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 7302,
                                                                        "name": "sig",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7287,
                                                                        "src": "9683:3:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 7303,
                                                                        "name": "metaData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7270,
                                                                        "src": "9688:8:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes4",
                                                                            "typeString": "bytes4"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 7300,
                                                                        "name": "abi",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -1,
                                                                        "src": "9666:3:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_abi",
                                                                            "typeString": "abi"
                                                                        }
                                                                    },
                                                                    "id": 7301,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "memberName": "encodePacked",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "9666:16:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function () pure returns (bytes memory)"
                                                                    }
                                                                },
                                                                "id": 7304,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9666:31:38",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "9642:55:38"
                                                        },
                                                        {
                                                            "assignments": [
                                                                7307,
                                                                null
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 7307,
                                                                    "mutability": "mutable",
                                                                    "name": "success",
                                                                    "nameLocation": "9717:7:38",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 7318,
                                                                    "src": "9712:12:38",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7306,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "9712:4:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                },
                                                                null
                                                            ],
                                                            "id": 7312,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 7310,
                                                                        "name": "callData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7299,
                                                                        "src": "9751:8:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 7308,
                                                                        "name": "contractAddress",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7274,
                                                                        "src": "9730:15:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "id": 7309,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "call",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "9730:20:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                                                    }
                                                                },
                                                                "id": 7311,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9730:30:38",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                                    "typeString": "tuple(bool,bytes memory)"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "9711:49:38"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 7314,
                                                                        "name": "success",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7307,
                                                                        "src": "9782:7:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "64656c656761746563616c6c20746f20636f6e747261637441646472657373206661696c6564",
                                                                        "id": 7315,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "9791:40:38",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2",
                                                                            "typeString": "literal_string \"delegatecall to contractAddress failed\""
                                                                        },
                                                                        "value": "delegatecall to contractAddress failed"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_51f8dc53a1a1265d7e1a33da60330d21af9ee076b3a370b08330721ff4064ac2",
                                                                            "typeString": "literal_string \"delegatecall to contractAddress failed\""
                                                                        }
                                                                    ],
                                                                    "id": 7313,
                                                                    "name": "require",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [
                                                                        -18,
                                                                        -18
                                                                    ],
                                                                    "referencedDeclaration": -18,
                                                                    "src": "9774:7:38",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                        "typeString": "function (bool,string memory) pure"
                                                                    }
                                                                },
                                                                "id": 7316,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9774:58:38",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 7317,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "9774:58:38"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7260,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8157:346:38",
                                        "text": "@notice Proposal execution should be initiated when a proposal is finalized in the Bridge contract.\n@notice {contractAddress} is required to be whitelisted\n@notice If {_contractAddressToExecuteFunctionSignature}[{contractAddress}] is set,\n{metaData} is expected to consist of needed function arguments."
                                    },
                                    "functionSelector": "e248cff2",
                                    "id": 7321,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7267,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7266,
                                                "name": "onlyBridge",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 7044,
                                                "src": "8578:10:38"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "8578:10:38"
                                        }
                                    ],
                                    "name": "executeProposal",
                                    "nameLocation": "8517:15:38",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7265,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7262,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "8541:10:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7321,
                                                "src": "8533:18:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7261,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8533:7:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7264,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7321,
                                                "src": "8553:14:38",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 7263,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8553:5:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8532:36:38"
                                    },
                                    "returnParameters": {
                                        "id": 7268,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8589:0:38"
                                    },
                                    "scope": 7364,
                                    "src": "8508:1341:38",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 7362,
                                        "nodeType": "Block",
                                        "src": "10023:376:38",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 7336,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 7332,
                                                            "name": "_resourceIDToContractAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7021,
                                                            "src": "10033:28:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                "typeString": "mapping(bytes32 => address)"
                                                            }
                                                        },
                                                        "id": 7334,
                                                        "indexExpression": {
                                                            "id": 7333,
                                                            "name": "resourceID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7323,
                                                            "src": "10062:10:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "10033:40:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 7335,
                                                        "name": "contractAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7325,
                                                        "src": "10076:15:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "10033:58:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 7337,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10033:58:38"
                                            },
                                            {
                                                "expression": {
                                                    "id": 7342,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 7338,
                                                            "name": "_contractAddressToResourceID",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7025,
                                                            "src": "10101:28:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                                                                "typeString": "mapping(address => bytes32)"
                                                            }
                                                        },
                                                        "id": 7340,
                                                        "indexExpression": {
                                                            "id": 7339,
                                                            "name": "contractAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7325,
                                                            "src": "10130:15:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "10101:45:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 7341,
                                                        "name": "resourceID",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7323,
                                                        "src": "10149:10:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "src": "10101:58:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "id": 7343,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10101:58:38"
                                            },
                                            {
                                                "expression": {
                                                    "id": 7348,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 7344,
                                                            "name": "_contractAddressToDepositFunctionSignature",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7029,
                                                            "src": "10169:42:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$",
                                                                "typeString": "mapping(address => bytes4)"
                                                            }
                                                        },
                                                        "id": 7346,
                                                        "indexExpression": {
                                                            "id": 7345,
                                                            "name": "contractAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7325,
                                                            "src": "10212:15:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "10169:59:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 7347,
                                                        "name": "depositFunctionSig",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7327,
                                                        "src": "10231:18:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "src": "10169:80:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "id": 7349,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10169:80:38"
                                            },
                                            {
                                                "expression": {
                                                    "id": 7354,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 7350,
                                                            "name": "_contractAddressToExecuteFunctionSignature",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7033,
                                                            "src": "10259:42:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes4_$",
                                                                "typeString": "mapping(address => bytes4)"
                                                            }
                                                        },
                                                        "id": 7352,
                                                        "indexExpression": {
                                                            "id": 7351,
                                                            "name": "contractAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7325,
                                                            "src": "10302:15:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "10259:59:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 7353,
                                                        "name": "executeFunctionSig",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7329,
                                                        "src": "10321:18:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes4",
                                                            "typeString": "bytes4"
                                                        }
                                                    },
                                                    "src": "10259:80:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "id": 7355,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10259:80:38"
                                            },
                                            {
                                                "expression": {
                                                    "id": 7360,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 7356,
                                                            "name": "_contractWhitelist",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7037,
                                                            "src": "10350:18:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                                                "typeString": "mapping(address => bool)"
                                                            }
                                                        },
                                                        "id": 7358,
                                                        "indexExpression": {
                                                            "id": 7357,
                                                            "name": "contractAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7325,
                                                            "src": "10369:15:38",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "10350:35:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "74727565",
                                                        "id": 7359,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "10388:4:38",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "src": "10350:42:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 7361,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10350:42:38"
                                            }
                                        ]
                                    },
                                    "id": 7363,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setResource",
                                    "nameLocation": "9864:12:38",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7330,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7323,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "9894:10:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7363,
                                                "src": "9886:18:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7322,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9886:7:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7325,
                                                "mutability": "mutable",
                                                "name": "contractAddress",
                                                "nameLocation": "9922:15:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7363,
                                                "src": "9914:23:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7324,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9914:7:38",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7327,
                                                "mutability": "mutable",
                                                "name": "depositFunctionSig",
                                                "nameLocation": "9954:18:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7363,
                                                "src": "9947:25:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 7326,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9947:6:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7329,
                                                "mutability": "mutable",
                                                "name": "executeFunctionSig",
                                                "nameLocation": "9989:18:38",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7363,
                                                "src": "9982:25:38",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 7328,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9982:6:38",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9876:137:38"
                                    },
                                    "returnParameters": {
                                        "id": 7331,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "10023:0:38"
                                    },
                                    "scope": 7364,
                                    "src": "9855:544:38",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 7365,
                            "src": "286:10115:38",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:10360:38"
                },
                "id": 38
            },
            "contracts/external/chainbridge/interfaces/IBridge.sol": {
                "ast": {
                    "absolutePath": "contracts/external/chainbridge/interfaces/IBridge.sol",
                    "exportedSymbols": {
                        "IBridge": [
                            7383
                        ]
                    },
                    "id": 7384,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 7366,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:39"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IBridge",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 7367,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:80:39",
                                "text": "@title Interface for Bridge contract.\n@author ChainSafe Systems."
                            },
                            "fullyImplemented": false,
                            "id": 7383,
                            "linearizedBaseContracts": [
                                7383
                            ],
                            "name": "IBridge",
                            "nameLocation": "158:7:39",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 7368,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "172:178:39",
                                        "text": "@notice Exposing getter for {_chainID} instead of forcing the use of call.\n@return uint8 The {_chainID} that is currently set for the Bridge contract."
                                    },
                                    "functionSelector": "beab7131",
                                    "id": 7373,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_chainID",
                                    "nameLocation": "364:8:39",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7369,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "372:2:39"
                                    },
                                    "returnParameters": {
                                        "id": 7372,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7371,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7373,
                                                "src": "393:5:39",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 7370,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "393:5:39",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "392:7:39"
                                    },
                                    "scope": 7383,
                                    "src": "355:45:39",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "05e2ca17",
                                    "id": 7382,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "deposit",
                                    "nameLocation": "415:7:39",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7380,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7375,
                                                "mutability": "mutable",
                                                "name": "destinationChainID",
                                                "nameLocation": "438:18:39",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7382,
                                                "src": "432:24:39",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 7374,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "432:5:39",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7377,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "474:10:39",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7382,
                                                "src": "466:18:39",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7376,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "466:7:39",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7379,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "509:4:39",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7382,
                                                "src": "494:19:39",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 7378,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "494:5:39",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "422:97:39"
                                    },
                                    "returnParameters": {
                                        "id": 7381,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "528:0:39"
                                    },
                                    "scope": 7383,
                                    "src": "406:123:39",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 7384,
                            "src": "148:383:39",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:490:39"
                },
                "id": 39
            },
            "contracts/external/chainbridge/interfaces/IDepositExecute.sol": {
                "ast": {
                    "absolutePath": "contracts/external/chainbridge/interfaces/IDepositExecute.sol",
                    "exportedSymbols": {
                        "IDepositExecute": [
                            7409
                        ]
                    },
                    "id": 7410,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 7385,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:40"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IDepositExecute",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 7386,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:127:40",
                                "text": "@title Interface for handler contracts that support deposits and deposit executions.\n@author ChainSafe Systems."
                            },
                            "fullyImplemented": false,
                            "id": 7409,
                            "linearizedBaseContracts": [
                                7409
                            ],
                            "name": "IDepositExecute",
                            "nameLocation": "205:15:40",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 7387,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "227:423:40",
                                        "text": "@notice It is intended that deposit are made using the Bridge contract.\n@param destinationChainID Chain ID deposit is expected to be bridged to.\n@param depositNonce This value is generated as an ID by the Bridge contract.\n@param depositer Address of account making the deposit in the Bridge contract.\n@param data Consists of additional data needed for a specific deposit."
                                    },
                                    "functionSelector": "38995da9",
                                    "id": 7400,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "deposit",
                                    "nameLocation": "664:7:40",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7398,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7389,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "689:10:40",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7400,
                                                "src": "681:18:40",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7388,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "681:7:40",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7391,
                                                "mutability": "mutable",
                                                "name": "destinationChainID",
                                                "nameLocation": "715:18:40",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7400,
                                                "src": "709:24:40",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 7390,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "709:5:40",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7393,
                                                "mutability": "mutable",
                                                "name": "depositNonce",
                                                "nameLocation": "750:12:40",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7400,
                                                "src": "743:19:40",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 7392,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "743:6:40",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7395,
                                                "mutability": "mutable",
                                                "name": "depositer",
                                                "nameLocation": "780:9:40",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7400,
                                                "src": "772:17:40",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7394,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "772:7:40",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7397,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "814:4:40",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7400,
                                                "src": "799:19:40",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 7396,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "799:5:40",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "671:153:40"
                                    },
                                    "returnParameters": {
                                        "id": 7399,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "833:0:40"
                                    },
                                    "scope": 7409,
                                    "src": "655:179:40",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 7401,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "840:183:40",
                                        "text": "@notice It is intended that proposals are executed by the Bridge contract.\n@param data Consists of additional data needed for a specific deposit execution."
                                    },
                                    "functionSelector": "e248cff2",
                                    "id": 7408,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "executeProposal",
                                    "nameLocation": "1037:15:40",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7406,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7403,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "1061:10:40",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7408,
                                                "src": "1053:18:40",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7402,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1053:7:40",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7405,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "1088:4:40",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7408,
                                                "src": "1073:19:40",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 7404,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1073:5:40",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1052:41:40"
                                    },
                                    "returnParameters": {
                                        "id": 7407,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1102:0:40"
                                    },
                                    "scope": 7409,
                                    "src": "1028:75:40",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 7410,
                            "src": "195:910:40",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1064:40"
                },
                "id": 40
            },
            "contracts/external/chainbridge/interfaces/IERCHandler.sol": {
                "ast": {
                    "absolutePath": "contracts/external/chainbridge/interfaces/IERCHandler.sol",
                    "exportedSymbols": {
                        "IERCHandler": [
                            7437
                        ]
                    },
                    "id": 7438,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 7411,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:41"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IERCHandler",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 7412,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:117:41",
                                "text": "@title Interface to be used with handlers that support ERC20s and ERC721s.\n@author ChainSafe Systems."
                            },
                            "fullyImplemented": false,
                            "id": 7437,
                            "linearizedBaseContracts": [
                                7437
                            ],
                            "name": "IERCHandler",
                            "nameLocation": "195:11:41",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 7413,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "213:261:41",
                                        "text": "@notice Correlates {resourceID} with {contractAddress}.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed."
                                    },
                                    "functionSelector": "b8fa3736",
                                    "id": 7420,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setResource",
                                    "nameLocation": "488:11:41",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7418,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7415,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "508:10:41",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7420,
                                                "src": "500:18:41",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7414,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "500:7:41",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7417,
                                                "mutability": "mutable",
                                                "name": "contractAddress",
                                                "nameLocation": "528:15:41",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7420,
                                                "src": "520:23:41",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7416,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "520:7:41",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "499:45:41"
                                    },
                                    "returnParameters": {
                                        "id": 7419,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "553:0:41"
                                    },
                                    "scope": 7437,
                                    "src": "479:75:41",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 7421,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "560:170:41",
                                        "text": "@notice Marks {contractAddress} as mintable/burnable.\n@param contractAddress Address of contract to be used when making or executing deposits."
                                    },
                                    "functionSelector": "07b7ed99",
                                    "id": 7426,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setBurnable",
                                    "nameLocation": "744:11:41",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7424,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7423,
                                                "mutability": "mutable",
                                                "name": "contractAddress",
                                                "nameLocation": "764:15:41",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7426,
                                                "src": "756:23:41",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7422,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "756:7:41",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "755:25:41"
                                    },
                                    "returnParameters": {
                                        "id": 7425,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "789:0:41"
                                    },
                                    "scope": 7437,
                                    "src": "735:55:41",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 7427,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "796:295:41",
                                        "text": "@notice Used to manually release funds from ERC safes.\n@param tokenAddress Address of token contract to release.\n@param recipient Address to release tokens to.\n@param amountOrTokenID Either the amount of ERC20 tokens or the ERC721 token ID to release."
                                    },
                                    "functionSelector": "d9caed12",
                                    "id": 7436,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "withdraw",
                                    "nameLocation": "1105:8:41",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7434,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7429,
                                                "mutability": "mutable",
                                                "name": "tokenAddress",
                                                "nameLocation": "1131:12:41",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7436,
                                                "src": "1123:20:41",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7428,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1123:7:41",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7431,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "1161:9:41",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7436,
                                                "src": "1153:17:41",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7430,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1153:7:41",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7433,
                                                "mutability": "mutable",
                                                "name": "amountOrTokenID",
                                                "nameLocation": "1188:15:41",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7436,
                                                "src": "1180:23:41",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7432,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1180:7:41",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1113:96:41"
                                    },
                                    "returnParameters": {
                                        "id": 7435,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1218:0:41"
                                    },
                                    "scope": 7437,
                                    "src": "1096:123:41",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 7438,
                            "src": "185:1036:41",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1180:41"
                },
                "id": 41
            },
            "contracts/external/chainbridge/interfaces/IGenericHandler.sol": {
                "ast": {
                    "absolutePath": "contracts/external/chainbridge/interfaces/IGenericHandler.sol",
                    "exportedSymbols": {
                        "IGenericHandler": [
                            7453
                        ]
                    },
                    "id": 7454,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 7439,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:42"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IGenericHandler",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 7440,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:232:42",
                                "text": "@title Interface for handler that handles generic deposits and deposit executions.\n@dev Copied directly from here: https://github.com/ChainSafe/chainbridge-solidity/releases/tag/v1.0.0.\n@author ChainSafe Systems."
                            },
                            "fullyImplemented": false,
                            "id": 7453,
                            "linearizedBaseContracts": [
                                7453
                            ],
                            "name": "IGenericHandler",
                            "nameLocation": "310:15:42",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 7441,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "332:555:42",
                                        "text": "@notice Correlates {resourceID} with {contractAddress}, {depositFunctionSig}, and {executeFunctionSig}.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n@param depositFunctionSig Function signature of method to be called in {contractAddress} when a deposit is made.\n@param executeFunctionSig Function signature of method to be called in {contractAddress} when a deposit is executed."
                                    },
                                    "functionSelector": "bba8185a",
                                    "id": 7452,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setResource",
                                    "nameLocation": "901:11:42",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7450,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7443,
                                                "mutability": "mutable",
                                                "name": "resourceID",
                                                "nameLocation": "930:10:42",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7452,
                                                "src": "922:18:42",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7442,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "922:7:42",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7445,
                                                "mutability": "mutable",
                                                "name": "contractAddress",
                                                "nameLocation": "958:15:42",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7452,
                                                "src": "950:23:42",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7444,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "950:7:42",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7447,
                                                "mutability": "mutable",
                                                "name": "depositFunctionSig",
                                                "nameLocation": "990:18:42",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7452,
                                                "src": "983:25:42",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 7446,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "983:6:42",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7449,
                                                "mutability": "mutable",
                                                "name": "executeFunctionSig",
                                                "nameLocation": "1025:18:42",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7452,
                                                "src": "1018:25:42",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes4",
                                                    "typeString": "bytes4"
                                                },
                                                "typeName": {
                                                    "id": 7448,
                                                    "name": "bytes4",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1018:6:42",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes4",
                                                        "typeString": "bytes4"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "912:137:42"
                                    },
                                    "returnParameters": {
                                        "id": 7451,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1058:0:42"
                                    },
                                    "scope": 7453,
                                    "src": "892:167:42",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 7454,
                            "src": "300:761:42",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1020:42"
                },
                "id": 42
            },
            "contracts/insured-bridge/BridgeAdmin.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/BridgeAdmin.sol",
                    "exportedSymbols": {
                        "AddressWhitelistInterface": [
                            5658
                        ],
                        "BridgeAdmin": [
                            8226
                        ],
                        "BridgeAdminInterface": [
                            9210
                        ],
                        "BridgePoolInterface": [
                            9235
                        ],
                        "Context": [
                            1974
                        ],
                        "FinderInterface": [
                            10205
                        ],
                        "IERC20": [
                            1406
                        ],
                        "IdentifierWhitelistInterface": [
                            10229
                        ],
                        "Lockable": [
                            5437
                        ],
                        "MessengerInterface": [
                            9256
                        ],
                        "OptimisticOracleConstraints": [
                            10185
                        ],
                        "OracleInterfaces": [
                            10180
                        ],
                        "Ownable": [
                            729
                        ]
                    },
                    "id": 8227,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 7455,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:43"
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/interfaces/BridgePoolInterface.sol",
                            "file": "./interfaces//BridgePoolInterface.sol",
                            "id": 7456,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8227,
                            "sourceUnit": 9236,
                            "src": "67:47:43",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol",
                            "file": "./interfaces/BridgeAdminInterface.sol",
                            "id": 7457,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8227,
                            "sourceUnit": 9211,
                            "src": "115:47:43",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/interfaces/MessengerInterface.sol",
                            "file": "./interfaces/MessengerInterface.sol",
                            "id": 7458,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8227,
                            "sourceUnit": 9257,
                            "src": "163:45:43",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/oracle/interfaces/IdentifierWhitelistInterface.sol",
                            "file": "../oracle/interfaces/IdentifierWhitelistInterface.sol",
                            "id": 7459,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8227,
                            "sourceUnit": 10230,
                            "src": "209:63:43",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/oracle/interfaces/FinderInterface.sol",
                            "file": "../oracle/interfaces/FinderInterface.sol",
                            "id": 7460,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8227,
                            "sourceUnit": 10206,
                            "src": "273:50:43",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/oracle/implementation/Constants.sol",
                            "file": "../oracle/implementation/Constants.sol",
                            "id": 7461,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8227,
                            "sourceUnit": 10186,
                            "src": "324:48:43",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/interfaces/AddressWhitelistInterface.sol",
                            "file": "../common/interfaces/AddressWhitelistInterface.sol",
                            "id": 7462,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8227,
                            "sourceUnit": 5659,
                            "src": "373:60:43",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/Lockable.sol",
                            "file": "../common/implementation/Lockable.sol",
                            "id": 7463,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8227,
                            "sourceUnit": 5438,
                            "src": "434:47:43",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                            "file": "@openzeppelin/contracts/access/Ownable.sol",
                            "id": 7464,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8227,
                            "sourceUnit": 730,
                            "src": "483:52:43",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 7466,
                                        "name": "BridgeAdminInterface",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 9210,
                                        "src": "948:20:43"
                                    },
                                    "id": 7467,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "948:20:43"
                                },
                                {
                                    "baseName": {
                                        "id": 7468,
                                        "name": "Ownable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 729,
                                        "src": "970:7:43"
                                    },
                                    "id": 7469,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "970:7:43"
                                },
                                {
                                    "baseName": {
                                        "id": 7470,
                                        "name": "Lockable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5437,
                                        "src": "979:8:43"
                                    },
                                    "id": 7471,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "979:8:43"
                                }
                            ],
                            "canonicalName": "BridgeAdmin",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 7465,
                                "nodeType": "StructuredDocumentation",
                                "src": "537:386:43",
                                "text": " @notice Administrative contract deployed on L1 that has implicit references to all L2 DepositBoxes.\n @dev This contract is\n responsible for making global variables accessible to BridgePool contracts, which house passive liquidity and\n enable relaying of L2 deposits.\n @dev The owner of this contract can also call permissioned functions on registered L2 DepositBoxes."
                            },
                            "fullyImplemented": true,
                            "id": 8226,
                            "linearizedBaseContracts": [
                                8226,
                                5437,
                                729,
                                1974,
                                9210
                            ],
                            "name": "BridgeAdmin",
                            "nameLocation": "933:11:43",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "baseFunctions": [
                                        9163
                                    ],
                                    "constant": false,
                                    "functionSelector": "b9a3c84c",
                                    "id": 7474,
                                    "mutability": "mutable",
                                    "name": "finder",
                                    "nameLocation": "1098:6:43",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": {
                                        "id": 7473,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "1089:8:43"
                                    },
                                    "scope": 8226,
                                    "src": "1074:30:43",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 7472,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1074:7:43",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "id": 7479,
                                    "mutability": "mutable",
                                    "name": "_depositContracts",
                                    "nameLocation": "1623:17:43",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8226,
                                    "src": "1571:69:43",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts)"
                                    },
                                    "typeName": {
                                        "id": 7478,
                                        "keyType": {
                                            "id": 7475,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1579:7:43",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1571:43:43",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                            "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts)"
                                        },
                                        "valueType": {
                                            "id": 7477,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 7476,
                                                "name": "DepositUtilityContracts",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 9168,
                                                "src": "1590:23:43"
                                            },
                                            "referencedDeclaration": 9168,
                                            "src": "1590:23:43",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage_ptr",
                                                "typeString": "struct BridgeAdminInterface.DepositUtilityContracts"
                                            }
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": false,
                                    "id": 7484,
                                    "mutability": "mutable",
                                    "name": "_whitelistedTokens",
                                    "nameLocation": "1879:18:43",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8226,
                                    "src": "1830:67:43",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L1TokenRelationships_$9183_storage_$",
                                        "typeString": "mapping(address => struct BridgeAdminInterface.L1TokenRelationships)"
                                    },
                                    "typeName": {
                                        "id": 7483,
                                        "keyType": {
                                            "id": 7480,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1838:7:43",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1830:40:43",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L1TokenRelationships_$9183_storage_$",
                                            "typeString": "mapping(address => struct BridgeAdminInterface.L1TokenRelationships)"
                                        },
                                        "valueType": {
                                            "id": 7482,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 7481,
                                                "name": "L1TokenRelationships",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 9183,
                                                "src": "1849:20:43"
                                            },
                                            "referencedDeclaration": 9183,
                                            "src": "1849:20:43",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage_ptr",
                                                "typeString": "struct BridgeAdminInterface.L1TokenRelationships"
                                            }
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "baseFunctions": [
                                        9199
                                    ],
                                    "constant": false,
                                    "functionSelector": "173684c5",
                                    "id": 7487,
                                    "mutability": "mutable",
                                    "name": "optimisticOracleLiveness",
                                    "nameLocation": "1983:24:43",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": {
                                        "id": 7486,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "1974:8:43"
                                    },
                                    "scope": 8226,
                                    "src": "1960:47:43",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                    },
                                    "typeName": {
                                        "id": 7485,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1960:6:43",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        9204
                                    ],
                                    "constant": false,
                                    "functionSelector": "c73a32c3",
                                    "id": 7490,
                                    "mutability": "mutable",
                                    "name": "proposerBondPct",
                                    "nameLocation": "2036:15:43",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": {
                                        "id": 7489,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "2027:8:43"
                                    },
                                    "scope": 8226,
                                    "src": "2013:38:43",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                    },
                                    "typeName": {
                                        "id": 7488,
                                        "name": "uint64",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2013:6:43",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        9209
                                    ],
                                    "constant": false,
                                    "functionSelector": "7998a1c4",
                                    "id": 7493,
                                    "mutability": "mutable",
                                    "name": "identifier",
                                    "nameLocation": "2081:10:43",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": {
                                        "id": 7492,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "2072:8:43"
                                    },
                                    "scope": 8226,
                                    "src": "2057:34:43",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 7491,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2057:7:43",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7509,
                                        "nodeType": "Block",
                                        "src": "2341:177:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7498,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "2390:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7500,
                                                                "indexExpression": {
                                                                    "id": 7499,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7495,
                                                                    "src": "2408:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "2390:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7501,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "depositContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9165,
                                                            "src": "2390:42:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7502,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "2446:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7504,
                                                                "indexExpression": {
                                                                    "id": 7503,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7495,
                                                                    "src": "2464:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "2446:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7505,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "messengerContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9167,
                                                            "src": "2446:44:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 7497,
                                                        "name": "_validateDepositContracts",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8182,
                                                        "src": "2351:25:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address) pure"
                                                        }
                                                    },
                                                    "id": 7506,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2351:149:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7507,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2351:149:43"
                                            },
                                            {
                                                "id": 7508,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "2510:1:43"
                                            }
                                        ]
                                    },
                                    "id": 7510,
                                    "name": "canRelay",
                                    "nameLocation": "2315:8:43",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 7496,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7495,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "2332:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7510,
                                                "src": "2324:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7494,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2324:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2323:17:43"
                                    },
                                    "src": "2306:212:43",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 7552,
                                        "nodeType": "Block",
                                        "src": "3131:267:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 7524,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 7522,
                                                        "name": "finder",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7474,
                                                        "src": "3141:6:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 7523,
                                                        "name": "_finder",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7513,
                                                        "src": "3150:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "3141:16:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 7525,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3141:16:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 7536,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 7529,
                                                                            "name": "_getCollateralWhitelist",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 8090,
                                                                            "src": "3183:23:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_AddressWhitelistInterface_$5658_$",
                                                                                "typeString": "function () view returns (contract AddressWhitelistInterface)"
                                                                            }
                                                                        },
                                                                        "id": 7530,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "3183:25:43",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_AddressWhitelistInterface_$5658",
                                                                            "typeString": "contract AddressWhitelistInterface"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_AddressWhitelistInterface_$5658",
                                                                            "typeString": "contract AddressWhitelistInterface"
                                                                        }
                                                                    ],
                                                                    "id": 7528,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "3175:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7527,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "3175:7:43",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 7531,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3175:34:43",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 7534,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "3221:1:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 7533,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "3213:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7532,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "3213:7:43",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 7535,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3213:10:43",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "3175:48:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e76616c69642066696e646572",
                                                            "id": 7537,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3225:16:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_1741ae564dcd62ca43ff80a87708d024ccb18df0851bd4c1d4c5d809256a7f46",
                                                                "typeString": "literal_string \"Invalid finder\""
                                                            },
                                                            "value": "Invalid finder"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_1741ae564dcd62ca43ff80a87708d024ccb18df0851bd4c1d4c5d809256a7f46",
                                                                "typeString": "literal_string \"Invalid finder\""
                                                            }
                                                        ],
                                                        "id": 7526,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3167:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7538,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3167:75:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7539,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3167:75:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7541,
                                                            "name": "_optimisticOracleLiveness",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7515,
                                                            "src": "3281:25:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        ],
                                                        "id": 7540,
                                                        "name": "_setOptimisticOracleLiveness",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8141,
                                                        "src": "3252:28:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint32_$returns$__$",
                                                            "typeString": "function (uint32)"
                                                        }
                                                    },
                                                    "id": 7542,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3252:55:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7543,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3252:55:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7545,
                                                            "name": "_proposerBondPct",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7517,
                                                            "src": "3337:16:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 7544,
                                                        "name": "_setProposerBondPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8155,
                                                        "src": "3317:19:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 7546,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3317:37:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7547,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3317:37:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7549,
                                                            "name": "_identifier",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7519,
                                                            "src": "3379:11:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 7548,
                                                        "name": "_setIdentifier",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8113,
                                                        "src": "3364:14:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                                                            "typeString": "function (bytes32)"
                                                        }
                                                    },
                                                    "id": 7550,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3364:27:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7551,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3364:27:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7511,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2524:455:43",
                                        "text": " @notice Construct the Bridge Admin\n @param _finder DVM finder to find other UMA ecosystem contracts.\n @param _optimisticOracleLiveness Timeout that all bridging actions from L2->L1 must wait for a OptimisticOracle response.\n @param _proposerBondPct Percentage of the bridged amount that a relayer must put up as a bond.\n @param _identifier Identifier used when querying the OO for a cross bridge transfer action."
                                    },
                                    "id": 7553,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7520,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7513,
                                                "mutability": "mutable",
                                                "name": "_finder",
                                                "nameLocation": "3013:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7553,
                                                "src": "3005:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7512,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3005:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7515,
                                                "mutability": "mutable",
                                                "name": "_optimisticOracleLiveness",
                                                "nameLocation": "3037:25:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7553,
                                                "src": "3030:32:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 7514,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3030:6:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7517,
                                                "mutability": "mutable",
                                                "name": "_proposerBondPct",
                                                "nameLocation": "3079:16:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7553,
                                                "src": "3072:23:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 7516,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3072:6:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7519,
                                                "mutability": "mutable",
                                                "name": "_identifier",
                                                "nameLocation": "3113:11:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7553,
                                                "src": "3105:19:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7518,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3105:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2995:135:43"
                                    },
                                    "returnParameters": {
                                        "id": 7521,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3131:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "2984:414:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7567,
                                        "nodeType": "Block",
                                        "src": "3853:44:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7564,
                                                            "name": "_identifier",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7556,
                                                            "src": "3878:11:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 7563,
                                                        "name": "_setIdentifier",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8113,
                                                        "src": "3863:14:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                                                            "typeString": "function (bytes32)"
                                                        }
                                                    },
                                                    "id": 7565,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3863:27:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7566,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3863:27:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7554,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3538:234:43",
                                        "text": " @notice Sets a price identifier to use for relayed deposits. BridgePools reads the identifier from this contract.\n @dev Can only be called by the current owner.\n @param _identifier New identifier to set."
                                    },
                                    "functionSelector": "00c99206",
                                    "id": 7568,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7559,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7558,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "3828:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3828:9:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7561,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7560,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "3838:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3838:14:43"
                                        }
                                    ],
                                    "name": "setIdentifier",
                                    "nameLocation": "3786:13:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7557,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7556,
                                                "mutability": "mutable",
                                                "name": "_identifier",
                                                "nameLocation": "3808:11:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7568,
                                                "src": "3800:19:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 7555,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3800:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3799:21:43"
                                    },
                                    "returnParameters": {
                                        "id": 7562,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3853:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "3777:120:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7582,
                                        "nodeType": "Block",
                                        "src": "4263:55:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7579,
                                                            "name": "liveness",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7571,
                                                            "src": "4302:8:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        ],
                                                        "id": 7578,
                                                        "name": "_setOptimisticOracleLiveness",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8141,
                                                        "src": "4273:28:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint32_$returns$__$",
                                                            "typeString": "function (uint32)"
                                                        }
                                                    },
                                                    "id": 7580,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4273:38:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7581,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4273:38:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7569,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3903:269:43",
                                        "text": " @notice Sets challenge period for relayed deposits. BridgePools will read this value from this contract.\n @dev Can only be called by the current owner.\n @param liveness New OptimisticOracle liveness period to set for relay price requests."
                                    },
                                    "functionSelector": "63e463f4",
                                    "id": 7583,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7574,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7573,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "4238:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4238:9:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7576,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7575,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "4248:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4248:14:43"
                                        }
                                    ],
                                    "name": "setOptimisticOracleLiveness",
                                    "nameLocation": "4186:27:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7572,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7571,
                                                "mutability": "mutable",
                                                "name": "liveness",
                                                "nameLocation": "4221:8:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7583,
                                                "src": "4214:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 7570,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4214:6:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4213:17:43"
                                    },
                                    "returnParameters": {
                                        "id": 7577,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4263:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "4177:141:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7597,
                                        "nodeType": "Block",
                                        "src": "4704:54:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7594,
                                                            "name": "_proposerBondPct",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7586,
                                                            "src": "4734:16:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 7593,
                                                        "name": "_setProposerBondPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8155,
                                                        "src": "4714:19:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 7595,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4714:37:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7596,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4714:37:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7584,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4324:290:43",
                                        "text": " @notice Sets challenge period for relayed deposits. BridgePools will read this value from this contract.\n @dev Can only be called by the current owner.\n @param _proposerBondPct New OptimisticOracle proposer bond % to set for relay price requests. 1e18 = 100%."
                                    },
                                    "functionSelector": "b0915850",
                                    "id": 7598,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7589,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7588,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "4679:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4679:9:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7591,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7590,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "4689:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4689:14:43"
                                        }
                                    ],
                                    "name": "setProposerBondPct",
                                    "nameLocation": "4628:18:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7587,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7586,
                                                "mutability": "mutable",
                                                "name": "_proposerBondPct",
                                                "nameLocation": "4654:16:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7598,
                                                "src": "4647:23:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 7585,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4647:6:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4646:25:43"
                                    },
                                    "returnParameters": {
                                        "id": 7592,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4704:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "4619:139:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7637,
                                        "nodeType": "Block",
                                        "src": "5295:301:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7613,
                                                            "name": "depositContract",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7603,
                                                            "src": "5331:15:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7614,
                                                            "name": "messengerContract",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7605,
                                                            "src": "5348:17:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 7612,
                                                        "name": "_validateDepositContracts",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8182,
                                                        "src": "5305:25:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address) pure"
                                                        }
                                                    },
                                                    "id": 7615,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5305:61:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7616,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5305:61:43"
                                            },
                                            {
                                                "expression": {
                                                    "id": 7622,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 7617,
                                                                "name": "_depositContracts",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7479,
                                                                "src": "5376:17:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                    "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                }
                                                            },
                                                            "id": 7619,
                                                            "indexExpression": {
                                                                "id": 7618,
                                                                "name": "chainId",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7601,
                                                                "src": "5394:7:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5376:26:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                            }
                                                        },
                                                        "id": 7620,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "depositContract",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 9165,
                                                        "src": "5376:42:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 7621,
                                                        "name": "depositContract",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7603,
                                                        "src": "5421:15:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "5376:60:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 7623,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5376:60:43"
                                            },
                                            {
                                                "expression": {
                                                    "id": 7629,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 7624,
                                                                "name": "_depositContracts",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7479,
                                                                "src": "5446:17:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                    "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                }
                                                            },
                                                            "id": 7626,
                                                            "indexExpression": {
                                                                "id": 7625,
                                                                "name": "chainId",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7601,
                                                                "src": "5464:7:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5446:26:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                            }
                                                        },
                                                        "id": 7627,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "messengerContract",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 9167,
                                                        "src": "5446:44:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 7628,
                                                        "name": "messengerContract",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7605,
                                                        "src": "5493:17:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "5446:64:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 7630,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5446:64:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 7632,
                                                            "name": "chainId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7601,
                                                            "src": "5545:7:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7633,
                                                            "name": "depositContract",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7603,
                                                            "src": "5554:15:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7634,
                                                            "name": "messengerContract",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7605,
                                                            "src": "5571:17:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 7631,
                                                        "name": "SetDepositContracts",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9103,
                                                        "src": "5525:19:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (uint256,address,address)"
                                                        }
                                                    },
                                                    "id": 7635,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5525:64:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7636,
                                                "nodeType": "EmitStatement",
                                                "src": "5520:69:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7599,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4764:367:43",
                                        "text": " @notice Associates the L2 deposit and L1 messenger helper addresses with an L2 network ID.\n @dev Only callable by the current owner.\n @param chainId L2 network ID to set addresses for.\n @param depositContract Address of L2 deposit contract.\n @param messengerContract Address of L1 helper contract that relays messages to L2."
                                    },
                                    "functionSelector": "aae3863e",
                                    "id": 7638,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7608,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7607,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "5270:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5270:9:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7610,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7609,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "5280:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5280:14:43"
                                        }
                                    ],
                                    "name": "setDepositContract",
                                    "nameLocation": "5145:18:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7606,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7601,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "5181:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7638,
                                                "src": "5173:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7600,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5173:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7603,
                                                "mutability": "mutable",
                                                "name": "depositContract",
                                                "nameLocation": "5206:15:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7638,
                                                "src": "5198:23:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7602,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5198:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7605,
                                                "mutability": "mutable",
                                                "name": "messengerContract",
                                                "nameLocation": "5239:17:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7638,
                                                "src": "5231:25:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7604,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5231:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5163:99:43"
                                    },
                                    "returnParameters": {
                                        "id": 7611,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5295:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "5136:460:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7678,
                                        "nodeType": "Block",
                                        "src": "6023:210:43",
                                        "statements": [
                                            {
                                                "body": {
                                                    "id": 7671,
                                                    "nodeType": "Block",
                                                    "src": "6080:82:43",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 7668,
                                                                        "name": "newAdmin",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7644,
                                                                        "src": "6142:8:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "baseExpression": {
                                                                                    "id": 7663,
                                                                                    "name": "bridgePools",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 7642,
                                                                                    "src": "6114:11:43",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                                        "typeString": "address[] memory"
                                                                                    }
                                                                                },
                                                                                "id": 7665,
                                                                                "indexExpression": {
                                                                                    "id": 7664,
                                                                                    "name": "i",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 7652,
                                                                                    "src": "6126:1:43",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint8",
                                                                                        "typeString": "uint8"
                                                                                    }
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "6114:14:43",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 7662,
                                                                            "name": "BridgePoolInterface",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 9235,
                                                                            "src": "6094:19:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_BridgePoolInterface_$9235_$",
                                                                                "typeString": "type(contract BridgePoolInterface)"
                                                                            }
                                                                        },
                                                                        "id": 7666,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "6094:35:43",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_BridgePoolInterface_$9235",
                                                                            "typeString": "contract BridgePoolInterface"
                                                                        }
                                                                    },
                                                                    "id": 7667,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "changeAdmin",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 9224,
                                                                    "src": "6094:47:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                                                        "typeString": "function (address) external"
                                                                    }
                                                                },
                                                                "id": 7669,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6094:57:43",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 7670,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "6094:57:43"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 7658,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 7655,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7652,
                                                        "src": "6051:1:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 7656,
                                                            "name": "bridgePools",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7642,
                                                            "src": "6055:11:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                "typeString": "address[] memory"
                                                            }
                                                        },
                                                        "id": 7657,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6055:18:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "6051:22:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 7672,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        7652
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 7652,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "6044:1:43",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 7672,
                                                            "src": "6038:7:43",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            },
                                                            "typeName": {
                                                                "id": 7651,
                                                                "name": "uint8",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "6038:5:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 7654,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 7653,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "6048:1:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "6038:11:43"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 7660,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "++",
                                                        "prefix": false,
                                                        "src": "6075:3:43",
                                                        "subExpression": {
                                                            "id": 7659,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7652,
                                                            "src": "6075:1:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint8",
                                                                "typeString": "uint8"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                        }
                                                    },
                                                    "id": 7661,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "6075:3:43"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "6033:129:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 7674,
                                                            "name": "bridgePools",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7642,
                                                            "src": "6204:11:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                "typeString": "address[] memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 7675,
                                                            "name": "newAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7644,
                                                            "src": "6217:8:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                                "typeString": "address[] memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 7673,
                                                        "name": "BridgePoolsAdminTransferred",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9152,
                                                        "src": "6176:27:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                                                            "typeString": "function (address[] memory,address)"
                                                        }
                                                    },
                                                    "id": 7676,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6176:50:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7677,
                                                "nodeType": "EmitStatement",
                                                "src": "6171:55:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7639,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5602:303:43",
                                        "text": " @notice Enables the current owner to transfer ownership of a set of owned bridge pools to a new owner.\n @dev Only callable by the current owner.\n @param bridgePools array of bridge pools to transfer ownership.\n @param newAdmin new admin contract to set ownership to."
                                    },
                                    "functionSelector": "50a7c20e",
                                    "id": 7679,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7647,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7646,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "5998:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5998:9:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7649,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7648,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "6008:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6008:14:43"
                                        }
                                    ],
                                    "name": "transferBridgePoolAdmin",
                                    "nameLocation": "5919:23:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7645,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7642,
                                                "mutability": "mutable",
                                                "name": "bridgePools",
                                                "nameLocation": "5960:11:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7679,
                                                "src": "5943:28:43",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 7640,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "5943:7:43",
                                                        "stateMutability": "nonpayable",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "id": 7641,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "5943:9:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                        "typeString": "address[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7644,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "5981:8:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7679,
                                                "src": "5973:16:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7643,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5973:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5942:48:43"
                                    },
                                    "returnParameters": {
                                        "id": 7650,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6023:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "5910:323:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7703,
                                        "nodeType": "Block",
                                        "src": "6742:137:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7695,
                                                            "name": "newLpFeeRate",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7684,
                                                            "src": "6806:12:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 7692,
                                                                    "name": "bridgePool",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7682,
                                                                    "src": "6772:10:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 7691,
                                                                "name": "BridgePoolInterface",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9235,
                                                                "src": "6752:19:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_BridgePoolInterface_$9235_$",
                                                                    "typeString": "type(contract BridgePoolInterface)"
                                                                }
                                                            },
                                                            "id": 7693,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6752:31:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_BridgePoolInterface_$9235",
                                                                "typeString": "contract BridgePoolInterface"
                                                            }
                                                        },
                                                        "id": 7694,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "setLpFeeRatePerSecond",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 9229,
                                                        "src": "6752:53:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64) external"
                                                        }
                                                    },
                                                    "id": 7696,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6752:67:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7697,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6752:67:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 7699,
                                                            "name": "bridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7682,
                                                            "src": "6847:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7700,
                                                            "name": "newLpFeeRate",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7684,
                                                            "src": "6859:12:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 7698,
                                                        "name": "SetLpFeeRate",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9158,
                                                        "src": "6834:12:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint64_$returns$__$",
                                                            "typeString": "function (address,uint64)"
                                                        }
                                                    },
                                                    "id": 7701,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6834:38:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7702,
                                                "nodeType": "EmitStatement",
                                                "src": "6829:43:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7680,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6239:394:43",
                                        "text": " @notice Enable the current owner to change the decay rate at which LP shares accumulate fees for a particular\n BridgePool. The higher this value, the faster LP shares realize pending fees.\n @dev Only callable by the current owner.\n @param bridgePool Bridge Pool to change LP fee rate for.\n @param newLpFeeRate The new rate to set for the `bridgePool`."
                                    },
                                    "functionSelector": "94bdf812",
                                    "id": 7704,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7687,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7686,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "6717:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6717:9:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7689,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7688,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "6727:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6727:14:43"
                                        }
                                    ],
                                    "name": "setLpFeeRatePerSecond",
                                    "nameLocation": "6647:21:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7685,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7682,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "6677:10:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7704,
                                                "src": "6669:18:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7681,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6669:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7684,
                                                "mutability": "mutable",
                                                "name": "newLpFeeRate",
                                                "nameLocation": "6696:12:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7704,
                                                "src": "6689:19:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 7683,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6689:6:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6668:41:43"
                                    },
                                    "returnParameters": {
                                        "id": 7690,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6742:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "6638:241:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7764,
                                        "nodeType": "Block",
                                        "src": "8062:473:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 7733,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 7728,
                                                                "name": "admin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7709,
                                                                "src": "8080:5:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 7731,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "8097:1:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 7730,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "8089:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7729,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "8089:7:43",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 7732,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8089:10:43",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "8080:19:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "41646d696e2063616e6e6f74206265207a65726f2061646472657373",
                                                            "id": 7734,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8101:30:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_10657174ead1fc3dc6d1d3f881b335facfc9095796fd15a08f7c17697cf4bb24",
                                                                "typeString": "literal_string \"Admin cannot be zero address\""
                                                            },
                                                            "value": "Admin cannot be zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_10657174ead1fc3dc6d1d3f881b335facfc9095796fd15a08f7c17697cf4bb24",
                                                                "typeString": "literal_string \"Admin cannot be zero address\""
                                                            }
                                                        ],
                                                        "id": 7727,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "8072:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7735,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8072:60:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7736,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8072:60:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7738,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "8169:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7740,
                                                                "indexExpression": {
                                                                    "id": 7739,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7707,
                                                                    "src": "8187:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "8169:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7741,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "messengerContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9167,
                                                            "src": "8169:44:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7742,
                                                            "name": "l1CallValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7711,
                                                            "src": "8227:11:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7743,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "8252:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7745,
                                                                "indexExpression": {
                                                                    "id": 7744,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7707,
                                                                    "src": "8270:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "8252:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7746,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "depositContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9165,
                                                            "src": "8252:42:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 7747,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "8308:3:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 7748,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "8308:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7749,
                                                            "name": "l2Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7713,
                                                            "src": "8332:5:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7750,
                                                            "name": "l2GasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7715,
                                                            "src": "8351:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7751,
                                                            "name": "maxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7717,
                                                            "src": "8375:17:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "73657443726f7373446f6d61696e41646d696e286164647265737329",
                                                                    "id": 7754,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "string",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8430:30:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_stringliteral_de7eba780b35e277557e3fe418edc169e02a9f04c7fec84c72eaac72cf2502ce",
                                                                        "typeString": "literal_string \"setCrossDomainAdmin(address)\""
                                                                    },
                                                                    "value": "setCrossDomainAdmin(address)"
                                                                },
                                                                {
                                                                    "id": 7755,
                                                                    "name": "admin",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7709,
                                                                    "src": "8462:5:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_stringliteral_de7eba780b35e277557e3fe418edc169e02a9f04c7fec84c72eaac72cf2502ce",
                                                                        "typeString": "literal_string \"setCrossDomainAdmin(address)\""
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 7752,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "8406:3:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 7753,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSignature",
                                                                "nodeType": "MemberAccess",
                                                                "src": "8406:23:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (string memory) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 7756,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "8406:62:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 7737,
                                                        "name": "_relayMessage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8225,
                                                        "src": "8142:13:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,uint256,address,address,uint256,uint256,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "id": 7757,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8142:336:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7758,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8142:336:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 7760,
                                                            "name": "chainId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7707,
                                                            "src": "8513:7:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7761,
                                                            "name": "admin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7709,
                                                            "src": "8522:5:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 7759,
                                                        "name": "SetCrossDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9109,
                                                        "src": "8493:19:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                                                            "typeString": "function (uint256,address)"
                                                        }
                                                    },
                                                    "id": 7762,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8493:35:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7763,
                                                "nodeType": "EmitStatement",
                                                "src": "8488:40:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7705,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7055:746:43",
                                        "text": " @notice Set new contract as the admin address in the L2 Deposit contract.\n @dev Only callable by the current owner.\n @dev msg.value must equal to l1CallValue.\n @param chainId L2 network ID where Deposit contract is deployed.\n @param admin New admin address to set on L2.\n @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\n depending on the L2 network that this contract sends a message to.\n @param l2Gas Gas limit to set for relayed message on L2.\n @param l2GasPrice Gas price bid to set for relayed message on L2.\n @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas."
                                    },
                                    "functionSelector": "0a69da28",
                                    "id": 7765,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7720,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7719,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "8019:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "8019:9:43"
                                        },
                                        {
                                            "arguments": [
                                                {
                                                    "id": 7722,
                                                    "name": "chainId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7707,
                                                    "src": "8038:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 7723,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7721,
                                                "name": "canRelay",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 7510,
                                                "src": "8029:8:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "8029:17:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7725,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7724,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "8047:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "8047:14:43"
                                        }
                                    ],
                                    "name": "setCrossDomainAdmin",
                                    "nameLocation": "7815:19:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7718,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7707,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "7852:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7765,
                                                "src": "7844:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7706,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7844:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7709,
                                                "mutability": "mutable",
                                                "name": "admin",
                                                "nameLocation": "7877:5:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7765,
                                                "src": "7869:13:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7708,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7869:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7711,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "7900:11:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7765,
                                                "src": "7892:19:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7710,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7892:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7713,
                                                "mutability": "mutable",
                                                "name": "l2Gas",
                                                "nameLocation": "7929:5:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7765,
                                                "src": "7921:13:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7712,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7921:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7715,
                                                "mutability": "mutable",
                                                "name": "l2GasPrice",
                                                "nameLocation": "7952:10:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7765,
                                                "src": "7944:18:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7714,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7944:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7717,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "7980:17:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7765,
                                                "src": "7972:25:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7716,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7972:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7834:169:43"
                                    },
                                    "returnParameters": {
                                        "id": 7726,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8062:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "7806:729:43",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7815,
                                        "nodeType": "Block",
                                        "src": "9590:440:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7789,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "9627:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7791,
                                                                "indexExpression": {
                                                                    "id": 7790,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7768,
                                                                    "src": "9645:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "9627:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7792,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "messengerContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9167,
                                                            "src": "9627:44:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7793,
                                                            "name": "l1CallValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7772,
                                                            "src": "9685:11:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7794,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "9710:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7796,
                                                                "indexExpression": {
                                                                    "id": 7795,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7768,
                                                                    "src": "9728:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "9710:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7797,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "depositContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9165,
                                                            "src": "9710:42:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 7798,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "9766:3:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 7799,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "9766:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7800,
                                                            "name": "l2Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7774,
                                                            "src": "9790:5:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7801,
                                                            "name": "l2GasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7776,
                                                            "src": "9809:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7802,
                                                            "name": "maxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7778,
                                                            "src": "9833:17:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "7365744d696e696d756d4272696467696e6744656c61792875696e74363429",
                                                                    "id": 7805,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "string",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "9888:33:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_stringliteral_2ec35b31acf0c5844c78a8053a3b1cf95656dfd974fb00236492fecc3d4e114c",
                                                                        "typeString": "literal_string \"setMinimumBridgingDelay(uint64)\""
                                                                    },
                                                                    "value": "setMinimumBridgingDelay(uint64)"
                                                                },
                                                                {
                                                                    "id": 7806,
                                                                    "name": "minimumBridgingDelay",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7770,
                                                                    "src": "9923:20:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_stringliteral_2ec35b31acf0c5844c78a8053a3b1cf95656dfd974fb00236492fecc3d4e114c",
                                                                        "typeString": "literal_string \"setMinimumBridgingDelay(uint64)\""
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 7803,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "9864:3:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 7804,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSignature",
                                                                "nodeType": "MemberAccess",
                                                                "src": "9864:23:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (string memory) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 7807,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "9864:80:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 7788,
                                                        "name": "_relayMessage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8225,
                                                        "src": "9600:13:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,uint256,address,address,uint256,uint256,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "id": 7808,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9600:354:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7809,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9600:354:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 7811,
                                                            "name": "chainId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7768,
                                                            "src": "9993:7:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7812,
                                                            "name": "minimumBridgingDelay",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7770,
                                                            "src": "10002:20:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 7810,
                                                        "name": "SetMinimumBridgingDelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9137,
                                                        "src": "9969:23:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint256,uint64)"
                                                        }
                                                    },
                                                    "id": 7813,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9969:54:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7814,
                                                "nodeType": "EmitStatement",
                                                "src": "9964:59:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7766,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8541:770:43",
                                        "text": " @notice Sets the minimum time between L2-->L1 token withdrawals in the L2 Deposit contract.\n @dev Only callable by the current owner.\n @dev msg.value must equal to l1CallValue.\n @param chainId L2 network ID where Deposit contract is deployed.\n @param minimumBridgingDelay the new minimum delay.\n @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\n depending on the L2 network that this contract sends a message to.\n @param l2Gas Gas limit to set for relayed message on L2.\n @param l2GasPrice Gas price bid to set for relayed message on L2.\n @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas."
                                    },
                                    "functionSelector": "7d726c75",
                                    "id": 7816,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7781,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7780,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "9547:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "9547:9:43"
                                        },
                                        {
                                            "arguments": [
                                                {
                                                    "id": 7783,
                                                    "name": "chainId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7768,
                                                    "src": "9566:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 7784,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7782,
                                                "name": "canRelay",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 7510,
                                                "src": "9557:8:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "9557:17:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7786,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7785,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "9575:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "9575:14:43"
                                        }
                                    ],
                                    "name": "setMinimumBridgingDelay",
                                    "nameLocation": "9325:23:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7779,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7768,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "9366:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7816,
                                                "src": "9358:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7767,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9358:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7770,
                                                "mutability": "mutable",
                                                "name": "minimumBridgingDelay",
                                                "nameLocation": "9390:20:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7816,
                                                "src": "9383:27:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 7769,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9383:6:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7772,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "9428:11:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7816,
                                                "src": "9420:19:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7771,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9420:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7774,
                                                "mutability": "mutable",
                                                "name": "l2Gas",
                                                "nameLocation": "9457:5:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7816,
                                                "src": "9449:13:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7773,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9449:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7776,
                                                "mutability": "mutable",
                                                "name": "l2GasPrice",
                                                "nameLocation": "9480:10:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7816,
                                                "src": "9472:18:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7775,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9472:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7778,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "9508:17:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7816,
                                                "src": "9500:25:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7777,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9500:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9348:183:43"
                                    },
                                    "returnParameters": {
                                        "id": 7787,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "9590:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "9316:714:43",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 7889,
                                        "nodeType": "Block",
                                        "src": "11288:754:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 7848,
                                                            "name": "depositsEnabled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7823,
                                                            "src": "11420:15:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "baseExpression": {
                                                                            "id": 7842,
                                                                            "name": "_whitelistedTokens",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7484,
                                                                            "src": "11363:18:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L1TokenRelationships_$9183_storage_$",
                                                                                "typeString": "mapping(address => struct BridgeAdminInterface.L1TokenRelationships storage ref)"
                                                                            }
                                                                        },
                                                                        "id": 7844,
                                                                        "indexExpression": {
                                                                            "id": 7843,
                                                                            "name": "l1Token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7821,
                                                                            "src": "11382:7:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "11363:27:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage",
                                                                            "typeString": "struct BridgeAdminInterface.L1TokenRelationships storage ref"
                                                                        }
                                                                    },
                                                                    "id": 7845,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "bridgePool",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 9182,
                                                                    "src": "11363:38:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 7841,
                                                                "name": "BridgePoolInterface",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9235,
                                                                "src": "11343:19:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_BridgePoolInterface_$9235_$",
                                                                    "typeString": "type(contract BridgePoolInterface)"
                                                                }
                                                            },
                                                            "id": 7846,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11343:59:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_BridgePoolInterface_$9235",
                                                                "typeString": "contract BridgePoolInterface"
                                                            }
                                                        },
                                                        "id": 7847,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "setRelaysEnabled",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 9234,
                                                        "src": "11343:76:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$",
                                                            "typeString": "function (bool) external"
                                                        }
                                                    },
                                                    "id": 7849,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11343:93:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7850,
                                                "nodeType": "ExpressionStatement",
                                                "src": "11343:93:43"
                                            },
                                            {
                                                "assignments": [
                                                    7852
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 7852,
                                                        "mutability": "mutable",
                                                        "name": "l2Token",
                                                        "nameLocation": "11547:7:43",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 7889,
                                                        "src": "11539:15:43",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 7851,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "11539:7:43",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 7859,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 7853,
                                                                "name": "_whitelistedTokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7484,
                                                                "src": "11557:18:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L1TokenRelationships_$9183_storage_$",
                                                                    "typeString": "mapping(address => struct BridgeAdminInterface.L1TokenRelationships storage ref)"
                                                                }
                                                            },
                                                            "id": 7855,
                                                            "indexExpression": {
                                                                "id": 7854,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7821,
                                                                "src": "11576:7:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "11557:27:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage",
                                                                "typeString": "struct BridgeAdminInterface.L1TokenRelationships storage ref"
                                                            }
                                                        },
                                                        "id": 7856,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "l2Tokens",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 9180,
                                                        "src": "11557:36:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                                            "typeString": "mapping(uint256 => address)"
                                                        }
                                                    },
                                                    "id": 7858,
                                                    "indexExpression": {
                                                        "id": 7857,
                                                        "name": "chainId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7819,
                                                        "src": "11594:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "11557:45:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "11539:63:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7861,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "11639:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7863,
                                                                "indexExpression": {
                                                                    "id": 7862,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7819,
                                                                    "src": "11657:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "11639:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7864,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "messengerContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9167,
                                                            "src": "11639:44:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7865,
                                                            "name": "l1CallValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7825,
                                                            "src": "11697:11:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7866,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "11722:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7868,
                                                                "indexExpression": {
                                                                    "id": 7867,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7819,
                                                                    "src": "11740:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "11722:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7869,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "depositContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9165,
                                                            "src": "11722:42:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 7870,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "11778:3:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 7871,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "11778:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7872,
                                                            "name": "l2Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7827,
                                                            "src": "11802:5:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7873,
                                                            "name": "l2GasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7829,
                                                            "src": "11821:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7874,
                                                            "name": "maxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7831,
                                                            "src": "11845:17:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "736574456e61626c654465706f7369747328616464726573732c626f6f6c29",
                                                                    "id": 7877,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "string",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "11900:33:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_stringliteral_563c7f6029981b01e71b757bbb437900438de1d2f41aee8d71e0dd32f41d5979",
                                                                        "typeString": "literal_string \"setEnableDeposits(address,bool)\""
                                                                    },
                                                                    "value": "setEnableDeposits(address,bool)"
                                                                },
                                                                {
                                                                    "id": 7878,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7852,
                                                                    "src": "11935:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 7879,
                                                                    "name": "depositsEnabled",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7823,
                                                                    "src": "11944:15:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_stringliteral_563c7f6029981b01e71b757bbb437900438de1d2f41aee8d71e0dd32f41d5979",
                                                                        "typeString": "literal_string \"setEnableDeposits(address,bool)\""
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 7875,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "11876:3:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 7876,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSignature",
                                                                "nodeType": "MemberAccess",
                                                                "src": "11876:23:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (string memory) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 7880,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11876:84:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 7860,
                                                        "name": "_relayMessage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8225,
                                                        "src": "11612:13:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,uint256,address,address,uint256,uint256,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "id": 7881,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11612:358:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7882,
                                                "nodeType": "ExpressionStatement",
                                                "src": "11612:358:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 7884,
                                                            "name": "chainId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7819,
                                                            "src": "12001:7:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7885,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7852,
                                                            "src": "12010:7:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7886,
                                                            "name": "depositsEnabled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7823,
                                                            "src": "12019:15:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "id": 7883,
                                                        "name": "DepositsEnabled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9145,
                                                        "src": "11985:15:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                                            "typeString": "function (uint256,address,bool)"
                                                        }
                                                    },
                                                    "id": 7887,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11985:50:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7888,
                                                "nodeType": "EmitStatement",
                                                "src": "11980:55:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7817,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10036:952:43",
                                        "text": " @notice Owner can pause/unpause L2 deposits for a tokens.\n @dev Only callable by Owner of this contract. Will set the same setting in the L2 Deposit contract via the cross\n domain messenger.\n @dev msg.value must equal to l1CallValue.\n @param chainId L2 network ID where Deposit contract is deployed.\n @param l1Token address of L1 Token to enable/disable deposits and relays for.\n @param depositsEnabled bool to set if the deposit box should accept/reject deposits.\n @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\n depending on the L2 network that this contract sends a message to.\n @param l2Gas Gas limit to set for relayed message on L2.\n @param l2GasPrice Gas price bid to set for relayed message on L2.\n @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas."
                                    },
                                    "functionSelector": "bfdb3882",
                                    "id": 7890,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7834,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7833,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "11245:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "11245:9:43"
                                        },
                                        {
                                            "arguments": [
                                                {
                                                    "id": 7836,
                                                    "name": "chainId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7819,
                                                    "src": "11264:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 7837,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7835,
                                                "name": "canRelay",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 7510,
                                                "src": "11255:8:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "11255:17:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7839,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7838,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "11273:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "11273:14:43"
                                        }
                                    ],
                                    "name": "setEnableDepositsAndRelays",
                                    "nameLocation": "11002:26:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7832,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7819,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "11046:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7890,
                                                "src": "11038:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7818,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11038:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7821,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "11071:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7890,
                                                "src": "11063:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7820,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11063:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7823,
                                                "mutability": "mutable",
                                                "name": "depositsEnabled",
                                                "nameLocation": "11093:15:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7890,
                                                "src": "11088:20:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 7822,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11088:4:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7825,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "11126:11:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7890,
                                                "src": "11118:19:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7824,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11118:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7827,
                                                "mutability": "mutable",
                                                "name": "l2Gas",
                                                "nameLocation": "11155:5:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7890,
                                                "src": "11147:13:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7826,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11147:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7829,
                                                "mutability": "mutable",
                                                "name": "l2GasPrice",
                                                "nameLocation": "11178:10:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7890,
                                                "src": "11170:18:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7828,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11170:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7831,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "11206:17:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 7890,
                                                "src": "11198:25:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7830,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11198:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11028:201:43"
                                    },
                                    "returnParameters": {
                                        "id": 7840,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "11288:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "10993:1049:43",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8016,
                                        "nodeType": "Block",
                                        "src": "13816:1179:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 7923,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 7918,
                                                                "name": "bridgePool",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7899,
                                                                "src": "13834:10:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 7921,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "13856:1:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 7920,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "13848:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7919,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "13848:7:43",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 7922,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "13848:10:43",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "13834:24:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "427269646765506f6f6c2063616e6e6f74206265207a65726f2061646472657373",
                                                            "id": 7924,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13860:35:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_eb80a7fbdea4724cc71e9cf3e76877c08c64fe97e0679eed59f1a4b8b2232a61",
                                                                "typeString": "literal_string \"BridgePool cannot be zero address\""
                                                            },
                                                            "value": "BridgePool cannot be zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_eb80a7fbdea4724cc71e9cf3e76877c08c64fe97e0679eed59f1a4b8b2232a61",
                                                                "typeString": "literal_string \"BridgePool cannot be zero address\""
                                                            }
                                                        ],
                                                        "id": 7917,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "13826:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7925,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13826:70:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7926,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13826:70:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 7933,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 7928,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7897,
                                                                "src": "13914:7:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 7931,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "13933:1:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 7930,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "13925:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7929,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "13925:7:43",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 7932,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "13925:10:43",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "13914:21:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4c3220746f6b656e2063616e6e6f74206265207a65726f2061646472657373",
                                                            "id": 7934,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13937:33:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_fdfd700e2e8a448a738d802d07d7a1972ac9ed34bd650165b21b4c3c664fc4ee",
                                                                "typeString": "literal_string \"L2 token cannot be zero address\""
                                                            },
                                                            "value": "L2 token cannot be zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_fdfd700e2e8a448a738d802d07d7a1972ac9ed34bd650165b21b4c3c664fc4ee",
                                                                "typeString": "literal_string \"L2 token cannot be zero address\""
                                                            }
                                                        ],
                                                        "id": 7927,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "13906:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7935,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13906:65:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7936,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13906:65:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 7943,
                                                                            "name": "l1Token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7895,
                                                                            "src": "14037:7:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "id": 7942,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "14029:7:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 7941,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "14029:7:43",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 7944,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "14029:16:43",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "id": 7938,
                                                                        "name": "_getCollateralWhitelist",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8090,
                                                                        "src": "13989:23:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_AddressWhitelistInterface_$5658_$",
                                                                            "typeString": "function () view returns (contract AddressWhitelistInterface)"
                                                                        }
                                                                    },
                                                                    "id": 7939,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "13989:25:43",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_AddressWhitelistInterface_$5658",
                                                                        "typeString": "contract AddressWhitelistInterface"
                                                                    }
                                                                },
                                                                "id": 7940,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "isOnWhitelist",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5651,
                                                                "src": "13989:39:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view external returns (bool)"
                                                                }
                                                            },
                                                            "id": 7945,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13989:57:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4c31546f6b656e20746f6b656e206e6f742077686974656c6973746564",
                                                            "id": 7946,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "14048:31:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_55d4ad2cf4443e2af59cf6b21001e8b7a5ae06c9a5e8b123d0770ecd036b39c7",
                                                                "typeString": "literal_string \"L1Token token not whitelisted\""
                                                            },
                                                            "value": "L1Token token not whitelisted"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_55d4ad2cf4443e2af59cf6b21001e8b7a5ae06c9a5e8b123d0770ecd036b39c7",
                                                                "typeString": "literal_string \"L1Token token not whitelisted\""
                                                            }
                                                        ],
                                                        "id": 7937,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "13981:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7947,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13981:99:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7948,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13981:99:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 7959,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "expression": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "id": 7953,
                                                                                        "name": "bridgePool",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 7899,
                                                                                        "src": "14127:10:43",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "id": 7952,
                                                                                    "name": "BridgePoolInterface",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 9235,
                                                                                    "src": "14107:19:43",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_contract$_BridgePoolInterface_$9235_$",
                                                                                        "typeString": "type(contract BridgePoolInterface)"
                                                                                    }
                                                                                },
                                                                                "id": 7954,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "typeConversion",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "14107:31:43",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_contract$_BridgePoolInterface_$9235",
                                                                                    "typeString": "contract BridgePoolInterface"
                                                                                }
                                                                            },
                                                                            "id": 7955,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "l1Token",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 9219,
                                                                            "src": "14107:39:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IERC20_$1406_$",
                                                                                "typeString": "function () view external returns (contract IERC20)"
                                                                            }
                                                                        },
                                                                        "id": 7956,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "14107:41:43",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    ],
                                                                    "id": 7951,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "14099:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 7950,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "14099:7:43",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 7957,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "14099:50:43",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 7958,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7895,
                                                                "src": "14153:7:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "14099:61:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "42726964676520706f6f6c2068617320646966666572656e74204c3120746f6b656e",
                                                            "id": 7960,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "14162:36:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b53919485aae24a1d227ecd028e0dd4b92a07ce24a3b93dcdce8aeee65148128",
                                                                "typeString": "literal_string \"Bridge pool has different L1 token\""
                                                            },
                                                            "value": "Bridge pool has different L1 token"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b53919485aae24a1d227ecd028e0dd4b92a07ce24a3b93dcdce8aeee65148128",
                                                                "typeString": "literal_string \"Bridge pool has different L1 token\""
                                                            }
                                                        ],
                                                        "id": 7949,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "14091:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 7961,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14091:108:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 7962,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14091:108:43"
                                            },
                                            {
                                                "id": 7984,
                                                "nodeType": "Block",
                                                "src": "14268:272:43",
                                                "statements": [
                                                    {
                                                        "assignments": [
                                                            7965
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 7965,
                                                                "mutability": "mutable",
                                                                "name": "l1TokenRelationships",
                                                                "nameLocation": "14311:20:43",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 7984,
                                                                "src": "14282:49:43",
                                                                "stateVariable": false,
                                                                "storageLocation": "storage",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage_ptr",
                                                                    "typeString": "struct BridgeAdminInterface.L1TokenRelationships"
                                                                },
                                                                "typeName": {
                                                                    "id": 7964,
                                                                    "nodeType": "UserDefinedTypeName",
                                                                    "pathNode": {
                                                                        "id": 7963,
                                                                        "name": "L1TokenRelationships",
                                                                        "nodeType": "IdentifierPath",
                                                                        "referencedDeclaration": 9183,
                                                                        "src": "14282:20:43"
                                                                    },
                                                                    "referencedDeclaration": 9183,
                                                                    "src": "14282:20:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage_ptr",
                                                                        "typeString": "struct BridgeAdminInterface.L1TokenRelationships"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 7969,
                                                        "initialValue": {
                                                            "baseExpression": {
                                                                "id": 7966,
                                                                "name": "_whitelistedTokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7484,
                                                                "src": "14334:18:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L1TokenRelationships_$9183_storage_$",
                                                                    "typeString": "mapping(address => struct BridgeAdminInterface.L1TokenRelationships storage ref)"
                                                                }
                                                            },
                                                            "id": 7968,
                                                            "indexExpression": {
                                                                "id": 7967,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7895,
                                                                "src": "14353:7:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "14334:27:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage",
                                                                "typeString": "struct BridgeAdminInterface.L1TokenRelationships storage ref"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "14282:79:43"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 7976,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "baseExpression": {
                                                                    "expression": {
                                                                        "id": 7970,
                                                                        "name": "l1TokenRelationships",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7965,
                                                                        "src": "14375:20:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage_ptr",
                                                                            "typeString": "struct BridgeAdminInterface.L1TokenRelationships storage pointer"
                                                                        }
                                                                    },
                                                                    "id": 7973,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "l2Tokens",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 9180,
                                                                    "src": "14375:29:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                                                        "typeString": "mapping(uint256 => address)"
                                                                    }
                                                                },
                                                                "id": 7974,
                                                                "indexExpression": {
                                                                    "id": 7972,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7893,
                                                                    "src": "14405:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "nodeType": "IndexAccess",
                                                                "src": "14375:38:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "id": 7975,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7897,
                                                                "src": "14416:7:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "14375:48:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 7977,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "14375:48:43"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 7982,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "expression": {
                                                                    "id": 7978,
                                                                    "name": "l1TokenRelationships",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7965,
                                                                    "src": "14485:20:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage_ptr",
                                                                        "typeString": "struct BridgeAdminInterface.L1TokenRelationships storage pointer"
                                                                    }
                                                                },
                                                                "id": 7980,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "memberName": "bridgePool",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 9182,
                                                                "src": "14485:31:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "id": 7981,
                                                                "name": "bridgePool",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7899,
                                                                "src": "14519:10:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "14485:44:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 7983,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "14485:44:43"
                                                    }
                                                ]
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7986,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "14577:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7988,
                                                                "indexExpression": {
                                                                    "id": 7987,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7893,
                                                                    "src": "14595:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "14577:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7989,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "messengerContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9167,
                                                            "src": "14577:44:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7990,
                                                            "name": "l1CallValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7901,
                                                            "src": "14635:11:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 7991,
                                                                    "name": "_depositContracts",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7479,
                                                                    "src": "14660:17:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                                        "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                                    }
                                                                },
                                                                "id": 7993,
                                                                "indexExpression": {
                                                                    "id": 7992,
                                                                    "name": "chainId",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7893,
                                                                    "src": "14678:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "14660:26:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                                }
                                                            },
                                                            "id": 7994,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "depositContract",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9165,
                                                            "src": "14660:42:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 7995,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "14716:3:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 7996,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "14716:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 7997,
                                                            "name": "l2Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7903,
                                                            "src": "14740:5:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7998,
                                                            "name": "l2GasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7905,
                                                            "src": "14759:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 7999,
                                                            "name": "maxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7907,
                                                            "src": "14783:17:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "77686974656c697374546f6b656e28616464726573732c616464726573732c6164647265737329",
                                                                    "id": 8002,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "string",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "14838:41:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_stringliteral_4dedca287629e270e92a6ae9287908995ec1dda884380e6fdc39d97f169f1e1a",
                                                                        "typeString": "literal_string \"whitelistToken(address,address,address)\""
                                                                    },
                                                                    "value": "whitelistToken(address,address,address)"
                                                                },
                                                                {
                                                                    "id": 8003,
                                                                    "name": "l1Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7895,
                                                                    "src": "14881:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 8004,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7897,
                                                                    "src": "14890:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 8005,
                                                                    "name": "bridgePool",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7899,
                                                                    "src": "14899:10:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_stringliteral_4dedca287629e270e92a6ae9287908995ec1dda884380e6fdc39d97f169f1e1a",
                                                                        "typeString": "literal_string \"whitelistToken(address,address,address)\""
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 8000,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "14814:3:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 8001,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSignature",
                                                                "nodeType": "MemberAccess",
                                                                "src": "14814:23:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (string memory) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 8006,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14814:96:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 7985,
                                                        "name": "_relayMessage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8225,
                                                        "src": "14550:13:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,uint256,address,address,uint256,uint256,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "id": 8007,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14550:370:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8008,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14550:370:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8010,
                                                            "name": "chainId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7893,
                                                            "src": "14950:7:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8011,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7895,
                                                            "src": "14959:7:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8012,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7897,
                                                            "src": "14968:7:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8013,
                                                            "name": "bridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7899,
                                                            "src": "14977:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8009,
                                                        "name": "WhitelistToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9131,
                                                        "src": "14935:14:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (uint256,address,address,address)"
                                                        }
                                                    },
                                                    "id": 8014,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14935:53:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8015,
                                                "nodeType": "EmitStatement",
                                                "src": "14930:58:43"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 7891,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "12048:1457:43",
                                        "text": " @notice Privileged account can associate a whitelisted token with its linked token address on L2. The linked L2\n token can thereafter be deposited into the Deposit contract on L2 and relayed via the BridgePool contract.\n @dev msg.value must equal to l1CallValue.\n @dev This method is also used to to update the address of the bridgePool within a BridgeDepositBox through the\n re-whitelisting of a previously whitelisted token to update the address of the bridge pool in the deposit box.\n @dev Only callable by Owner of this contract. Also initiates a cross-chain call to the L2 Deposit contract to\n whitelist the token mapping.\n @param chainId L2 network ID where Deposit contract is deployed.\n @param l1Token Address of L1 token that can be used to relay L2 token deposits.\n @param l2Token Address of L2 token whose deposits are fulfilled by `l1Token`.\n @param bridgePool Address of BridgePool which manages liquidity to fulfill L2-->L1 relays.\n @param l1CallValue Amount of ETH to include in msg.value. Used to pay for L2 fees, but its exact usage varies\n depending on the L2 network that this contract sends a message to.\n @param l2Gas Gas limit to set for relayed message on L2.\n @param l2GasPrice Gas price bid to set for relayed message on L2.\n @param maxSubmissionCost: Arbitrum only: fee deducted from L2 sender's balance to pay for L2 gas."
                                    },
                                    "functionSelector": "93444127",
                                    "id": 8017,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 7910,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7909,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "13773:9:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "13773:9:43"
                                        },
                                        {
                                            "arguments": [
                                                {
                                                    "id": 7912,
                                                    "name": "chainId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7893,
                                                    "src": "13792:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "id": 7913,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7911,
                                                "name": "canRelay",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 7510,
                                                "src": "13783:8:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "13783:17:43"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 7915,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 7914,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "13801:12:43"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "13801:14:43"
                                        }
                                    ],
                                    "name": "whitelistToken",
                                    "nameLocation": "13519:14:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 7908,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 7893,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "13551:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8017,
                                                "src": "13543:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7892,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13543:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7895,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "13576:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8017,
                                                "src": "13568:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7894,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13568:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7897,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "13601:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8017,
                                                "src": "13593:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7896,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13593:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7899,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "13626:10:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8017,
                                                "src": "13618:18:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 7898,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13618:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7901,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "13654:11:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8017,
                                                "src": "13646:19:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7900,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13646:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7903,
                                                "mutability": "mutable",
                                                "name": "l2Gas",
                                                "nameLocation": "13683:5:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8017,
                                                "src": "13675:13:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7902,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13675:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7905,
                                                "mutability": "mutable",
                                                "name": "l2GasPrice",
                                                "nameLocation": "13706:10:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8017,
                                                "src": "13698:18:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7904,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13698:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 7907,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "13734:17:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8017,
                                                "src": "13726:25:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 7906,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13726:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13533:224:43"
                                    },
                                    "returnParameters": {
                                        "id": 7916,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "13816:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "13510:1485:43",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        9176
                                    ],
                                    "body": {
                                        "id": 8030,
                                        "nodeType": "Block",
                                        "src": "15241:50:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "id": 8026,
                                                        "name": "_depositContracts",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7479,
                                                        "src": "15258:17:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_DepositUtilityContracts_$9168_storage_$",
                                                            "typeString": "mapping(uint256 => struct BridgeAdminInterface.DepositUtilityContracts storage ref)"
                                                        }
                                                    },
                                                    "id": 8028,
                                                    "indexExpression": {
                                                        "id": 8027,
                                                        "name": "chainId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8019,
                                                        "src": "15276:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "15258:26:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage",
                                                        "typeString": "struct BridgeAdminInterface.DepositUtilityContracts storage ref"
                                                    }
                                                },
                                                "functionReturnParameters": 8025,
                                                "id": 8029,
                                                "nodeType": "Return",
                                                "src": "15251:33:43"
                                            }
                                        ]
                                    },
                                    "functionSelector": "7eb4fa73",
                                    "id": 8031,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "depositContracts",
                                    "nameLocation": "15143:16:43",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 8021,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "15191:8:43"
                                    },
                                    "parameters": {
                                        "id": 8020,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8019,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "15168:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8031,
                                                "src": "15160:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8018,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15160:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15159:17:43"
                                    },
                                    "returnParameters": {
                                        "id": 8025,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8024,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8031,
                                                "src": "15209:30:43",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_memory_ptr",
                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts"
                                                },
                                                "typeName": {
                                                    "id": 8023,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 8022,
                                                        "name": "DepositUtilityContracts",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 9168,
                                                        "src": "15209:23:43"
                                                    },
                                                    "referencedDeclaration": 9168,
                                                    "src": "15209:23:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage_ptr",
                                                        "typeString": "struct BridgeAdminInterface.DepositUtilityContracts"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15208:32:43"
                                    },
                                    "scope": 8226,
                                    "src": "15134:157:43",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "baseFunctions": [
                                        9194
                                    ],
                                    "body": {
                                        "id": 8055,
                                        "nodeType": "Block",
                                        "src": "15463:111:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "components": [
                                                        {
                                                            "baseExpression": {
                                                                "expression": {
                                                                    "baseExpression": {
                                                                        "id": 8043,
                                                                        "name": "_whitelistedTokens",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7484,
                                                                        "src": "15481:18:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L1TokenRelationships_$9183_storage_$",
                                                                            "typeString": "mapping(address => struct BridgeAdminInterface.L1TokenRelationships storage ref)"
                                                                        }
                                                                    },
                                                                    "id": 8045,
                                                                    "indexExpression": {
                                                                        "id": 8044,
                                                                        "name": "l1Token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8033,
                                                                        "src": "15500:7:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "15481:27:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage",
                                                                        "typeString": "struct BridgeAdminInterface.L1TokenRelationships storage ref"
                                                                    }
                                                                },
                                                                "id": 8046,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "l2Tokens",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 9180,
                                                                "src": "15481:36:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                                                    "typeString": "mapping(uint256 => address)"
                                                                }
                                                            },
                                                            "id": 8048,
                                                            "indexExpression": {
                                                                "id": 8047,
                                                                "name": "chainId",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8035,
                                                                "src": "15518:7:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15481:45:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 8049,
                                                                    "name": "_whitelistedTokens",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7484,
                                                                    "src": "15528:18:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L1TokenRelationships_$9183_storage_$",
                                                                        "typeString": "mapping(address => struct BridgeAdminInterface.L1TokenRelationships storage ref)"
                                                                    }
                                                                },
                                                                "id": 8051,
                                                                "indexExpression": {
                                                                    "id": 8050,
                                                                    "name": "l1Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8033,
                                                                    "src": "15547:7:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15528:27:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L1TokenRelationships_$9183_storage",
                                                                    "typeString": "struct BridgeAdminInterface.L1TokenRelationships storage ref"
                                                                }
                                                            },
                                                            "id": 8052,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "bridgePool",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9182,
                                                            "src": "15528:38:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "id": 8053,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "15480:87:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                                        "typeString": "tuple(address,address)"
                                                    }
                                                },
                                                "functionReturnParameters": 8042,
                                                "id": 8054,
                                                "nodeType": "Return",
                                                "src": "15473:94:43"
                                            }
                                        ]
                                    },
                                    "functionSelector": "bf06c19a",
                                    "id": 8056,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "whitelistedTokens",
                                    "nameLocation": "15306:17:43",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 8037,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "15396:8:43"
                                    },
                                    "parameters": {
                                        "id": 8036,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8033,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "15332:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8056,
                                                "src": "15324:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8032,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15324:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8035,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "15349:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8056,
                                                "src": "15341:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8034,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15341:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15323:34:43"
                                    },
                                    "returnParameters": {
                                        "id": 8042,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8039,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "15430:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8056,
                                                "src": "15422:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8038,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15422:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8041,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "15447:10:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8056,
                                                "src": "15439:18:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8040,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15439:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15421:37:43"
                                    },
                                    "scope": 8226,
                                    "src": "15297:277:43",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 8072,
                                        "nodeType": "Block",
                                        "src": "15801:182:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 8067,
                                                                        "name": "OracleInterfaces",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 10180,
                                                                        "src": "15925:16:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_OracleInterfaces_$10180_$",
                                                                            "typeString": "type(library OracleInterfaces)"
                                                                        }
                                                                    },
                                                                    "id": 8068,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "IdentifierWhitelist",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 10155,
                                                                    "src": "15925:36:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 8064,
                                                                            "name": "finder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7474,
                                                                            "src": "15892:6:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "id": 8063,
                                                                        "name": "FinderInterface",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 10205,
                                                                        "src": "15876:15:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_FinderInterface_$10205_$",
                                                                            "typeString": "type(contract FinderInterface)"
                                                                        }
                                                                    },
                                                                    "id": 8065,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "15876:23:43",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_FinderInterface_$10205",
                                                                        "typeString": "contract FinderInterface"
                                                                    }
                                                                },
                                                                "id": 8066,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "getImplementationAddress",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 10204,
                                                                "src": "15876:48:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                                                    "typeString": "function (bytes32) view external returns (address)"
                                                                }
                                                            },
                                                            "id": 8069,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "15876:86:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8062,
                                                        "name": "IdentifierWhitelistInterface",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10229,
                                                        "src": "15830:28:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IdentifierWhitelistInterface_$10229_$",
                                                            "typeString": "type(contract IdentifierWhitelistInterface)"
                                                        }
                                                    },
                                                    "id": 8070,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15830:146:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IdentifierWhitelistInterface_$10229",
                                                        "typeString": "contract IdentifierWhitelistInterface"
                                                    }
                                                },
                                                "functionReturnParameters": 8061,
                                                "id": 8071,
                                                "nodeType": "Return",
                                                "src": "15811:165:43"
                                            }
                                        ]
                                    },
                                    "id": 8073,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getIdentifierWhitelist",
                                    "nameLocation": "15723:23:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8057,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "15746:2:43"
                                    },
                                    "returnParameters": {
                                        "id": 8061,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8060,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8073,
                                                "src": "15771:28:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IdentifierWhitelistInterface_$10229",
                                                    "typeString": "contract IdentifierWhitelistInterface"
                                                },
                                                "typeName": {
                                                    "id": 8059,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 8058,
                                                        "name": "IdentifierWhitelistInterface",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10229,
                                                        "src": "15771:28:43"
                                                    },
                                                    "referencedDeclaration": 10229,
                                                    "src": "15771:28:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IdentifierWhitelistInterface_$10229",
                                                        "typeString": "contract IdentifierWhitelistInterface"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15770:30:43"
                                    },
                                    "scope": 8226,
                                    "src": "15714:269:43",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 8089,
                                        "nodeType": "Block",
                                        "src": "16073:179:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 8084,
                                                                        "name": "OracleInterfaces",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 10180,
                                                                        "src": "16194:16:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_OracleInterfaces_$10180_$",
                                                                            "typeString": "type(library OracleInterfaces)"
                                                                        }
                                                                    },
                                                                    "id": 8085,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "CollateralWhitelist",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 10167,
                                                                    "src": "16194:36:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 8081,
                                                                            "name": "finder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7474,
                                                                            "src": "16161:6:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "id": 8080,
                                                                        "name": "FinderInterface",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 10205,
                                                                        "src": "16145:15:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_FinderInterface_$10205_$",
                                                                            "typeString": "type(contract FinderInterface)"
                                                                        }
                                                                    },
                                                                    "id": 8082,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "16145:23:43",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_FinderInterface_$10205",
                                                                        "typeString": "contract FinderInterface"
                                                                    }
                                                                },
                                                                "id": 8083,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "getImplementationAddress",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 10204,
                                                                "src": "16145:48:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                                                    "typeString": "function (bytes32) view external returns (address)"
                                                                }
                                                            },
                                                            "id": 8086,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "16145:86:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8079,
                                                        "name": "AddressWhitelistInterface",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5658,
                                                        "src": "16102:25:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_AddressWhitelistInterface_$5658_$",
                                                            "typeString": "type(contract AddressWhitelistInterface)"
                                                        }
                                                    },
                                                    "id": 8087,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16102:143:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_AddressWhitelistInterface_$5658",
                                                        "typeString": "contract AddressWhitelistInterface"
                                                    }
                                                },
                                                "functionReturnParameters": 8078,
                                                "id": 8088,
                                                "nodeType": "Return",
                                                "src": "16083:162:43"
                                            }
                                        ]
                                    },
                                    "id": 8090,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getCollateralWhitelist",
                                    "nameLocation": "15998:23:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8074,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "16021:2:43"
                                    },
                                    "returnParameters": {
                                        "id": 8078,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8077,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8090,
                                                "src": "16046:25:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_AddressWhitelistInterface_$5658",
                                                    "typeString": "contract AddressWhitelistInterface"
                                                },
                                                "typeName": {
                                                    "id": 8076,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 8075,
                                                        "name": "AddressWhitelistInterface",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 5658,
                                                        "src": "16046:25:43"
                                                    },
                                                    "referencedDeclaration": 5658,
                                                    "src": "16046:25:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_AddressWhitelistInterface_$5658",
                                                        "typeString": "contract AddressWhitelistInterface"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16045:27:43"
                                    },
                                    "scope": 8226,
                                    "src": "15989:263:43",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 8112,
                                        "nodeType": "Block",
                                        "src": "16311:194:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 8099,
                                                                    "name": "_identifier",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8092,
                                                                    "src": "16377:11:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "id": 8096,
                                                                        "name": "_getIdentifierWhitelist",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8073,
                                                                        "src": "16329:23:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_contract$_IdentifierWhitelistInterface_$10229_$",
                                                                            "typeString": "function () view returns (contract IdentifierWhitelistInterface)"
                                                                        }
                                                                    },
                                                                    "id": 8097,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "16329:25:43",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IdentifierWhitelistInterface_$10229",
                                                                        "typeString": "contract IdentifierWhitelistInterface"
                                                                    }
                                                                },
                                                                "id": 8098,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "isIdentifierSupported",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 10228,
                                                                "src": "16329:47:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bool_$",
                                                                    "typeString": "function (bytes32) view external returns (bool)"
                                                                }
                                                            },
                                                            "id": 8100,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "16329:60:43",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4964656e746966696572206e6f742072656769737465726564",
                                                            "id": 8101,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16391:27:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_56769370f57b03c035ba3a336601bde3fa507551f184c54555b7d50430f62caf",
                                                                "typeString": "literal_string \"Identifier not registered\""
                                                            },
                                                            "value": "Identifier not registered"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_56769370f57b03c035ba3a336601bde3fa507551f184c54555b7d50430f62caf",
                                                                "typeString": "literal_string \"Identifier not registered\""
                                                            }
                                                        ],
                                                        "id": 8095,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "16321:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8102,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16321:98:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8103,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16321:98:43"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8106,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8104,
                                                        "name": "identifier",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7493,
                                                        "src": "16429:10:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8105,
                                                        "name": "_identifier",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8092,
                                                        "src": "16442:11:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "src": "16429:24:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "id": 8107,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16429:24:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8109,
                                                            "name": "identifier",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7493,
                                                            "src": "16487:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 8108,
                                                        "name": "SetRelayIdentifier",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9113,
                                                        "src": "16468:18:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
                                                            "typeString": "function (bytes32)"
                                                        }
                                                    },
                                                    "id": 8110,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16468:30:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8111,
                                                "nodeType": "EmitStatement",
                                                "src": "16463:35:43"
                                            }
                                        ]
                                    },
                                    "id": 8113,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setIdentifier",
                                    "nameLocation": "16267:14:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8093,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8092,
                                                "mutability": "mutable",
                                                "name": "_identifier",
                                                "nameLocation": "16290:11:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8113,
                                                "src": "16282:19:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 8091,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16282:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16281:21:43"
                                    },
                                    "returnParameters": {
                                        "id": 8094,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "16311:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "16258:247:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 8140,
                                        "nodeType": "Block",
                                        "src": "16574:514:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            "id": 8121,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 8119,
                                                                "name": "liveness",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8115,
                                                                "src": "16869:8:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint32",
                                                                    "typeString": "uint32"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<",
                                                            "rightExpression": {
                                                                "hexValue": "35323030",
                                                                "id": 8120,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "16880:10:43",
                                                                "subdenomination": "weeks",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_3144960000_by_1",
                                                                    "typeString": "int_const 3144960000"
                                                                },
                                                                "value": "5200"
                                                            },
                                                            "src": "16869:21:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4c6976656e65737320746f6f206c61726765",
                                                            "id": 8122,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16892:20:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_5f70782f56e75aa7a030567ff447a0f4f1c2357a245311a14b417ebd8e079d94",
                                                                "typeString": "literal_string \"Liveness too large\""
                                                            },
                                                            "value": "Liveness too large"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_5f70782f56e75aa7a030567ff447a0f4f1c2357a245311a14b417ebd8e079d94",
                                                                "typeString": "literal_string \"Liveness too large\""
                                                            }
                                                        ],
                                                        "id": 8118,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "16861:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8123,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16861:52:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8124,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16861:52:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            "id": 8128,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 8126,
                                                                "name": "liveness",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8115,
                                                                "src": "16931:8:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint32",
                                                                    "typeString": "uint32"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 8127,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "16942:1:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "16931:12:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4c6976656e6573732063616e6e6f742062652030",
                                                            "id": 8129,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16945:22:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_2d7198fed6d004b02a2f82447437df9fbd1d3213d4970244d04813078e7dc5a0",
                                                                "typeString": "literal_string \"Liveness cannot be 0\""
                                                            },
                                                            "value": "Liveness cannot be 0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_2d7198fed6d004b02a2f82447437df9fbd1d3213d4970244d04813078e7dc5a0",
                                                                "typeString": "literal_string \"Liveness cannot be 0\""
                                                            }
                                                        ],
                                                        "id": 8125,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "16923:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8130,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16923:45:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8131,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16923:45:43"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8134,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8132,
                                                        "name": "optimisticOracleLiveness",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7487,
                                                        "src": "16978:24:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8133,
                                                        "name": "liveness",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8115,
                                                        "src": "17005:8:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "src": "16978:35:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "id": 8135,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16978:35:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8137,
                                                            "name": "optimisticOracleLiveness",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7487,
                                                            "src": "17056:24:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        ],
                                                        "id": 8136,
                                                        "name": "SetOptimisticOracleLiveness",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9117,
                                                        "src": "17028:27:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$returns$__$",
                                                            "typeString": "function (uint32)"
                                                        }
                                                    },
                                                    "id": 8138,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17028:53:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8139,
                                                "nodeType": "EmitStatement",
                                                "src": "17023:58:43"
                                            }
                                        ]
                                    },
                                    "id": 8141,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setOptimisticOracleLiveness",
                                    "nameLocation": "16520:28:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8116,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8115,
                                                "mutability": "mutable",
                                                "name": "liveness",
                                                "nameLocation": "16556:8:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8141,
                                                "src": "16549:15:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 8114,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16549:6:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16548:17:43"
                                    },
                                    "returnParameters": {
                                        "id": 8117,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "16574:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "16511:577:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 8154,
                                        "nodeType": "Block",
                                        "src": "17156:101:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8148,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8146,
                                                        "name": "proposerBondPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7490,
                                                        "src": "17166:15:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8147,
                                                        "name": "_proposerBondPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8143,
                                                        "src": "17184:16:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "17166:34:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "id": 8149,
                                                "nodeType": "ExpressionStatement",
                                                "src": "17166:34:43"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8151,
                                                            "name": "proposerBondPct",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7490,
                                                            "src": "17234:15:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 8150,
                                                        "name": "SetProposerBondPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9121,
                                                        "src": "17215:18:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 8152,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17215:35:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8153,
                                                "nodeType": "EmitStatement",
                                                "src": "17210:40:43"
                                            }
                                        ]
                                    },
                                    "id": 8155,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setProposerBondPct",
                                    "nameLocation": "17103:19:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8144,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8143,
                                                "mutability": "mutable",
                                                "name": "_proposerBondPct",
                                                "nameLocation": "17130:16:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8155,
                                                "src": "17123:23:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8142,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17123:6:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17122:25:43"
                                    },
                                    "returnParameters": {
                                        "id": 8145,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "17156:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "17094:163:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 8181,
                                        "nodeType": "Block",
                                        "src": "17363:169:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 8177,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        "id": 8168,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 8163,
                                                                            "name": "depositContract",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 8157,
                                                                            "src": "17395:15:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "!=",
                                                                        "rightExpression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "hexValue": "30",
                                                                                    "id": 8166,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "17422:1:43",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    },
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    }
                                                                                ],
                                                                                "id": 8165,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "17414:7:43",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                                    "typeString": "type(address)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 8164,
                                                                                    "name": "address",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "17414:7:43",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 8167,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "17414:10:43",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "src": "17395:29:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 8169,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "17394:31:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "&&",
                                                            "rightExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        "id": 8175,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 8170,
                                                                            "name": "messengerContract",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 8159,
                                                                            "src": "17430:17:43",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "!=",
                                                                        "rightExpression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "hexValue": "30",
                                                                                    "id": 8173,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "17459:1:43",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    },
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    }
                                                                                ],
                                                                                "id": 8172,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "17451:7:43",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                                    "typeString": "type(address)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 8171,
                                                                                    "name": "address",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "17451:7:43",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 8174,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "17451:10:43",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "src": "17430:31:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 8176,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "17429:33:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "17394:68:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e76616c6964206465706f736974206f72206d657373656e67657220636f6e7472616374",
                                                            "id": 8178,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "17476:39:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_3a610a3cd09cf513fbc9158d032d260638a50685d0b793f49a43b2851caa0b59",
                                                                "typeString": "literal_string \"Invalid deposit or messenger contract\""
                                                            },
                                                            "value": "Invalid deposit or messenger contract"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_3a610a3cd09cf513fbc9158d032d260638a50685d0b793f49a43b2851caa0b59",
                                                                "typeString": "literal_string \"Invalid deposit or messenger contract\""
                                                            }
                                                        ],
                                                        "id": 8162,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "17373:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8179,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17373:152:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8180,
                                                "nodeType": "ExpressionStatement",
                                                "src": "17373:152:43"
                                            }
                                        ]
                                    },
                                    "id": 8182,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_validateDepositContracts",
                                    "nameLocation": "17272:25:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8160,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8157,
                                                "mutability": "mutable",
                                                "name": "depositContract",
                                                "nameLocation": "17306:15:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8182,
                                                "src": "17298:23:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8156,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17298:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8159,
                                                "mutability": "mutable",
                                                "name": "messengerContract",
                                                "nameLocation": "17331:17:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8182,
                                                "src": "17323:25:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8158,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17323:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17297:52:43"
                                    },
                                    "returnParameters": {
                                        "id": 8161,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "17363:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "17263:269:43",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 8224,
                                        "nodeType": "Block",
                                        "src": "17918:328:43",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 8205,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 8202,
                                                                "name": "l1CallValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8186,
                                                                "src": "17936:11:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 8203,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "17951:3:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 8204,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "value",
                                                                "nodeType": "MemberAccess",
                                                                "src": "17951:9:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "17936:24:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "57726f6e67206e756d626572206f66204554482073656e74",
                                                            "id": 8206,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "17962:26:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_1b7a62b057ae2f0c5b538e3b9da024040f4d76b9bfdee91e00e3deb4698797e0",
                                                                "typeString": "literal_string \"Wrong number of ETH sent\""
                                                            },
                                                            "value": "Wrong number of ETH sent"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_1b7a62b057ae2f0c5b538e3b9da024040f4d76b9bfdee91e00e3deb4698797e0",
                                                                "typeString": "literal_string \"Wrong number of ETH sent\""
                                                            }
                                                        ],
                                                        "id": 8201,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "17928:7:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8207,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17928:61:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8208,
                                                "nodeType": "ExpressionStatement",
                                                "src": "17928:61:43"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8215,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8188,
                                                            "src": "18085:6:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8216,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8190,
                                                            "src": "18105:4:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8217,
                                                            "name": "l1CallValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8186,
                                                            "src": "18123:11:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8218,
                                                            "name": "l2Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8192,
                                                            "src": "18148:5:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8219,
                                                            "name": "l2GasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8194,
                                                            "src": "18167:10:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8220,
                                                            "name": "maxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8196,
                                                            "src": "18191:17:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8221,
                                                            "name": "message",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8198,
                                                            "src": "18222:7:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 8210,
                                                                        "name": "messengerContract",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8184,
                                                                        "src": "18018:17:43",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 8209,
                                                                    "name": "MessengerInterface",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9256,
                                                                    "src": "17999:18:43",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_MessengerInterface_$9256_$",
                                                                        "typeString": "type(contract MessengerInterface)"
                                                                    }
                                                                },
                                                                "id": 8211,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "17999:37:43",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_MessengerInterface_$9256",
                                                                    "typeString": "contract MessengerInterface"
                                                                }
                                                            },
                                                            "id": 8212,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "relayMessage",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9255,
                                                            "src": "17999:50:43",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                                "typeString": "function (address,address,uint256,uint256,uint256,uint256,bytes memory) payable external"
                                                            }
                                                        },
                                                        "id": 8214,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "names": [
                                                            "value"
                                                        ],
                                                        "nodeType": "FunctionCallOptions",
                                                        "options": [
                                                            {
                                                                "id": 8213,
                                                                "name": "l1CallValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8186,
                                                                "src": "18058:11:43",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "src": "17999:72:43",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$value",
                                                            "typeString": "function (address,address,uint256,uint256,uint256,uint256,bytes memory) payable external"
                                                        }
                                                    },
                                                    "id": 8222,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17999:240:43",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8223,
                                                "nodeType": "ExpressionStatement",
                                                "src": "17999:240:43"
                                            }
                                        ]
                                    },
                                    "id": 8225,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_relayMessage",
                                    "nameLocation": "17664:13:43",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8199,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8184,
                                                "mutability": "mutable",
                                                "name": "messengerContract",
                                                "nameLocation": "17695:17:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8225,
                                                "src": "17687:25:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8183,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17687:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8186,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "17730:11:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8225,
                                                "src": "17722:19:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8185,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17722:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8188,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "17759:6:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8225,
                                                "src": "17751:14:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8187,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17751:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8190,
                                                "mutability": "mutable",
                                                "name": "user",
                                                "nameLocation": "17783:4:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8225,
                                                "src": "17775:12:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8189,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17775:7:43",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8192,
                                                "mutability": "mutable",
                                                "name": "l2Gas",
                                                "nameLocation": "17805:5:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8225,
                                                "src": "17797:13:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8191,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17797:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8194,
                                                "mutability": "mutable",
                                                "name": "l2GasPrice",
                                                "nameLocation": "17828:10:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8225,
                                                "src": "17820:18:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8193,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17820:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8196,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "17856:17:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8225,
                                                "src": "17848:25:43",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8195,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17848:7:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8198,
                                                "mutability": "mutable",
                                                "name": "message",
                                                "nameLocation": "17896:7:43",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8225,
                                                "src": "17883:20:43",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 8197,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17883:5:43",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17677:232:43"
                                    },
                                    "returnParameters": {
                                        "id": 8200,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "17918:0:43"
                                    },
                                    "scope": 8226,
                                    "src": "17655:591:43",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "private"
                                }
                            ],
                            "scope": 8227,
                            "src": "924:17324:43",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:18207:43"
                },
                "id": 43
            },
            "contracts/insured-bridge/BridgeDepositBox.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/BridgeDepositBox.sol",
                    "exportedSymbols": {
                        "Address": [
                            1951
                        ],
                        "BridgeDepositBox": [
                            8633
                        ],
                        "IERC20": [
                            1406
                        ],
                        "Lockable": [
                            5437
                        ],
                        "SafeERC20": [
                            1655
                        ],
                        "Testable": [
                            5597
                        ],
                        "Timer": [
                            5632
                        ],
                        "TokenLike": [
                            8240
                        ],
                        "WETH9Like": [
                            8249
                        ]
                    },
                    "id": 8634,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 8228,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:44"
                        },
                        {
                            "absolutePath": "contracts/common/implementation/Testable.sol",
                            "file": "../common/implementation/Testable.sol",
                            "id": 8229,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8634,
                            "sourceUnit": 5598,
                            "src": "67:47:44",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/Lockable.sol",
                            "file": "../common/implementation/Lockable.sol",
                            "id": 8230,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8634,
                            "sourceUnit": 5438,
                            "src": "115:47:44",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                            "id": 8231,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8634,
                            "sourceUnit": 1656,
                            "src": "164:65:44",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 8232,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8634,
                            "sourceUnit": 1407,
                            "src": "230:56:44",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "TokenLike",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 8240,
                            "linearizedBaseContracts": [
                                8240
                            ],
                            "name": "TokenLike",
                            "nameLocation": "298:9:44",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "70a08231",
                                    "id": 8239,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "balanceOf",
                                    "nameLocation": "323:9:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8235,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8234,
                                                "mutability": "mutable",
                                                "name": "guy",
                                                "nameLocation": "341:3:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8239,
                                                "src": "333:11:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8233,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "333:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "332:13:44"
                                    },
                                    "returnParameters": {
                                        "id": 8238,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8237,
                                                "mutability": "mutable",
                                                "name": "wad",
                                                "nameLocation": "372:3:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8239,
                                                "src": "364:11:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8236,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "364:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "363:13:44"
                                    },
                                    "scope": 8240,
                                    "src": "314:63:44",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 8634,
                            "src": "288:91:44",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "WETH9Like",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 8249,
                            "linearizedBaseContracts": [
                                8249
                            ],
                            "name": "WETH9Like",
                            "nameLocation": "391:9:44",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "d0e30db0",
                                    "id": 8243,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "deposit",
                                    "nameLocation": "416:7:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8241,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "423:2:44"
                                    },
                                    "returnParameters": {
                                        "id": 8242,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "442:0:44"
                                    },
                                    "scope": 8249,
                                    "src": "407:36:44",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "2e1a7d4d",
                                    "id": 8248,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "withdraw",
                                    "nameLocation": "458:8:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8246,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8245,
                                                "mutability": "mutable",
                                                "name": "wad",
                                                "nameLocation": "475:3:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8248,
                                                "src": "467:11:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8244,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "467:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "466:13:44"
                                    },
                                    "returnParameters": {
                                        "id": 8247,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "488:0:44"
                                    },
                                    "scope": 8249,
                                    "src": "449:40:44",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 8634,
                            "src": "381:110:44",
                            "usedErrors": []
                        },
                        {
                            "abstract": true,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 8251,
                                        "name": "Testable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5597,
                                        "src": "683:8:44"
                                    },
                                    "id": 8252,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "683:8:44"
                                },
                                {
                                    "baseName": {
                                        "id": 8253,
                                        "name": "Lockable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5437,
                                        "src": "693:8:44"
                                    },
                                    "id": 8254,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "693:8:44"
                                }
                            ],
                            "canonicalName": "BridgeDepositBox",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 8250,
                                "nodeType": "StructuredDocumentation",
                                "src": "493:150:44",
                                "text": " @title OVM Bridge Deposit Box.\n @notice Accepts deposits on Optimism L2 to relay to Ethereum L1 as part of the UMA insured bridge system."
                            },
                            "fullyImplemented": false,
                            "id": 8633,
                            "linearizedBaseContracts": [
                                8633,
                                5437,
                                5597
                            ],
                            "name": "BridgeDepositBox",
                            "nameLocation": "663:16:44",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "id": 8258,
                                    "libraryName": {
                                        "id": 8255,
                                        "name": "SafeERC20",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1655,
                                        "src": "714:9:44"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "708:27:44",
                                    "typeName": {
                                        "id": 8257,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 8256,
                                            "name": "IERC20",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 1406,
                                            "src": "728:6:44"
                                        },
                                        "referencedDeclaration": 1406,
                                        "src": "728:6:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$1406",
                                            "typeString": "contract IERC20"
                                        }
                                    }
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "9a8a0592",
                                    "id": 8260,
                                    "mutability": "mutable",
                                    "name": "chainId",
                                    "nameLocation": "944:7:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8633,
                                    "src": "929:22:44",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 8259,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "929:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "146bf4b1",
                                    "id": 8262,
                                    "mutability": "mutable",
                                    "name": "l1Weth",
                                    "nameLocation": "1091:6:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8633,
                                    "src": "1076:21:44",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8261,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1076:7:44",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "a1244c67",
                                    "id": 8264,
                                    "mutability": "mutable",
                                    "name": "numberOfDeposits",
                                    "nameLocation": "1213:16:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8633,
                                    "src": "1198:31:44",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 8263,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1198:7:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "canonicalName": "BridgeDepositBox.L2TokenRelationships",
                                    "id": 8273,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 8266,
                                            "mutability": "mutable",
                                            "name": "l1Token",
                                            "nameLocation": "1282:7:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8273,
                                            "src": "1274:15:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 8265,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1274:7:44",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 8268,
                                            "mutability": "mutable",
                                            "name": "l1BridgePool",
                                            "nameLocation": "1307:12:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8273,
                                            "src": "1299:20:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 8267,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1299:7:44",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 8270,
                                            "mutability": "mutable",
                                            "name": "lastBridgeTime",
                                            "nameLocation": "1336:14:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8273,
                                            "src": "1329:21:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                            },
                                            "typeName": {
                                                "id": 8269,
                                                "name": "uint64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1329:6:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 8272,
                                            "mutability": "mutable",
                                            "name": "depositsEnabled",
                                            "nameLocation": "1365:15:44",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 8273,
                                            "src": "1360:20:44",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 8271,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1360:4:44",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "L2TokenRelationships",
                                    "nameLocation": "1243:20:44",
                                    "nodeType": "StructDefinition",
                                    "scope": 8633,
                                    "src": "1236:151:44",
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "daf9c210",
                                    "id": 8278,
                                    "mutability": "mutable",
                                    "name": "whitelistedTokens",
                                    "nameLocation": "1650:17:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8633,
                                    "src": "1602:65:44",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                        "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships)"
                                    },
                                    "typeName": {
                                        "id": 8277,
                                        "keyType": {
                                            "id": 8274,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1610:7:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1602:40:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                            "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships)"
                                        },
                                        "valueType": {
                                            "id": 8276,
                                            "nodeType": "UserDefinedTypeName",
                                            "pathNode": {
                                                "id": 8275,
                                                "name": "L2TokenRelationships",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 8273,
                                                "src": "1621:20:44"
                                            },
                                            "referencedDeclaration": 8273,
                                            "src": "1621:20:44",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage_ptr",
                                                "typeString": "struct BridgeDepositBox.L2TokenRelationships"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "b2d6f4d4",
                                    "id": 8280,
                                    "mutability": "mutable",
                                    "name": "minimumBridgingDelay",
                                    "nameLocation": "1809:20:44",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8633,
                                    "src": "1795:34:44",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                    },
                                    "typeName": {
                                        "id": 8279,
                                        "name": "uint64",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1795:6:44",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "id": 8284,
                                    "name": "SetMinimumBridgingDelay",
                                    "nameLocation": "1982:23:44",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 8283,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8282,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newMinimumBridgingDelay",
                                                "nameLocation": "2013:23:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8284,
                                                "src": "2006:30:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8281,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2006:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2005:32:44"
                                    },
                                    "src": "1976:62:44"
                                },
                                {
                                    "anonymous": false,
                                    "id": 8294,
                                    "name": "WhitelistToken",
                                    "nameLocation": "2049:14:44",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 8293,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8286,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "2072:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8294,
                                                "src": "2064:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8285,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2064:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8288,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "2089:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8294,
                                                "src": "2081:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8287,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2081:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8290,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "lastBridgeTime",
                                                "nameLocation": "2105:14:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8294,
                                                "src": "2098:21:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8289,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2098:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8292,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "2129:10:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8294,
                                                "src": "2121:18:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8291,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2121:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2063:77:44"
                                    },
                                    "src": "2043:98:44"
                                },
                                {
                                    "anonymous": false,
                                    "id": 8300,
                                    "name": "DepositsEnabled",
                                    "nameLocation": "2152:15:44",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 8299,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8296,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "2176:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8300,
                                                "src": "2168:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8295,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2168:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8298,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "depositsEnabled",
                                                "nameLocation": "2190:15:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8300,
                                                "src": "2185:20:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 8297,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2185:4:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2167:39:44"
                                    },
                                    "src": "2146:61:44"
                                },
                                {
                                    "anonymous": false,
                                    "id": 8322,
                                    "name": "FundsDeposited",
                                    "nameLocation": "2218:14:44",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 8321,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8302,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "2250:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2242:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8301,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2242:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8304,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "depositId",
                                                "nameLocation": "2275:9:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2267:17:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8303,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2267:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8306,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l1Recipient",
                                                "nameLocation": "2302:11:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2294:19:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8305,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2294:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8308,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l2Sender",
                                                "nameLocation": "2331:8:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2323:16:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8307,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2323:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8310,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "2357:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2349:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8309,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2349:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8312,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "2382:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2374:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8311,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2374:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8314,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "2407:6:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2399:14:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8313,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2399:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8316,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "slowRelayFeePct",
                                                "nameLocation": "2430:15:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2423:22:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8315,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2423:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8318,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "instantRelayFeePct",
                                                "nameLocation": "2462:18:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2455:25:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8317,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2455:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8320,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "quoteTimestamp",
                                                "nameLocation": "2497:14:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8322,
                                                "src": "2490:21:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8319,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2490:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2232:285:44"
                                    },
                                    "src": "2212:306:44"
                                },
                                {
                                    "anonymous": false,
                                    "id": 8332,
                                    "name": "TokensBridged",
                                    "nameLocation": "2529:13:44",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 8331,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8324,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "2559:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8332,
                                                "src": "2543:23:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8323,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2543:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8326,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "numberOfTokensBridged",
                                                "nameLocation": "2576:21:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8332,
                                                "src": "2568:29:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8325,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2568:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8328,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l1Gas",
                                                "nameLocation": "2607:5:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8332,
                                                "src": "2599:13:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8327,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2599:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8330,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "caller",
                                                "nameLocation": "2630:6:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8332,
                                                "src": "2614:22:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8329,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2614:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2542:95:44"
                                    },
                                    "src": "2523:115:44"
                                },
                                {
                                    "body": {
                                        "id": 8345,
                                        "nodeType": "Block",
                                        "src": "2832:103:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 8337,
                                                                    "name": "whitelistedTokens",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8278,
                                                                    "src": "2850:17:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                        "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                    }
                                                                },
                                                                "id": 8339,
                                                                "indexExpression": {
                                                                    "id": 8338,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8334,
                                                                    "src": "2868:7:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "2850:26:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                    "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                                }
                                                            },
                                                            "id": 8340,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "depositsEnabled",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8272,
                                                            "src": "2850:42:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "436f6e74726163742069732064697361626c6564",
                                                            "id": 8341,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2894:22:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad",
                                                                "typeString": "literal_string \"Contract is disabled\""
                                                            },
                                                            "value": "Contract is disabled"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c5f4dbc5ad50630e0446d969653fa964b1b161415a142f1ce8833c9c6f874bad",
                                                                "typeString": "literal_string \"Contract is disabled\""
                                                            }
                                                        ],
                                                        "id": 8336,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2842:7:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8342,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2842:75:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8343,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2842:75:44"
                                            },
                                            {
                                                "id": 8344,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "2927:1:44"
                                            }
                                        ]
                                    },
                                    "id": 8346,
                                    "name": "onlyIfDepositsEnabled",
                                    "nameLocation": "2793:21:44",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 8335,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8334,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "2823:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8346,
                                                "src": "2815:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8333,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2815:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2814:17:44"
                                    },
                                    "src": "2784:151:44",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 8373,
                                        "nodeType": "Block",
                                        "src": "3579:118:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8362,
                                                            "name": "_minimumBridgingDelay",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8349,
                                                            "src": "3614:21:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 8361,
                                                        "name": "_setMinimumBridgingDelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8389,
                                                        "src": "3589:24:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 8363,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3589:47:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8364,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3589:47:44"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8367,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8365,
                                                        "name": "chainId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8260,
                                                        "src": "3646:7:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8366,
                                                        "name": "_chainId",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8351,
                                                        "src": "3656:8:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3646:18:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 8368,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3646:18:44"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8371,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8369,
                                                        "name": "l1Weth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8262,
                                                        "src": "3674:6:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8370,
                                                        "name": "_l1Weth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8353,
                                                        "src": "3683:7:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "3674:16:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 8372,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3674:16:44"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8347,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2941:473:44",
                                        "text": " @notice Construct the Bridge Deposit Box\n @param _minimumBridgingDelay Minimum seconds that must elapse between L2 -> L1 token transfer to prevent dos.\n @param _chainId Chain identifier for the Bridge deposit box.\n @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\n @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production."
                                    },
                                    "id": 8374,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 8358,
                                                    "name": "timerAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8355,
                                                    "src": "3565:12:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 8359,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 8357,
                                                "name": "Testable",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5597,
                                                "src": "3556:8:44"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3556:22:44"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8356,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8349,
                                                "mutability": "mutable",
                                                "name": "_minimumBridgingDelay",
                                                "nameLocation": "3447:21:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8374,
                                                "src": "3440:28:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8348,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3440:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8351,
                                                "mutability": "mutable",
                                                "name": "_chainId",
                                                "nameLocation": "3486:8:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8374,
                                                "src": "3478:16:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8350,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3478:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8353,
                                                "mutability": "mutable",
                                                "name": "_l1Weth",
                                                "nameLocation": "3512:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8374,
                                                "src": "3504:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8352,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3504:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8355,
                                                "mutability": "mutable",
                                                "name": "timerAddress",
                                                "nameLocation": "3537:12:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8374,
                                                "src": "3529:20:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8354,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3529:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3430:125:44"
                                    },
                                    "returnParameters": {
                                        "id": 8360,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3579:0:44"
                                    },
                                    "scope": 8633,
                                    "src": "3419:278:44",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 8388,
                                        "nodeType": "Block",
                                        "src": "4090:123:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8382,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8380,
                                                        "name": "minimumBridgingDelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8280,
                                                        "src": "4100:20:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8381,
                                                        "name": "newMinimumBridgingDelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8377,
                                                        "src": "4123:23:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "4100:46:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "id": 8383,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4100:46:44"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8385,
                                                            "name": "minimumBridgingDelay",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8280,
                                                            "src": "4185:20:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 8384,
                                                        "name": "SetMinimumBridgingDelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8284,
                                                        "src": "4161:23:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 8386,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4161:45:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8387,
                                                "nodeType": "EmitStatement",
                                                "src": "4156:50:44"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8375,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3837:173:44",
                                        "text": " @notice Changes the minimum time in seconds that must elapse between withdraws from L2 -> L1.\n @param newMinimumBridgingDelay the new minimum delay."
                                    },
                                    "id": 8389,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setMinimumBridgingDelay",
                                    "nameLocation": "4024:24:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8378,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8377,
                                                "mutability": "mutable",
                                                "name": "newMinimumBridgingDelay",
                                                "nameLocation": "4056:23:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8389,
                                                "src": "4049:30:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8376,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4049:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4048:32:44"
                                    },
                                    "returnParameters": {
                                        "id": 8379,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4090:0:44"
                                    },
                                    "scope": 8633,
                                    "src": "4015:198:44",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 8425,
                                        "nodeType": "Block",
                                        "src": "4752:325:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8412,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 8399,
                                                            "name": "whitelistedTokens",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8278,
                                                            "src": "4762:17:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                            }
                                                        },
                                                        "id": 8401,
                                                        "indexExpression": {
                                                            "id": 8400,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8394,
                                                            "src": "4780:7:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "4762:26:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                            "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 8403,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8392,
                                                                "src": "4835:7:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "id": 8404,
                                                                "name": "l1BridgePool",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8396,
                                                                "src": "4870:12:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 8407,
                                                                            "name": "getCurrentTime",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5596,
                                                                            "src": "4919:14:44",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                                "typeString": "function () view returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 8408,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "4919:16:44",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 8406,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "4912:6:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_uint64_$",
                                                                        "typeString": "type(uint64)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 8405,
                                                                        "name": "uint64",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4912:6:44",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 8409,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4912:24:44",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                }
                                                            },
                                                            {
                                                                "hexValue": "74727565",
                                                                "id": 8410,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "bool",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "4967:4:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "value": "true"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            ],
                                                            "id": 8402,
                                                            "name": "L2TokenRelationships",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8273,
                                                            "src": "4791:20:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_struct$_L2TokenRelationships_$8273_storage_ptr_$",
                                                                "typeString": "type(struct BridgeDepositBox.L2TokenRelationships storage pointer)"
                                                            }
                                                        },
                                                        "id": 8411,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "structConstructorCall",
                                                        "lValueRequested": false,
                                                        "names": [
                                                            "l1Token",
                                                            "l1BridgePool",
                                                            "lastBridgeTime",
                                                            "depositsEnabled"
                                                        ],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4791:191:44",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_memory_ptr",
                                                            "typeString": "struct BridgeDepositBox.L2TokenRelationships memory"
                                                        }
                                                    },
                                                    "src": "4762:220:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                        "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                    }
                                                },
                                                "id": 8413,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4762:220:44"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8415,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8392,
                                                            "src": "5013:7:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8416,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8394,
                                                            "src": "5022:7:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "id": 8419,
                                                                        "name": "getCurrentTime",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5596,
                                                                        "src": "5038:14:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                            "typeString": "function () view returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 8420,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "5038:16:44",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 8418,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "5031:6:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint64_$",
                                                                    "typeString": "type(uint64)"
                                                                },
                                                                "typeName": {
                                                                    "id": 8417,
                                                                    "name": "uint64",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "5031:6:44",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 8421,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5031:24:44",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "id": 8422,
                                                            "name": "l1BridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8396,
                                                            "src": "5057:12:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8414,
                                                        "name": "WhitelistToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8294,
                                                        "src": "4998:14:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint64_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address,uint64,address)"
                                                        }
                                                    },
                                                    "id": 8423,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4998:72:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8424,
                                                "nodeType": "EmitStatement",
                                                "src": "4993:77:44"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8390,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4219:408:44",
                                        "text": " @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\n @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\n @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\n @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token."
                                    },
                                    "id": 8426,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_whitelistToken",
                                    "nameLocation": "4641:15:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8397,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8392,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "4674:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8426,
                                                "src": "4666:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8391,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4666:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8394,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "4699:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8426,
                                                "src": "4691:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8393,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4691:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8396,
                                                "mutability": "mutable",
                                                "name": "l1BridgePool",
                                                "nameLocation": "4724:12:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8426,
                                                "src": "4716:20:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8395,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4716:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4656:86:44"
                                    },
                                    "returnParameters": {
                                        "id": 8398,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4752:0:44"
                                    },
                                    "scope": 8633,
                                    "src": "4632:445:44",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 8446,
                                        "nodeType": "Block",
                                        "src": "5418:133:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8439,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 8434,
                                                                "name": "whitelistedTokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8278,
                                                                "src": "5428:17:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                    "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                }
                                                            },
                                                            "id": 8436,
                                                            "indexExpression": {
                                                                "id": 8435,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8429,
                                                                "src": "5446:7:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5428:26:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                            }
                                                        },
                                                        "id": 8437,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "depositsEnabled",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8272,
                                                        "src": "5428:42:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8438,
                                                        "name": "depositsEnabled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8431,
                                                        "src": "5473:15:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "5428:60:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 8440,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5428:60:44"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8442,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8429,
                                                            "src": "5519:7:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8443,
                                                            "name": "depositsEnabled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8431,
                                                            "src": "5528:15:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "id": 8441,
                                                        "name": "DepositsEnabled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8300,
                                                        "src": "5503:15:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                                                            "typeString": "function (address,bool)"
                                                        }
                                                    },
                                                    "id": 8444,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5503:41:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8445,
                                                "nodeType": "EmitStatement",
                                                "src": "5498:46:44"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8427,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5083:254:44",
                                        "text": " @notice L1 owner can enable/disable deposits for a whitelisted token.\n @param l2Token address of L2 token to enable/disable deposits for.\n @param depositsEnabled bool to set if the deposit box should accept/reject deposits."
                                    },
                                    "id": 8447,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setEnableDeposits",
                                    "nameLocation": "5351:18:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8432,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8429,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "5378:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8447,
                                                "src": "5370:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8428,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5370:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8431,
                                                "mutability": "mutable",
                                                "name": "depositsEnabled",
                                                "nameLocation": "5392:15:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8447,
                                                "src": "5387:20:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 8430,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5387:4:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5369:39:44"
                                    },
                                    "returnParameters": {
                                        "id": 8433,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5418:0:44"
                                    },
                                    "scope": 8633,
                                    "src": "5342:209:44",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "functionSelector": "9bfd2cdc",
                                    "id": 8454,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "bridgeTokens",
                                    "nameLocation": "5566:12:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8452,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8449,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "5587:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8454,
                                                "src": "5579:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8448,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5579:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8451,
                                                "mutability": "mutable",
                                                "name": "l2Gas",
                                                "nameLocation": "5603:5:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8454,
                                                "src": "5596:12:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 8450,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5596:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5578:31:44"
                                    },
                                    "returnParameters": {
                                        "id": 8453,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5624:0:44"
                                    },
                                    "scope": 8633,
                                    "src": "5557:68:44",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8580,
                                        "nodeType": "Block",
                                        "src": "6932:2549:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 8477,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8459,
                                                                    "src": "6967:7:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 8476,
                                                                "name": "isWhitelistToken",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8597,
                                                                "src": "6950:16:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 8478,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6950:25:44",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6465706f73697420746f6b656e206e6f742077686974656c6973746564",
                                                            "id": 8479,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6977:31:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f",
                                                                "typeString": "literal_string \"deposit token not whitelisted\""
                                                            },
                                                            "value": "deposit token not whitelisted"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_d685d220710604c6e7de8b0938f04c0ff52ec3c1c280fa7d0a91df6c9358207f",
                                                                "typeString": "literal_string \"deposit token not whitelisted\""
                                                            }
                                                        ],
                                                        "id": 8475,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6942:7:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8480,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6942:67:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8481,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6942:67:44"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            "id": 8485,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 8483,
                                                                "name": "slowRelayFeePct",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8463,
                                                                "src": "7257:15:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<=",
                                                            "rightExpression": {
                                                                "hexValue": "302e3235653138",
                                                                "id": 8484,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "7276:7:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_250000000000000000_by_1",
                                                                    "typeString": "int_const 250000000000000000"
                                                                },
                                                                "value": "0.25e18"
                                                            },
                                                            "src": "7257:26:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "736c6f7752656c6179466565506374206d757374206265203c3d20323525",
                                                            "id": 8486,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7285:32:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033",
                                                                "typeString": "literal_string \"slowRelayFeePct must be <= 25%\""
                                                            },
                                                            "value": "slowRelayFeePct must be <= 25%"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_f91e0ea17891da81ce2df767d2c4732eba932e45f1f869fcc7a4cd3287077033",
                                                                "typeString": "literal_string \"slowRelayFeePct must be <= 25%\""
                                                            }
                                                        ],
                                                        "id": 8482,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7249:7:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8487,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7249:69:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8488,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7249:69:44"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            "id": 8492,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 8490,
                                                                "name": "instantRelayFeePct",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8465,
                                                                "src": "7336:18:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<=",
                                                            "rightExpression": {
                                                                "hexValue": "302e3235653138",
                                                                "id": 8491,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "7358:7:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_250000000000000000_by_1",
                                                                    "typeString": "int_const 250000000000000000"
                                                                },
                                                                "value": "0.25e18"
                                                            },
                                                            "src": "7336:29:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "696e7374616e7452656c6179466565506374206d757374206265203c3d20323525",
                                                            "id": 8493,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7367:35:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8",
                                                                "typeString": "literal_string \"instantRelayFeePct must be <= 25%\""
                                                            },
                                                            "value": "instantRelayFeePct must be <= 25%"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_3187a9733cbea8d81aadea343220d56d7be9b3e1040bc8f23b5d386775f8aff8",
                                                                "typeString": "literal_string \"instantRelayFeePct must be <= 25%\""
                                                            }
                                                        ],
                                                        "id": 8489,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7328:7:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8494,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7328:75:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8495,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7328:75:44"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 8509,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 8502,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "id": 8497,
                                                                        "name": "getCurrentTime",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5596,
                                                                        "src": "8041:14:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                            "typeString": "function () view returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 8498,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8041:16:44",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": ">=",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    },
                                                                    "id": 8501,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 8499,
                                                                        "name": "quoteTimestamp",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8467,
                                                                        "src": "8061:14:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                        "hexValue": "3130",
                                                                        "id": 8500,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "8078:10:44",
                                                                        "subdenomination": "minutes",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_600_by_1",
                                                                            "typeString": "int_const 600"
                                                                        },
                                                                        "value": "10"
                                                                    },
                                                                    "src": "8061:27:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "src": "8041:47:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "&&",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 8508,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "id": 8503,
                                                                        "name": "getCurrentTime",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5596,
                                                                        "src": "8092:14:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                            "typeString": "function () view returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 8504,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "8092:16:44",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<=",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    },
                                                                    "id": 8507,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 8505,
                                                                        "name": "quoteTimestamp",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8467,
                                                                        "src": "8112:14:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "+",
                                                                    "rightExpression": {
                                                                        "hexValue": "3130",
                                                                        "id": 8506,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "8129:10:44",
                                                                        "subdenomination": "minutes",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_600_by_1",
                                                                            "typeString": "int_const 600"
                                                                        },
                                                                        "value": "10"
                                                                    },
                                                                    "src": "8112:27:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "src": "8092:47:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "8041:98:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6465706f736974206d696e656420616674657220646561646c696e65",
                                                            "id": 8510,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8153:30:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b",
                                                                "typeString": "literal_string \"deposit mined after deadline\""
                                                            },
                                                            "value": "deposit mined after deadline"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_3db2f0e5462ec686ad5fcbb2e14ad0661dd7a7b07acd41fa11100daf3d28fd5b",
                                                                "typeString": "literal_string \"deposit mined after deadline\""
                                                            }
                                                        ],
                                                        "id": 8496,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "8020:7:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8511,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8020:173:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8512,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8020:173:44"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 8523,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 8518,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 8513,
                                                                    "name": "whitelistedTokens",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8278,
                                                                    "src": "8430:17:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                        "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                    }
                                                                },
                                                                "id": 8515,
                                                                "indexExpression": {
                                                                    "id": 8514,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8459,
                                                                    "src": "8448:7:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "8430:26:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                    "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                                }
                                                            },
                                                            "id": 8516,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "l1Token",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8266,
                                                            "src": "8430:34:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "id": 8517,
                                                            "name": "l1Weth",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8262,
                                                            "src": "8468:6:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "src": "8430:44:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 8522,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 8519,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "8478:3:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 8520,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "value",
                                                            "nodeType": "MemberAccess",
                                                            "src": "8478:9:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 8521,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8490:1:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "8478:13:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "8430:61:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 8549,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "9015:3:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 8550,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "9015:10:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "id": 8553,
                                                                        "name": "this",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -28,
                                                                        "src": "9035:4:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_BridgeDepositBox_$8633",
                                                                            "typeString": "contract BridgeDepositBox"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_BridgeDepositBox_$8633",
                                                                            "typeString": "contract BridgeDepositBox"
                                                                        }
                                                                    ],
                                                                    "id": 8552,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "9027:7:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 8551,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "9027:7:44",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 8554,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9027:13:44",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "id": 8555,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8461,
                                                                "src": "9042:6:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 8546,
                                                                        "name": "l2Token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8459,
                                                                        "src": "8989:7:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 8545,
                                                                    "name": "IERC20",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1406,
                                                                    "src": "8982:6:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$1406_$",
                                                                        "typeString": "type(contract IERC20)"
                                                                    }
                                                                },
                                                                "id": 8547,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8982:15:44",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 8548,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "safeTransferFrom",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1488,
                                                            "src": "8982:32:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1406_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1406_$",
                                                                "typeString": "function (contract IERC20,address,address,uint256)"
                                                            }
                                                        },
                                                        "id": 8556,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "8982:67:44",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 8557,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "8982:67:44"
                                                },
                                                "id": 8558,
                                                "nodeType": "IfStatement",
                                                "src": "8426:623:44",
                                                "trueBody": {
                                                    "id": 8544,
                                                    "nodeType": "Block",
                                                    "src": "8493:155:44",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 8528,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "expression": {
                                                                                "id": 8525,
                                                                                "name": "msg",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -15,
                                                                                "src": "8515:3:44",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_message",
                                                                                    "typeString": "msg"
                                                                                }
                                                                            },
                                                                            "id": 8526,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "value",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "8515:9:44",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "==",
                                                                        "rightExpression": {
                                                                            "id": 8527,
                                                                            "name": "amount",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 8461,
                                                                            "src": "8528:6:44",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "src": "8515:19:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "6d73672e76616c7565206d757374206d6174636820616d6f756e74",
                                                                        "id": 8529,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "8536:29:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20",
                                                                            "typeString": "literal_string \"msg.value must match amount\""
                                                                        },
                                                                        "value": "msg.value must match amount"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_f3079425008d77a92a17139796f151ca993e8bb15a00a3ffeed9a8c7aa507e20",
                                                                            "typeString": "literal_string \"msg.value must match amount\""
                                                                        }
                                                                    ],
                                                                    "id": 8524,
                                                                    "name": "require",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [
                                                                        -18,
                                                                        -18
                                                                    ],
                                                                    "referencedDeclaration": -18,
                                                                    "src": "8507:7:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                        "typeString": "function (bool,string memory) pure"
                                                                    }
                                                                },
                                                                "id": 8530,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8507:59:44",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 8531,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "8507:59:44"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 8535,
                                                                                            "name": "l2Token",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 8459,
                                                                                            "src": "8598:7:44",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        ],
                                                                                        "id": 8534,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                                        "src": "8590:7:44",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                                            "typeString": "type(address)"
                                                                                        },
                                                                                        "typeName": {
                                                                                            "id": 8533,
                                                                                            "name": "address",
                                                                                            "nodeType": "ElementaryTypeName",
                                                                                            "src": "8590:7:44",
                                                                                            "typeDescriptions": {}
                                                                                        }
                                                                                    },
                                                                                    "id": 8536,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "8590:16:44",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 8532,
                                                                                "name": "WETH9Like",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 8249,
                                                                                "src": "8580:9:44",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_WETH9Like_$8249_$",
                                                                                    "typeString": "type(contract WETH9Like)"
                                                                                }
                                                                            },
                                                                            "id": 8537,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "8580:27:44",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_WETH9Like_$8249",
                                                                                "typeString": "contract WETH9Like"
                                                                            }
                                                                        },
                                                                        "id": 8538,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "deposit",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 8243,
                                                                        "src": "8580:35:44",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                                                            "typeString": "function () payable external"
                                                                        }
                                                                    },
                                                                    "id": 8541,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        "value"
                                                                    ],
                                                                    "nodeType": "FunctionCallOptions",
                                                                    "options": [
                                                                        {
                                                                            "expression": {
                                                                                "id": 8539,
                                                                                "name": "msg",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -15,
                                                                                "src": "8624:3:44",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_message",
                                                                                    "typeString": "msg"
                                                                                }
                                                                            },
                                                                            "id": 8540,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "value",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "8624:9:44",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "src": "8580:55:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                                                        "typeString": "function () payable external"
                                                                    }
                                                                },
                                                                "id": 8542,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8580:57:44",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 8543,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "8580:57:44"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8560,
                                                            "name": "chainId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8260,
                                                            "src": "9093:7:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8561,
                                                            "name": "numberOfDeposits",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8264,
                                                            "src": "9114:16:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8562,
                                                            "name": "l1Recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8457,
                                                            "src": "9219:11:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 8563,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "9244:3:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 8564,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "9244:10:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 8565,
                                                                    "name": "whitelistedTokens",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8278,
                                                                    "src": "9268:17:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                        "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                    }
                                                                },
                                                                "id": 8567,
                                                                "indexExpression": {
                                                                    "id": 8566,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8459,
                                                                    "src": "9286:7:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "9268:26:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                    "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                                }
                                                            },
                                                            "id": 8568,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "l1Token",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8266,
                                                            "src": "9268:34:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8569,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8459,
                                                            "src": "9316:7:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8570,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8461,
                                                            "src": "9337:6:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8571,
                                                            "name": "slowRelayFeePct",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8463,
                                                            "src": "9357:15:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "id": 8572,
                                                            "name": "instantRelayFeePct",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8465,
                                                            "src": "9386:18:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "id": 8573,
                                                            "name": "quoteTimestamp",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8467,
                                                            "src": "9418:14:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 8559,
                                                        "name": "FundsDeposited",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8322,
                                                        "src": "9065:14:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint64_$_t_uint64_$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint256,uint256,address,address,address,address,uint256,uint64,uint64,uint64)"
                                                        }
                                                    },
                                                    "id": 8574,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9065:377:44",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8575,
                                                "nodeType": "EmitStatement",
                                                "src": "9060:382:44"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8578,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8576,
                                                        "name": "numberOfDeposits",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8264,
                                                        "src": "9453:16:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "hexValue": "31",
                                                        "id": 8577,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "9473:1:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1_by_1",
                                                            "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                    },
                                                    "src": "9453:21:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 8579,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9453:21:44"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8455,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5765:902:44",
                                        "text": " @notice Called by L2 user to bridge funds between L2 and L1.\n @dev Emits the `FundsDeposited` event which relayers listen for as part of the bridging action.\n @dev The caller must first approve this contract to spend `amount` of `l2Token`.\n @param l1Recipient L1 address that should receive the tokens.\n @param l2Token L2 token to deposit.\n @param amount How many L2 tokens should be deposited.\n @param slowRelayFeePct Max fraction of `amount` that the depositor is willing to pay as a slow relay fee.\n @param instantRelayFeePct Fraction of `amount` that the depositor is willing to pay as an instant relay fee.\n @param quoteTimestamp Timestamp, at which the depositor will be quoted for L1 liquidity. This enables the\n    depositor to know the L1 fees before submitting their deposit. Must be within 10 mins of the current time."
                                    },
                                    "functionSelector": "c2d9dca9",
                                    "id": 8581,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 8470,
                                                    "name": "l2Token",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8459,
                                                    "src": "6908:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 8471,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 8469,
                                                "name": "onlyIfDepositsEnabled",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 8346,
                                                "src": "6886:21:44"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6886:30:44"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 8473,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 8472,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "6917:12:44"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "6917:14:44"
                                        }
                                    ],
                                    "name": "deposit",
                                    "nameLocation": "6681:7:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8468,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8457,
                                                "mutability": "mutable",
                                                "name": "l1Recipient",
                                                "nameLocation": "6706:11:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8581,
                                                "src": "6698:19:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8456,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6698:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8459,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "6735:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8581,
                                                "src": "6727:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8458,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6727:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8461,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "6760:6:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8581,
                                                "src": "6752:14:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8460,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6752:7:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8463,
                                                "mutability": "mutable",
                                                "name": "slowRelayFeePct",
                                                "nameLocation": "6783:15:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8581,
                                                "src": "6776:22:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8462,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6776:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8465,
                                                "mutability": "mutable",
                                                "name": "instantRelayFeePct",
                                                "nameLocation": "6815:18:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8581,
                                                "src": "6808:25:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8464,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6808:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8467,
                                                "mutability": "mutable",
                                                "name": "quoteTimestamp",
                                                "nameLocation": "6850:14:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8581,
                                                "src": "6843:21:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8466,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6843:6:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6688:182:44"
                                    },
                                    "returnParameters": {
                                        "id": 8474,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6932:0:44"
                                    },
                                    "scope": 8633,
                                    "src": "6672:2809:44",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8596,
                                        "nodeType": "Block",
                                        "src": "10017:70:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    },
                                                    "id": 8594,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 8589,
                                                                "name": "whitelistedTokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8278,
                                                                "src": "10034:17:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                    "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                }
                                                            },
                                                            "id": 8591,
                                                            "indexExpression": {
                                                                "id": 8590,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8584,
                                                                "src": "10052:7:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "10034:26:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                            }
                                                        },
                                                        "id": 8592,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "lastBridgeTime",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8270,
                                                        "src": "10034:41:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 8593,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "10079:1:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "10034:46:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 8588,
                                                "id": 8595,
                                                "nodeType": "Return",
                                                "src": "10027:53:44"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8582,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9621:321:44",
                                        "text": " @notice Checks if a given L2 token is whitelisted.\n @dev Check the whitelisted token's `lastBridgeTime` parameter since its guaranteed to be != 0 once\n the token has been whitelisted.\n @param l2Token L2 token to check against the whitelist.\n @return true if token is whitelised."
                                    },
                                    "functionSelector": "fbb9fcf7",
                                    "id": 8597,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isWhitelistToken",
                                    "nameLocation": "9956:16:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8585,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8584,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "9981:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8597,
                                                "src": "9973:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8583,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9973:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9972:17:44"
                                    },
                                    "returnParameters": {
                                        "id": 8588,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8587,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8597,
                                                "src": "10011:4:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 8586,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10011:4:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10010:6:44"
                                    },
                                    "scope": 8633,
                                    "src": "9947:140:44",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8614,
                                        "nodeType": "Block",
                                        "src": "10178:107:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 8612,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 8604,
                                                            "name": "getCurrentTime",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5596,
                                                            "src": "10195:14:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                "typeString": "function () view returns (uint256)"
                                                            }
                                                        },
                                                        "id": 8605,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "10195:16:44",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        },
                                                        "id": 8611,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 8606,
                                                                    "name": "whitelistedTokens",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8278,
                                                                    "src": "10214:17:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                        "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                    }
                                                                },
                                                                "id": 8608,
                                                                "indexExpression": {
                                                                    "id": 8607,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8599,
                                                                    "src": "10232:7:44",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "10214:26:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                    "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                                }
                                                            },
                                                            "id": 8609,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "lastBridgeTime",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8270,
                                                            "src": "10214:41:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                            "id": 8610,
                                                            "name": "minimumBridgingDelay",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8280,
                                                            "src": "10258:20:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        "src": "10214:64:44",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "10195:83:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 8603,
                                                "id": 8613,
                                                "nodeType": "Return",
                                                "src": "10188:90:44"
                                            }
                                        ]
                                    },
                                    "id": 8615,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_hasEnoughTimeElapsedToBridge",
                                    "nameLocation": "10102:29:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8600,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8599,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "10140:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8615,
                                                "src": "10132:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8598,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10132:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10131:17:44"
                                    },
                                    "returnParameters": {
                                        "id": 8603,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8602,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8615,
                                                "src": "10172:4:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 8601,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10172:4:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10171:6:44"
                                    },
                                    "scope": 8633,
                                    "src": "10093:192:44",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 8631,
                                        "nodeType": "Block",
                                        "src": "10926:91:44",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 8629,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 8624,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8618,
                                                                "src": "10960:7:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 8623,
                                                            "name": "isWhitelistToken",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8597,
                                                            "src": "10943:16:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                "typeString": "function (address) view returns (bool)"
                                                            }
                                                        },
                                                        "id": 8625,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "10943:25:44",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 8627,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8618,
                                                                "src": "11002:7:44",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 8626,
                                                            "name": "_hasEnoughTimeElapsedToBridge",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8615,
                                                            "src": "10972:29:44",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                "typeString": "function (address) view returns (bool)"
                                                            }
                                                        },
                                                        "id": 8628,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "10972:38:44",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "10943:67:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 8622,
                                                "id": 8630,
                                                "nodeType": "Return",
                                                "src": "10936:74:44"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8616,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10291:567:44",
                                        "text": " @notice Designed to be called by implementing contract in `bridgeTokens` method which sends this contract's\n balance of tokens from L2 to L1 via the canonical token bridge. Tokens that can be bridged are whitelisted\n and have had enough time elapsed since the latest bridge (or the time at which at was whitelisted).\n @dev This function is also public for caller convenience.\n @param l2Token L2 token to check bridging status.\n @return true if token is whitelised and enough time has elapsed since the previous bridge."
                                    },
                                    "functionSelector": "63635fd9",
                                    "id": 8632,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "canBridge",
                                    "nameLocation": "10872:9:44",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8619,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8618,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "10890:7:44",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8632,
                                                "src": "10882:15:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8617,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10882:7:44",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10881:17:44"
                                    },
                                    "returnParameters": {
                                        "id": 8622,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8621,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8632,
                                                "src": "10920:4:44",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 8620,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10920:4:44",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10919:6:44"
                                    },
                                    "scope": 8633,
                                    "src": "10863:154:44",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 8634,
                            "src": "645:10374:44",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:10978:44"
                },
                "id": 44
            },
            "contracts/insured-bridge/RateModelStore.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/RateModelStore.sol",
                    "exportedSymbols": {
                        "Context": [
                            1974
                        ],
                        "MultiCaller": [
                            5524
                        ],
                        "Ownable": [
                            729
                        ],
                        "RateModelStore": [
                            8675
                        ]
                    },
                    "id": 8676,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 8635,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:45"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                            "file": "@openzeppelin/contracts/access/Ownable.sol",
                            "id": 8636,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8676,
                            "sourceUnit": 730,
                            "src": "67:52:45",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/MultiCaller.sol",
                            "file": "../common/implementation/MultiCaller.sol",
                            "id": 8637,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8676,
                            "sourceUnit": 5525,
                            "src": "120:50:45",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 8639,
                                        "name": "Ownable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 729,
                                        "src": "760:7:45"
                                    },
                                    "id": 8640,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "760:7:45"
                                },
                                {
                                    "baseName": {
                                        "id": 8641,
                                        "name": "MultiCaller",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5524,
                                        "src": "769:11:45"
                                    },
                                    "id": 8642,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "769:11:45"
                                }
                            ],
                            "canonicalName": "RateModelStore",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 8638,
                                "nodeType": "StructuredDocumentation",
                                "src": "172:560:45",
                                "text": " @title Maps rate model objects to L1 token.\n @dev This contract is designed to be queried by off-chain relayers that need to compute realized LP fee %'s before\n submitting relay transactions to a BridgePool contract. Therefore, this contract does not perform any validation on\n the shape of the rate model, which is stored as a string to enable arbitrary data encoding via a stringified JSON\n object. This leaves this contract unopionated on the parameters within the rate model, enabling governance to adjust\n the structure in the future."
                            },
                            "fullyImplemented": true,
                            "id": 8675,
                            "linearizedBaseContracts": [
                                8675,
                                5524,
                                729,
                                1974
                            ],
                            "name": "RateModelStore",
                            "nameLocation": "742:14:45",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "74cc3f3e",
                                    "id": 8646,
                                    "mutability": "mutable",
                                    "name": "l1TokenRateModels",
                                    "nameLocation": "821:17:45",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8675,
                                    "src": "787:51:45",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_string_storage_$",
                                        "typeString": "mapping(address => string)"
                                    },
                                    "typeName": {
                                        "id": 8645,
                                        "keyType": {
                                            "id": 8643,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "795:7:45",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "787:26:45",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_string_storage_$",
                                            "typeString": "mapping(address => string)"
                                        },
                                        "valueType": {
                                            "id": 8644,
                                            "name": "string",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "806:6:45",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_string_storage_ptr",
                                                "typeString": "string"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "id": 8652,
                                    "name": "UpdatedRateModel",
                                    "nameLocation": "851:16:45",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 8651,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8648,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "884:7:45",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8652,
                                                "src": "868:23:45",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8647,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "868:7:45",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8650,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "rateModel",
                                                "nameLocation": "900:9:45",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8652,
                                                "src": "893:16:45",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 8649,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "893:6:45",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "867:43:45"
                                    },
                                    "src": "845:66:45"
                                },
                                {
                                    "body": {
                                        "id": 8673,
                                        "nodeType": "Block",
                                        "src": "1179:106:45",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8666,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 8662,
                                                            "name": "l1TokenRateModels",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8646,
                                                            "src": "1189:17:45",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_string_storage_$",
                                                                "typeString": "mapping(address => string storage ref)"
                                                            }
                                                        },
                                                        "id": 8664,
                                                        "indexExpression": {
                                                            "id": 8663,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8655,
                                                            "src": "1207:7:45",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "1189:26:45",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_storage",
                                                            "typeString": "string storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8665,
                                                        "name": "rateModel",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8657,
                                                        "src": "1218:9:45",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                        }
                                                    },
                                                    "src": "1189:38:45",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "id": 8667,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1189:38:45"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8669,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8655,
                                                            "src": "1259:7:45",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8670,
                                                            "name": "rateModel",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8657,
                                                            "src": "1268:9:45",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                            }
                                                        ],
                                                        "id": 8668,
                                                        "name": "UpdatedRateModel",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8652,
                                                        "src": "1242:16:45",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,string memory)"
                                                        }
                                                    },
                                                    "id": 8671,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1242:36:45",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8672,
                                                "nodeType": "EmitStatement",
                                                "src": "1237:41:45"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8653,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "917:171:45",
                                        "text": " @notice Updates rate model string for L1 token.\n @param l1Token the l1 token rate model to update.\n @param rateModel the updated rate model."
                                    },
                                    "functionSelector": "0be5512b",
                                    "id": 8674,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 8660,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 8659,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "1169:9:45"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1169:9:45"
                                        }
                                    ],
                                    "name": "updateRateModel",
                                    "nameLocation": "1102:15:45",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8658,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8655,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "1126:7:45",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8674,
                                                "src": "1118:15:45",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8654,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1118:7:45",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8657,
                                                "mutability": "mutable",
                                                "name": "rateModel",
                                                "nameLocation": "1149:9:45",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8674,
                                                "src": "1135:23:45",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 8656,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1135:6:45",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1117:42:45"
                                    },
                                    "returnParameters": {
                                        "id": 8661,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1179:0:45"
                                    },
                                    "scope": 8675,
                                    "src": "1093:192:45",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 8676,
                            "src": "733:554:45",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1246:45"
                },
                "id": 45
            },
            "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol",
                    "exportedSymbols": {
                        "AVM_BridgeDepositBox": [
                            8900
                        ],
                        "AVM_CrossDomainEnabled": [
                            5748
                        ],
                        "Address": [
                            1951
                        ],
                        "ArbSys": [
                            5839
                        ],
                        "BridgeDepositBox": [
                            8633
                        ],
                        "IERC20": [
                            1406
                        ],
                        "Lockable": [
                            5437
                        ],
                        "SafeERC20": [
                            1655
                        ],
                        "StandardBridgeLike": [
                            8693
                        ],
                        "Testable": [
                            5597
                        ],
                        "Timer": [
                            5632
                        ],
                        "TokenLike": [
                            8240
                        ],
                        "WETH9Like": [
                            8249
                        ]
                    },
                    "id": 8901,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 8677,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:46"
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/BridgeDepositBox.sol",
                            "file": "../BridgeDepositBox.sol",
                            "id": 8678,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8901,
                            "sourceUnit": 8634,
                            "src": "67:33:46",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/external/avm/AVM_CrossDomainEnabled.sol",
                            "file": "../../external/avm/AVM_CrossDomainEnabled.sol",
                            "id": 8679,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 8901,
                            "sourceUnit": 5749,
                            "src": "101:55:46",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "StandardBridgeLike",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 8693,
                            "linearizedBaseContracts": [
                                8693
                            ],
                            "name": "StandardBridgeLike",
                            "nameLocation": "168:18:46",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "7b3a3c8b",
                                    "id": 8692,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "outboundTransfer",
                                    "nameLocation": "202:16:46",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8688,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8681,
                                                "mutability": "mutable",
                                                "name": "_l1Token",
                                                "nameLocation": "236:8:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8692,
                                                "src": "228:16:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8680,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "228:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8683,
                                                "mutability": "mutable",
                                                "name": "_to",
                                                "nameLocation": "262:3:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8692,
                                                "src": "254:11:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8682,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "254:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8685,
                                                "mutability": "mutable",
                                                "name": "_amount",
                                                "nameLocation": "283:7:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8692,
                                                "src": "275:15:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8684,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "275:7:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8687,
                                                "mutability": "mutable",
                                                "name": "_data",
                                                "nameLocation": "315:5:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8692,
                                                "src": "300:20:46",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 8686,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "300:5:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "218:108:46"
                                    },
                                    "returnParameters": {
                                        "id": 8691,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8690,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8692,
                                                "src": "353:12:46",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 8689,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "353:5:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "352:14:46"
                                    },
                                    "scope": 8693,
                                    "src": "193:174:46",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 8901,
                            "src": "158:211:46",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 8695,
                                        "name": "BridgeDepositBox",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 8633,
                                        "src": "521:16:46"
                                    },
                                    "id": 8696,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "521:16:46"
                                },
                                {
                                    "baseName": {
                                        "id": 8697,
                                        "name": "AVM_CrossDomainEnabled",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5748,
                                        "src": "539:22:46"
                                    },
                                    "id": 8698,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "539:22:46"
                                }
                            ],
                            "canonicalName": "AVM_BridgeDepositBox",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 8694,
                                "nodeType": "StructuredDocumentation",
                                "src": "371:115:46",
                                "text": " @notice AVM specific bridge deposit box.\n @dev Uses AVM cross-domain-enabled logic for access control."
                            },
                            "fullyImplemented": true,
                            "id": 8900,
                            "linearizedBaseContracts": [
                                8900,
                                5748,
                                8633,
                                5437,
                                5597
                            ],
                            "name": "AVM_BridgeDepositBox",
                            "nameLocation": "497:20:46",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "5285e058",
                                    "id": 8700,
                                    "mutability": "mutable",
                                    "name": "crossDomainAdmin",
                                    "nameLocation": "668:16:46",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8900,
                                    "src": "653:31:46",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8699,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "653:7:46",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "c8356859",
                                    "id": 8702,
                                    "mutability": "mutable",
                                    "name": "l2GatewayRouter",
                                    "nameLocation": "755:15:46",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 8900,
                                    "src": "740:30:46",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 8701,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "740:7:46",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "id": 8706,
                                    "name": "SetXDomainAdmin",
                                    "nameLocation": "783:15:46",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 8705,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8704,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "815:8:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8706,
                                                "src": "799:24:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8703,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "799:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "798:26:46"
                                    },
                                    "src": "777:48:46"
                                },
                                {
                                    "body": {
                                        "id": 8736,
                                        "nodeType": "Block",
                                        "src": "1828:100:46",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8730,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8728,
                                                        "name": "l2GatewayRouter",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8702,
                                                        "src": "1838:15:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8729,
                                                        "name": "_l2GatewayRouter",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8709,
                                                        "src": "1856:16:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "1838:34:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 8731,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1838:34:46"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8733,
                                                            "name": "_crossDomainAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8711,
                                                            "src": "1903:17:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8732,
                                                        "name": "_setCrossDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8899,
                                                        "src": "1882:20:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 8734,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1882:39:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8735,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1882:39:46"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8707,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "831:713:46",
                                        "text": " @notice Construct the Arbitrum Bridge Deposit Box\n @param _l2GatewayRouter Address of the Arbitrum L2 token gateway router for sending tokens from L2->L1.\n @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\n @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\n @param _chainId L2 Chain identifier this deposit box is deployed on.\n @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\n @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production."
                                    },
                                    "id": 8737,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 8722,
                                                    "name": "_minimumBridgingDelay",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8713,
                                                    "src": "1772:21:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                {
                                                    "id": 8723,
                                                    "name": "_chainId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8715,
                                                    "src": "1795:8:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "id": 8724,
                                                    "name": "_l1Weth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8717,
                                                    "src": "1805:7:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                {
                                                    "id": 8725,
                                                    "name": "timerAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8719,
                                                    "src": "1814:12:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 8726,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 8721,
                                                "name": "BridgeDepositBox",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 8633,
                                                "src": "1755:16:46"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1755:72:46"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8720,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8709,
                                                "mutability": "mutable",
                                                "name": "_l2GatewayRouter",
                                                "nameLocation": "1578:16:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8737,
                                                "src": "1570:24:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8708,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1570:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8711,
                                                "mutability": "mutable",
                                                "name": "_crossDomainAdmin",
                                                "nameLocation": "1612:17:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8737,
                                                "src": "1604:25:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8710,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1604:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8713,
                                                "mutability": "mutable",
                                                "name": "_minimumBridgingDelay",
                                                "nameLocation": "1646:21:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8737,
                                                "src": "1639:28:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8712,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1639:6:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8715,
                                                "mutability": "mutable",
                                                "name": "_chainId",
                                                "nameLocation": "1685:8:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8737,
                                                "src": "1677:16:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8714,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1677:7:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8717,
                                                "mutability": "mutable",
                                                "name": "_l1Weth",
                                                "nameLocation": "1711:7:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8737,
                                                "src": "1703:15:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8716,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1703:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8719,
                                                "mutability": "mutable",
                                                "name": "timerAddress",
                                                "nameLocation": "1736:12:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8737,
                                                "src": "1728:20:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8718,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1728:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1560:194:46"
                                    },
                                    "returnParameters": {
                                        "id": 8727,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1828:0:46"
                                    },
                                    "scope": 8900,
                                    "src": "1549:379:46",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8750,
                                        "nodeType": "Block",
                                        "src": "2637:58:46",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8747,
                                                            "name": "newCrossDomainAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8740,
                                                            "src": "2668:19:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8746,
                                                        "name": "_setCrossDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8899,
                                                        "src": "2647:20:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 8748,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2647:41:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8749,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2647:41:46"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8738,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2068:454:46",
                                        "text": " @notice Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\n @dev This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which\n is expected to be the Arbitrum_Messenger.\n @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\n @param newCrossDomainAdmin address of the new L1 admin contract."
                                    },
                                    "functionSelector": "de7eba78",
                                    "id": 8751,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 8743,
                                                    "name": "crossDomainAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8700,
                                                    "src": "2619:16:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 8744,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 8742,
                                                "name": "onlyFromCrossDomainAccount",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5687,
                                                "src": "2592:26:46"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2592:44:46"
                                        }
                                    ],
                                    "name": "setCrossDomainAdmin",
                                    "nameLocation": "2536:19:46",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8741,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8740,
                                                "mutability": "mutable",
                                                "name": "newCrossDomainAdmin",
                                                "nameLocation": "2564:19:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8751,
                                                "src": "2556:27:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8739,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2556:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2555:29:46"
                                    },
                                    "returnParameters": {
                                        "id": 8745,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2637:0:46"
                                    },
                                    "scope": 8900,
                                    "src": "2527:168:46",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8764,
                                        "nodeType": "Block",
                                        "src": "3114:66:46",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8761,
                                                            "name": "newMinimumBridgingDelay",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8754,
                                                            "src": "3149:23:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 8760,
                                                        "name": "_setMinimumBridgingDelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8389,
                                                        "src": "3124:24:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 8762,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3124:49:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8763,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3124:49:46"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8752,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2701:271:46",
                                        "text": " @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\n @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\n @param newMinimumBridgingDelay the new minimum delay."
                                    },
                                    "functionSelector": "2ec35b31",
                                    "id": 8765,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 8757,
                                                    "name": "crossDomainAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8700,
                                                    "src": "3092:16:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 8758,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 8756,
                                                "name": "onlyFromCrossDomainAccount",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5687,
                                                "src": "3065:26:46"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3065:44:46"
                                        }
                                    ],
                                    "name": "setMinimumBridgingDelay",
                                    "nameLocation": "2986:23:46",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8755,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8754,
                                                "mutability": "mutable",
                                                "name": "newMinimumBridgingDelay",
                                                "nameLocation": "3017:23:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8765,
                                                "src": "3010:30:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 8753,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3010:6:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3009:32:46"
                                    },
                                    "returnParameters": {
                                        "id": 8759,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3114:0:46"
                                    },
                                    "scope": 8900,
                                    "src": "2977:203:46",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8784,
                                        "nodeType": "Block",
                                        "src": "3861:64:46",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8779,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8768,
                                                            "src": "3887:7:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8780,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8770,
                                                            "src": "3896:7:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8781,
                                                            "name": "l1BridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8772,
                                                            "src": "3905:12:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8778,
                                                        "name": "_whitelistToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8426,
                                                        "src": "3871:15:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address,address)"
                                                        }
                                                    },
                                                    "id": 8782,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3871:47:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8783,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3871:47:46"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8766,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3186:508:46",
                                        "text": " @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\n @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\n @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\n @param l2Token Address of the L2 token representation. This is the token users would deposit on Arbitrum.\n @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token."
                                    },
                                    "functionSelector": "4dedca28",
                                    "id": 8785,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 8775,
                                                    "name": "crossDomainAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8700,
                                                    "src": "3843:16:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 8776,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 8774,
                                                "name": "onlyFromCrossDomainAccount",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5687,
                                                "src": "3816:26:46"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3816:44:46"
                                        }
                                    ],
                                    "name": "whitelistToken",
                                    "nameLocation": "3708:14:46",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8773,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8768,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "3740:7:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8785,
                                                "src": "3732:15:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8767,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3732:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8770,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "3765:7:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8785,
                                                "src": "3757:15:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8769,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3757:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8772,
                                                "mutability": "mutable",
                                                "name": "l1BridgePool",
                                                "nameLocation": "3790:12:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8785,
                                                "src": "3782:20:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8771,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3782:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3722:86:46"
                                    },
                                    "returnParameters": {
                                        "id": 8777,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3861:0:46"
                                    },
                                    "scope": 8900,
                                    "src": "3699:226:46",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8801,
                                        "nodeType": "Block",
                                        "src": "4428:61:46",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 8797,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8788,
                                                            "src": "4457:7:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8798,
                                                            "name": "depositsEnabled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8790,
                                                            "src": "4466:15:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "id": 8796,
                                                        "name": "_setEnableDeposits",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8447,
                                                        "src": "4438:18:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
                                                            "typeString": "function (address,bool)"
                                                        }
                                                    },
                                                    "id": 8799,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4438:44:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8800,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4438:44:46"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8786,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3931:354:46",
                                        "text": " @notice L1 owner can enable/disable deposits for a whitelisted token.\n @dev Only callable by the existing crossDomainAdmin via the Arbitrum cross domain messenger.\n @param l2Token address of L2 token to enable/disable deposits for.\n @param depositsEnabled bool to set if the deposit box should accept/reject deposits."
                                    },
                                    "functionSelector": "563c7f60",
                                    "id": 8802,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 8793,
                                                    "name": "crossDomainAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8700,
                                                    "src": "4406:16:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 8794,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 8792,
                                                "name": "onlyFromCrossDomainAccount",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5687,
                                                "src": "4379:26:46"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4379:44:46"
                                        }
                                    ],
                                    "name": "setEnableDeposits",
                                    "nameLocation": "4299:17:46",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8791,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8788,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "4325:7:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8802,
                                                "src": "4317:15:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8787,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4317:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8790,
                                                "mutability": "mutable",
                                                "name": "depositsEnabled",
                                                "nameLocation": "4339:15:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8802,
                                                "src": "4334:20:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 8789,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4334:4:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4316:39:46"
                                    },
                                    "returnParameters": {
                                        "id": 8795,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4428:0:46"
                                    },
                                    "scope": 8900,
                                    "src": "4290:199:46",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        8454
                                    ],
                                    "body": {
                                        "id": 8874,
                                        "nodeType": "Block",
                                        "src": "5266:891:46",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    8814
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 8814,
                                                        "mutability": "mutable",
                                                        "name": "bridgeDepositBoxBalance",
                                                        "nameLocation": "5284:23:46",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 8874,
                                                        "src": "5276:31:46",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 8813,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5276:7:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 8824,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 8821,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -28,
                                                                    "src": "5347:4:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_AVM_BridgeDepositBox_$8900",
                                                                        "typeString": "contract AVM_BridgeDepositBox"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_AVM_BridgeDepositBox_$8900",
                                                                        "typeString": "contract AVM_BridgeDepositBox"
                                                                    }
                                                                ],
                                                                "id": 8820,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "5339:7:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 8819,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "5339:7:46",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 8822,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5339:13:46",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 8816,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8805,
                                                                    "src": "5320:7:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 8815,
                                                                "name": "TokenLike",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8240,
                                                                "src": "5310:9:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_TokenLike_$8240_$",
                                                                    "typeString": "type(contract TokenLike)"
                                                                }
                                                            },
                                                            "id": 8817,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5310:18:46",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TokenLike_$8240",
                                                                "typeString": "contract TokenLike"
                                                            }
                                                        },
                                                        "id": 8818,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "balanceOf",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8239,
                                                        "src": "5310:28:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address) external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 8823,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5310:43:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5276:77:46"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 8828,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 8826,
                                                                "name": "bridgeDepositBoxBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8814,
                                                                "src": "5371:23:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 8827,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "5397:1:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "5371:27:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "63616e277420627269646765207a65726f20746f6b656e73",
                                                            "id": 8829,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5400:26:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71",
                                                                "typeString": "literal_string \"can't bridge zero tokens\""
                                                            },
                                                            "value": "can't bridge zero tokens"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71",
                                                                "typeString": "literal_string \"can't bridge zero tokens\""
                                                            }
                                                        ],
                                                        "id": 8825,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "5363:7:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8830,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5363:64:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8831,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5363:64:46"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 8834,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8805,
                                                                    "src": "5455:7:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 8833,
                                                                "name": "canBridge",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8632,
                                                                "src": "5445:9:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 8835,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5445:18:46",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6e6f6e2d77686974656c697374656420746f6b656e206f72206c6173742062726964676520746f6f20726563656e74",
                                                            "id": 8836,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5465:49:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6",
                                                                "typeString": "literal_string \"non-whitelisted token or last bridge too recent\""
                                                            },
                                                            "value": "non-whitelisted token or last bridge too recent"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6",
                                                                "typeString": "literal_string \"non-whitelisted token or last bridge too recent\""
                                                            }
                                                        ],
                                                        "id": 8832,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "5437:7:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8837,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5437:78:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8838,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5437:78:46"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8848,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 8839,
                                                                "name": "whitelistedTokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8278,
                                                                "src": "5526:17:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                    "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                }
                                                            },
                                                            "id": 8841,
                                                            "indexExpression": {
                                                                "id": 8840,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8805,
                                                                "src": "5544:7:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5526:26:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                            }
                                                        },
                                                        "id": 8842,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "lastBridgeTime",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8270,
                                                        "src": "5526:41:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 8845,
                                                                    "name": "getCurrentTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5596,
                                                                    "src": "5577:14:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 8846,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "5577:16:46",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 8844,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "5570:6:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint64_$",
                                                                "typeString": "type(uint64)"
                                                            },
                                                            "typeName": {
                                                                "id": 8843,
                                                                "name": "uint64",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "5570:6:46",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 8847,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5570:24:46",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "5526:68:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "id": 8849,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5526:68:46"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 8854,
                                                                    "name": "whitelistedTokens",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8278,
                                                                    "src": "5671:17:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                        "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                    }
                                                                },
                                                                "id": 8856,
                                                                "indexExpression": {
                                                                    "id": 8855,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8805,
                                                                    "src": "5689:7:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "5671:26:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                    "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                                }
                                                            },
                                                            "id": 8857,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "l1Token",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8266,
                                                            "src": "5671:34:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 8858,
                                                                    "name": "whitelistedTokens",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8278,
                                                                    "src": "5772:17:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                        "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                    }
                                                                },
                                                                "id": 8860,
                                                                "indexExpression": {
                                                                    "id": 8859,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8805,
                                                                    "src": "5790:7:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "5772:26:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                    "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                                }
                                                            },
                                                            "id": 8861,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "l1BridgePool",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8268,
                                                            "src": "5772:39:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8862,
                                                            "name": "bridgeDepositBoxBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8814,
                                                            "src": "5889:23:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "",
                                                            "id": 8863,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5990:2:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            },
                                                            "value": ""
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 8851,
                                                                    "name": "l2GatewayRouter",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8702,
                                                                    "src": "5624:15:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 8850,
                                                                "name": "StandardBridgeLike",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8693,
                                                                "src": "5605:18:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_StandardBridgeLike_$8693_$",
                                                                    "typeString": "type(contract StandardBridgeLike)"
                                                                }
                                                            },
                                                            "id": 8852,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5605:35:46",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_StandardBridgeLike_$8693",
                                                                "typeString": "contract StandardBridgeLike"
                                                            }
                                                        },
                                                        "id": 8853,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "outboundTransfer",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8692,
                                                        "src": "5605:52:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (address,address,uint256,bytes memory) payable external returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 8864,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5605:463:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "id": 8865,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5605:463:46"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8867,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8805,
                                                            "src": "6098:7:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8868,
                                                            "name": "bridgeDepositBoxBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8814,
                                                            "src": "6107:23:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8869,
                                                            "name": "l1Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8807,
                                                            "src": "6132:5:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 8870,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "6139:3:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 8871,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "6139:10:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8866,
                                                        "name": "TokensBridged",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8332,
                                                        "src": "6084:13:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                                                            "typeString": "function (address,uint256,uint256,address)"
                                                        }
                                                    },
                                                    "id": 8872,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6084:66:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8873,
                                                "nodeType": "EmitStatement",
                                                "src": "6079:71:46"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8803,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4629:548:46",
                                        "text": " @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\n      token bridge, to the L1 Withdraw box.\n @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\n      on L1 as the finalization of a L2->L1 tx is quite expensive.\n @param l2Token L2 token to relay over the canonical bridge.\n @param l1Gas Unused by Arbitrum, but included for potential forward compatibility considerations."
                                    },
                                    "functionSelector": "9bfd2cdc",
                                    "id": 8875,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 8811,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 8810,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "5251:12:46"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5251:14:46"
                                        }
                                    ],
                                    "name": "bridgeTokens",
                                    "nameLocation": "5191:12:46",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 8809,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "5242:8:46"
                                    },
                                    "parameters": {
                                        "id": 8808,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8805,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "5212:7:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8875,
                                                "src": "5204:15:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8804,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5204:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8807,
                                                "mutability": "mutable",
                                                "name": "l1Gas",
                                                "nameLocation": "5228:5:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8875,
                                                "src": "5221:12:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 8806,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5221:6:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5203:31:46"
                                    },
                                    "returnParameters": {
                                        "id": 8812,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5266:0:46"
                                    },
                                    "scope": 8900,
                                    "src": "5182:975:46",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8898,
                                        "nodeType": "Block",
                                        "src": "6365:172:46",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 8886,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 8881,
                                                                "name": "newCrossDomainAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8877,
                                                                "src": "6383:19:46",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 8884,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "6414:1:46",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 8883,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "6406:7:46",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 8882,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "6406:7:46",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 8885,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6406:10:46",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "6383:33:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "456d7074792061646472657373",
                                                            "id": 8887,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6418:15:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_aa0ab5a1cd950415cd9b3336f3396626bc2fbfb3d3bb8bee016bc0afd6493316",
                                                                "typeString": "literal_string \"Empty address\""
                                                            },
                                                            "value": "Empty address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_aa0ab5a1cd950415cd9b3336f3396626bc2fbfb3d3bb8bee016bc0afd6493316",
                                                                "typeString": "literal_string \"Empty address\""
                                                            }
                                                        ],
                                                        "id": 8880,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6375:7:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8888,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6375:59:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8889,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6375:59:46"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8892,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8890,
                                                        "name": "crossDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8700,
                                                        "src": "6444:16:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 8891,
                                                        "name": "newCrossDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8877,
                                                        "src": "6463:19:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "6444:38:46",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 8893,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6444:38:46"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 8895,
                                                            "name": "crossDomainAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8700,
                                                            "src": "6513:16:46",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8894,
                                                        "name": "SetXDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8706,
                                                        "src": "6497:15:46",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 8896,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6497:33:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8897,
                                                "nodeType": "EmitStatement",
                                                "src": "6492:38:46"
                                            }
                                        ]
                                    },
                                    "id": 8899,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setCrossDomainAdmin",
                                    "nameLocation": "6306:20:46",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8878,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8877,
                                                "mutability": "mutable",
                                                "name": "newCrossDomainAdmin",
                                                "nameLocation": "6335:19:46",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8899,
                                                "src": "6327:27:46",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8876,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6327:7:46",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6326:29:46"
                                    },
                                    "returnParameters": {
                                        "id": 8879,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6365:0:46"
                                    },
                                    "scope": 8900,
                                    "src": "6297:240:46",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 8901,
                            "src": "488:6051:46",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:6498:46"
                },
                "id": 46
            },
            "contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol",
                    "exportedSymbols": {
                        "Arbitrum_CrossDomainEnabled": [
                            9002
                        ],
                        "IBridge": [
                            5847
                        ],
                        "iArbitrum_Inbox": [
                            5874
                        ],
                        "iArbitrum_Outbox": [
                            5882
                        ]
                    },
                    "id": 9003,
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 8902,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "195:23:47"
                        },
                        {
                            "absolutePath": "contracts/external/avm/interfaces/iArbitrum_Inbox.sol",
                            "file": "../../external/avm/interfaces/iArbitrum_Inbox.sol",
                            "id": 8903,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9003,
                            "sourceUnit": 5875,
                            "src": "220:59:47",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/external/avm/interfaces/iArbitrum_Outbox.sol",
                            "file": "../../external/avm/interfaces/iArbitrum_Outbox.sol",
                            "id": 8904,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9003,
                            "sourceUnit": 5883,
                            "src": "280:60:47",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "Arbitrum_CrossDomainEnabled",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 9002,
                            "linearizedBaseContracts": [
                                9002
                            ],
                            "name": "Arbitrum_CrossDomainEnabled",
                            "nameLocation": "360:27:47",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "fb0e722b",
                                    "id": 8907,
                                    "mutability": "immutable",
                                    "name": "inbox",
                                    "nameLocation": "427:5:47",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9002,
                                    "src": "394:38:47",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_iArbitrum_Inbox_$5874",
                                        "typeString": "contract iArbitrum_Inbox"
                                    },
                                    "typeName": {
                                        "id": 8906,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 8905,
                                            "name": "iArbitrum_Inbox",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 5874,
                                            "src": "394:15:47"
                                        },
                                        "referencedDeclaration": 5874,
                                        "src": "394:15:47",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_iArbitrum_Inbox_$5874",
                                            "typeString": "contract iArbitrum_Inbox"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 8919,
                                        "nodeType": "Block",
                                        "src": "568:48:47",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 8917,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 8913,
                                                        "name": "inbox",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8907,
                                                        "src": "578:5:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_iArbitrum_Inbox_$5874",
                                                            "typeString": "contract iArbitrum_Inbox"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 8915,
                                                                "name": "_inbox",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8910,
                                                                "src": "602:6:47",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 8914,
                                                            "name": "iArbitrum_Inbox",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5874,
                                                            "src": "586:15:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_iArbitrum_Inbox_$5874_$",
                                                                "typeString": "type(contract iArbitrum_Inbox)"
                                                            }
                                                        },
                                                        "id": 8916,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "586:23:47",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_iArbitrum_Inbox_$5874",
                                                            "typeString": "contract iArbitrum_Inbox"
                                                        }
                                                    },
                                                    "src": "578:31:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_iArbitrum_Inbox_$5874",
                                                        "typeString": "contract iArbitrum_Inbox"
                                                    }
                                                },
                                                "id": 8918,
                                                "nodeType": "ExpressionStatement",
                                                "src": "578:31:47"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 8908,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "439:96:47",
                                        "text": " @param _inbox Contract that sends generalized messages to the Arbitrum chain."
                                    },
                                    "id": 8920,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8911,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8910,
                                                "mutability": "mutable",
                                                "name": "_inbox",
                                                "nameLocation": "560:6:47",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8920,
                                                "src": "552:14:47",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8909,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "552:7:47",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "551:16:47"
                                    },
                                    "returnParameters": {
                                        "id": 8912,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "568:0:47"
                                    },
                                    "scope": 9002,
                                    "src": "540:76:47",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 8957,
                                        "nodeType": "Block",
                                        "src": "1808:1423:47",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    8940
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 8940,
                                                        "mutability": "mutable",
                                                        "name": "seqNum",
                                                        "nameLocation": "2859:6:47",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 8957,
                                                        "src": "2851:14:47",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 8939,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2851:7:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 8954,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 8945,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8922,
                                                            "src": "2967:6:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "30",
                                                            "id": 8946,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2991:1:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        {
                                                            "id": 8947,
                                                            "name": "maxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8928,
                                                            "src": "3051:17:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8948,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8924,
                                                            "src": "3086:4:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8949,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8924,
                                                            "src": "3108:4:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 8950,
                                                            "name": "maxGas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8930,
                                                            "src": "3130:6:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8951,
                                                            "name": "gasPriceBid",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8932,
                                                            "src": "3154:11:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 8952,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8934,
                                                            "src": "3183:4:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 8941,
                                                                "name": "inbox",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8907,
                                                                "src": "2880:5:47",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_iArbitrum_Inbox_$5874",
                                                                    "typeString": "contract iArbitrum_Inbox"
                                                                }
                                                            },
                                                            "id": 8942,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "createRetryableTicketNoRefundAliasRewrite",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 5868,
                                                            "src": "2880:47:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                                                "typeString": "function (address,uint256,uint256,address,address,uint256,uint256,bytes memory) payable external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 8944,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "names": [
                                                            "value"
                                                        ],
                                                        "nodeType": "FunctionCallOptions",
                                                        "options": [
                                                            {
                                                                "id": 8943,
                                                                "name": "l1CallValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8926,
                                                                "src": "2936:11:47",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "src": "2880:69:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$value",
                                                            "typeString": "function (address,uint256,uint256,address,address,uint256,uint256,bytes memory) payable external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 8953,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2880:321:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2851:350:47"
                                            },
                                            {
                                                "expression": {
                                                    "id": 8955,
                                                    "name": "seqNum",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 8940,
                                                    "src": "3218:6:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 8938,
                                                "id": 8956,
                                                "nodeType": "Return",
                                                "src": "3211:13:47"
                                            }
                                        ]
                                    },
                                    "id": 8958,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendTxToL2NoAliassing",
                                    "nameLocation": "964:21:47",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 8935,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8922,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "1003:6:47",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8958,
                                                "src": "995:14:47",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8921,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "995:7:47",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8924,
                                                "mutability": "mutable",
                                                "name": "user",
                                                "nameLocation": "1077:4:47",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8958,
                                                "src": "1069:12:47",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8923,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1069:7:47",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8926,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "1146:11:47",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8958,
                                                "src": "1138:19:47",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8925,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1138:7:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8928,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "1215:17:47",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8958,
                                                "src": "1207:25:47",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8927,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1207:7:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8930,
                                                "mutability": "mutable",
                                                "name": "maxGas",
                                                "nameLocation": "1568:6:47",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8958,
                                                "src": "1560:14:47",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8929,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1560:7:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8932,
                                                "mutability": "mutable",
                                                "name": "gasPriceBid",
                                                "nameLocation": "1641:11:47",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8958,
                                                "src": "1633:19:47",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8931,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1633:7:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 8934,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "1731:4:47",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8958,
                                                "src": "1718:17:47",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 8933,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1718:5:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "985:795:47"
                                    },
                                    "returnParameters": {
                                        "id": 8938,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8937,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 8958,
                                                "src": "1799:7:47",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 8936,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1799:7:47",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1798:9:47"
                                    },
                                    "scope": 9002,
                                    "src": "955:2276:47",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 9000,
                                        "nodeType": "Block",
                                        "src": "3459:478:47",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    8964
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 8964,
                                                        "mutability": "mutable",
                                                        "name": "bridge",
                                                        "nameLocation": "3561:6:47",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9000,
                                                        "src": "3553:14:47",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IBridge_$5847",
                                                            "typeString": "contract IBridge"
                                                        },
                                                        "typeName": {
                                                            "id": 8963,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 8962,
                                                                "name": "IBridge",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 5847,
                                                                "src": "3553:7:47"
                                                            },
                                                            "referencedDeclaration": 5847,
                                                            "src": "3553:7:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IBridge_$5847",
                                                                "typeString": "contract IBridge"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 8970,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "id": 8966,
                                                                    "name": "inbox",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8907,
                                                                    "src": "3578:5:47",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_iArbitrum_Inbox_$5874",
                                                                        "typeString": "contract iArbitrum_Inbox"
                                                                    }
                                                                },
                                                                "id": 8967,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "bridge",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 5873,
                                                                "src": "3578:12:47",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view external returns (address)"
                                                                }
                                                            },
                                                            "id": 8968,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3578:14:47",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 8965,
                                                        "name": "IBridge",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5847,
                                                        "src": "3570:7:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IBridge_$5847_$",
                                                            "typeString": "type(contract IBridge)"
                                                        }
                                                    },
                                                    "id": 8969,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3570:23:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IBridge_$5847",
                                                        "typeString": "contract IBridge"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3553:40:47"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 8978,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 8972,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "3611:3:47",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 8973,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "3611:10:47",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 8976,
                                                                        "name": "bridge",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 8964,
                                                                        "src": "3633:6:47",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IBridge_$5847",
                                                                            "typeString": "contract IBridge"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_IBridge_$5847",
                                                                            "typeString": "contract IBridge"
                                                                        }
                                                                    ],
                                                                    "id": 8975,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "3625:7:47",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 8974,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "3625:7:47",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 8977,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3625:15:47",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "3611:29:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4e4f545f46524f4d5f425249444745",
                                                            "id": 8979,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3642:17:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_11d31a7f2d96eda6388edaeb9afa8e8d8dfd4901bc63d9f2e74c4d7e072a52ac",
                                                                "typeString": "literal_string \"NOT_FROM_BRIDGE\""
                                                            },
                                                            "value": "NOT_FROM_BRIDGE"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_11d31a7f2d96eda6388edaeb9afa8e8d8dfd4901bc63d9f2e74c4d7e072a52ac",
                                                                "typeString": "literal_string \"NOT_FROM_BRIDGE\""
                                                            }
                                                        ],
                                                        "id": 8971,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3603:7:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8980,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3603:57:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8981,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3603:57:47"
                                            },
                                            {
                                                "assignments": [
                                                    8983
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 8983,
                                                        "mutability": "mutable",
                                                        "name": "l2ToL1Sender",
                                                        "nameLocation": "3774:12:47",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9000,
                                                        "src": "3766:20:47",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 8982,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3766:7:47",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 8991,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "expression": {
                                                                            "id": 8985,
                                                                            "name": "bridge",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 8964,
                                                                            "src": "3806:6:47",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IBridge_$5847",
                                                                                "typeString": "contract IBridge"
                                                                            }
                                                                        },
                                                                        "id": 8986,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "activeOutbox",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 5846,
                                                                        "src": "3806:19:47",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                                            "typeString": "function () view external returns (address)"
                                                                        }
                                                                    },
                                                                    "id": 8987,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "3806:21:47",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 8984,
                                                                "name": "iArbitrum_Outbox",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5882,
                                                                "src": "3789:16:47",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_iArbitrum_Outbox_$5882_$",
                                                                    "typeString": "type(contract iArbitrum_Outbox)"
                                                                }
                                                            },
                                                            "id": 8988,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3789:39:47",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_iArbitrum_Outbox_$5882",
                                                                "typeString": "contract iArbitrum_Outbox"
                                                            }
                                                        },
                                                        "id": 8989,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "l2ToL1Sender",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5881,
                                                        "src": "3789:52:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                            "typeString": "function () view external returns (address)"
                                                        }
                                                    },
                                                    "id": 8990,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3789:54:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3766:77:47"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 8995,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 8993,
                                                                "name": "l2ToL1Sender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8983,
                                                                "src": "3861:12:47",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 8994,
                                                                "name": "l2Counterpart",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8960,
                                                                "src": "3877:13:47",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "3861:29:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f4e4c595f434f554e544552504152545f47415445574159",
                                                            "id": 8996,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3892:26:47",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f",
                                                                "typeString": "literal_string \"ONLY_COUNTERPART_GATEWAY\""
                                                            },
                                                            "value": "ONLY_COUNTERPART_GATEWAY"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_f8db86b69880e8156751df311618ee4c5bb0322ca68cabb2018f8b4fedcab58f",
                                                                "typeString": "literal_string \"ONLY_COUNTERPART_GATEWAY\""
                                                            }
                                                        ],
                                                        "id": 8992,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3853:7:47",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 8997,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3853:66:47",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 8998,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3853:66:47"
                                            },
                                            {
                                                "id": 8999,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "3929:1:47"
                                            }
                                        ]
                                    },
                                    "id": 9001,
                                    "name": "onlyFromCrossDomainAccount",
                                    "nameLocation": "3409:26:47",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 8961,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 8960,
                                                "mutability": "mutable",
                                                "name": "l2Counterpart",
                                                "nameLocation": "3444:13:47",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9001,
                                                "src": "3436:21:47",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 8959,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3436:7:47",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3435:23:47"
                                    },
                                    "src": "3400:537:47",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 9003,
                            "src": "342:3597:47",
                            "usedErrors": []
                        }
                    ],
                    "src": "195:3745:47"
                },
                "id": 47
            },
            "contracts/insured-bridge/avm/Arbitrum_Messenger.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/avm/Arbitrum_Messenger.sol",
                    "exportedSymbols": {
                        "Arbitrum_CrossDomainEnabled": [
                            9002
                        ],
                        "Arbitrum_Messenger": [
                            9092
                        ],
                        "Context": [
                            1974
                        ],
                        "IBridge": [
                            5847
                        ],
                        "MessengerInterface": [
                            9256
                        ],
                        "Ownable": [
                            729
                        ],
                        "iArbitrum_Inbox": [
                            5874
                        ],
                        "iArbitrum_Outbox": [
                            5882
                        ]
                    },
                    "id": 9093,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9004,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:48"
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol",
                            "file": "./Arbitrum_CrossDomainEnabled.sol",
                            "id": 9005,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9093,
                            "sourceUnit": 9003,
                            "src": "67:43:48",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/interfaces/MessengerInterface.sol",
                            "file": "../interfaces/MessengerInterface.sol",
                            "id": 9006,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9093,
                            "sourceUnit": 9257,
                            "src": "111:46:48",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                            "file": "@openzeppelin/contracts/access/Ownable.sol",
                            "id": 9007,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9093,
                            "sourceUnit": 730,
                            "src": "158:52:48",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 9009,
                                        "name": "Ownable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 729,
                                        "src": "712:7:48"
                                    },
                                    "id": 9010,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "712:7:48"
                                },
                                {
                                    "baseName": {
                                        "id": 9011,
                                        "name": "Arbitrum_CrossDomainEnabled",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 9002,
                                        "src": "721:27:48"
                                    },
                                    "id": 9012,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "721:27:48"
                                },
                                {
                                    "baseName": {
                                        "id": 9013,
                                        "name": "MessengerInterface",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 9256,
                                        "src": "750:18:48"
                                    },
                                    "id": 9014,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "750:18:48"
                                }
                            ],
                            "canonicalName": "Arbitrum_Messenger",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 9008,
                                "nodeType": "StructuredDocumentation",
                                "src": "212:468:48",
                                "text": " @notice Sends cross chain messages Arbitrum L2 network.\n @dev This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the\n BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger.\n @dev This address will be the sender of any L1 --> L2 retryable tickets, so it should be set as the cross domain\n owner for L2 contracts that expect to receive cross domain messages."
                            },
                            "fullyImplemented": true,
                            "id": 9092,
                            "linearizedBaseContracts": [
                                9092,
                                9256,
                                9002,
                                729,
                                1974
                            ],
                            "name": "Arbitrum_Messenger",
                            "nameLocation": "690:18:48",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "anonymous": false,
                                    "id": 9034,
                                    "name": "RelayedMessage",
                                    "nameLocation": "781:14:48",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9033,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9016,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "from",
                                                "nameLocation": "821:4:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9034,
                                                "src": "805:20:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9015,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "805:7:48",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9018,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "851:2:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9034,
                                                "src": "835:18:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9017,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "835:7:48",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9020,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "seqNum",
                                                "nameLocation": "879:6:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9034,
                                                "src": "863:22:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9019,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "863:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9022,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "userToRefund",
                                                "nameLocation": "903:12:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9034,
                                                "src": "895:20:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9021,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "895:7:48",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9024,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "933:11:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9034,
                                                "src": "925:19:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9023,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "925:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9026,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "gasLimit",
                                                "nameLocation": "962:8:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9034,
                                                "src": "954:16:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9025,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "954:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9028,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "gasPrice",
                                                "nameLocation": "988:8:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9034,
                                                "src": "980:16:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9027,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "980:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9030,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "1014:17:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9034,
                                                "src": "1006:25:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9029,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1006:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9032,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "1047:4:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9034,
                                                "src": "1041:10:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 9031,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1041:5:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "795:262:48"
                                    },
                                    "src": "775:283:48"
                                },
                                {
                                    "body": {
                                        "id": 9043,
                                        "nodeType": "Block",
                                        "src": "1229:2:48",
                                        "statements": []
                                    },
                                    "documentation": {
                                        "id": 9035,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1064:96:48",
                                        "text": " @param _inbox Contract that sends generalized messages to the Arbitrum chain."
                                    },
                                    "id": 9044,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 9040,
                                                    "name": "_inbox",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9037,
                                                    "src": "1221:6:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9041,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 9039,
                                                "name": "Arbitrum_CrossDomainEnabled",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 9002,
                                                "src": "1193:27:48"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1193:35:48"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9038,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9037,
                                                "mutability": "mutable",
                                                "name": "_inbox",
                                                "nameLocation": "1185:6:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9044,
                                                "src": "1177:14:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9036,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1177:7:48",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1176:16:48"
                                    },
                                    "returnParameters": {
                                        "id": 9042,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1229:0:48"
                                    },
                                    "scope": 9092,
                                    "src": "1165:66:48",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        9255
                                    ],
                                    "body": {
                                        "id": 9090,
                                        "nodeType": "Block",
                                        "src": "2508:505:48",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    9066
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 9066,
                                                        "mutability": "mutable",
                                                        "name": "seqNumber",
                                                        "nameLocation": "2625:9:48",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9090,
                                                        "src": "2617:17:48",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 9065,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2617:7:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 9076,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 9068,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9047,
                                                            "src": "2671:6:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9069,
                                                            "name": "userToRefund",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9049,
                                                            "src": "2679:12:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9070,
                                                            "name": "l1CallValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9051,
                                                            "src": "2693:11:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9071,
                                                            "name": "maxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9057,
                                                            "src": "2706:17:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9072,
                                                            "name": "gasLimit",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9053,
                                                            "src": "2725:8:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9073,
                                                            "name": "gasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9055,
                                                            "src": "2735:8:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9074,
                                                            "name": "message",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9059,
                                                            "src": "2745:7:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 9067,
                                                        "name": "sendTxToL2NoAliassing",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8958,
                                                        "src": "2649:21:48",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                                            "typeString": "function (address,address,uint256,uint256,uint256,uint256,bytes memory) returns (uint256)"
                                                        }
                                                    },
                                                    "id": 9075,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2649:104:48",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2617:136:48"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 9078,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "2796:3:48",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 9079,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "2796:10:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9080,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9047,
                                                            "src": "2820:6:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9081,
                                                            "name": "seqNumber",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9066,
                                                            "src": "2840:9:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9082,
                                                            "name": "userToRefund",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9049,
                                                            "src": "2863:12:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9083,
                                                            "name": "l1CallValue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9051,
                                                            "src": "2889:11:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9084,
                                                            "name": "gasLimit",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9053,
                                                            "src": "2914:8:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9085,
                                                            "name": "gasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9055,
                                                            "src": "2936:8:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9086,
                                                            "name": "maxSubmissionCost",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9057,
                                                            "src": "2958:17:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9087,
                                                            "name": "message",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9059,
                                                            "src": "2989:7:48",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 9077,
                                                        "name": "RelayedMessage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9034,
                                                        "src": "2768:14:48",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,address,uint256,address,uint256,uint256,uint256,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "id": 9088,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2768:238:48",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9089,
                                                "nodeType": "EmitStatement",
                                                "src": "2763:243:48"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9045,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1237:1002:48",
                                        "text": " @notice Sends a message to an account on L2. If this message reverts on l2 for any reason it can either be\n resent on L1, or redeemed on L2 manually. To learn more see how \"retryable tickets\" work on Arbitrum\n https://developer.offchainlabs.com/docs/l1_l2_messages#parameters\n @param target The intended recipient on L2.\n @param userToRefund User on L2 to refund extra fees to.\n @param l1CallValue Amount of ETH deposited to `target` contract on L2. Used to pay for L2 submission fee and\n l2CallValue. This will usually be > 0.\n @param gasLimit The gasLimit for the receipt of the message on L2.\n @param gasPrice Gas price bid for L2 execution.\n @param maxSubmissionCost: Max gas deducted from user's L2 balance to cover base submission fee.\n This amount is proportional to the size of `data`.\n @param message The data to send to the target (usually calldata to a function with\n  `onlyFromCrossDomainAccount()`)"
                                    },
                                    "functionSelector": "9e353c70",
                                    "id": 9091,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 9063,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9062,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "2498:9:48"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2498:9:48"
                                        }
                                    ],
                                    "name": "relayMessage",
                                    "nameLocation": "2253:12:48",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 9061,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "2489:8:48"
                                    },
                                    "parameters": {
                                        "id": 9060,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9047,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "2283:6:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9091,
                                                "src": "2275:14:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9046,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2275:7:48",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9049,
                                                "mutability": "mutable",
                                                "name": "userToRefund",
                                                "nameLocation": "2307:12:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9091,
                                                "src": "2299:20:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9048,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2299:7:48",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9051,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "2337:11:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9091,
                                                "src": "2329:19:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9050,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2329:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9053,
                                                "mutability": "mutable",
                                                "name": "gasLimit",
                                                "nameLocation": "2366:8:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9091,
                                                "src": "2358:16:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9052,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2358:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9055,
                                                "mutability": "mutable",
                                                "name": "gasPrice",
                                                "nameLocation": "2392:8:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9091,
                                                "src": "2384:16:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9054,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2384:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9057,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "2418:17:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9091,
                                                "src": "2410:25:48",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9056,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2410:7:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9059,
                                                "mutability": "mutable",
                                                "name": "message",
                                                "nameLocation": "2458:7:48",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9091,
                                                "src": "2445:20:48",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 9058,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2445:5:48",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2265:206:48"
                                    },
                                    "returnParameters": {
                                        "id": 9064,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2508:0:48"
                                    },
                                    "scope": 9092,
                                    "src": "2244:769:48",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9093,
                            "src": "681:2334:48",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:2974:48"
                },
                "id": 48
            },
            "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol",
                    "exportedSymbols": {
                        "BridgeAdminInterface": [
                            9210
                        ]
                    },
                    "id": 9211,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9094,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:49"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "BridgeAdminInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 9095,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:85:49",
                                "text": " @notice Helper view methods designed to be called by BridgePool contracts."
                            },
                            "fullyImplemented": false,
                            "id": 9210,
                            "linearizedBaseContracts": [
                                9210
                            ],
                            "name": "BridgeAdminInterface",
                            "nameLocation": "163:20:49",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "anonymous": false,
                                    "id": 9103,
                                    "name": "SetDepositContracts",
                                    "nameLocation": "196:19:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9102,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9097,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "241:7:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9103,
                                                "src": "225:23:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9096,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "225:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9099,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l2DepositContract",
                                                "nameLocation": "274:17:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9103,
                                                "src": "258:33:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9098,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "258:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9101,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l2MessengerContract",
                                                "nameLocation": "317:19:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9103,
                                                "src": "301:35:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9100,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "301:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "215:127:49"
                                    },
                                    "src": "190:153:49"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9109,
                                    "name": "SetCrossDomainAdmin",
                                    "nameLocation": "354:19:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9108,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9105,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "390:7:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9109,
                                                "src": "374:23:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9104,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "374:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9107,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "415:8:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9109,
                                                "src": "399:24:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9106,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "399:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "373:51:49"
                                    },
                                    "src": "348:77:49"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9113,
                                    "name": "SetRelayIdentifier",
                                    "nameLocation": "436:18:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9112,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9111,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "471:10:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9113,
                                                "src": "455:26:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 9110,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "455:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "454:28:49"
                                    },
                                    "src": "430:53:49"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9117,
                                    "name": "SetOptimisticOracleLiveness",
                                    "nameLocation": "494:27:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9116,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9115,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "liveness",
                                                "nameLocation": "537:8:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9117,
                                                "src": "522:23:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 9114,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "522:6:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "521:25:49"
                                    },
                                    "src": "488:59:49"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9121,
                                    "name": "SetProposerBondPct",
                                    "nameLocation": "558:18:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9120,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9119,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "proposerBondPct",
                                                "nameLocation": "592:15:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9121,
                                                "src": "577:30:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9118,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "577:6:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "576:32:49"
                                    },
                                    "src": "552:57:49"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9131,
                                    "name": "WhitelistToken",
                                    "nameLocation": "620:14:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9130,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9123,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "643:7:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9131,
                                                "src": "635:15:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9122,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "635:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9125,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "668:7:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9131,
                                                "src": "652:23:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9124,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "652:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9127,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "693:7:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9131,
                                                "src": "677:23:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9126,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "677:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9129,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "718:10:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9131,
                                                "src": "702:26:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9128,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "702:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "634:95:49"
                                    },
                                    "src": "614:116:49"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9137,
                                    "name": "SetMinimumBridgingDelay",
                                    "nameLocation": "741:23:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9136,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9133,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "781:7:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9137,
                                                "src": "765:23:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9132,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "765:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9135,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newMinimumBridgingDelay",
                                                "nameLocation": "797:23:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9137,
                                                "src": "790:30:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9134,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "790:6:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "764:57:49"
                                    },
                                    "src": "735:87:49"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9145,
                                    "name": "DepositsEnabled",
                                    "nameLocation": "833:15:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9144,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9139,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "865:7:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9145,
                                                "src": "849:23:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9138,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "849:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9141,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "890:7:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9145,
                                                "src": "874:23:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9140,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "874:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9143,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "depositsEnabled",
                                                "nameLocation": "904:15:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9145,
                                                "src": "899:20:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 9142,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "899:4:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "848:72:49"
                                    },
                                    "src": "827:94:49"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9152,
                                    "name": "BridgePoolsAdminTransferred",
                                    "nameLocation": "932:27:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9151,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9148,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "bridgePools",
                                                "nameLocation": "970:11:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9152,
                                                "src": "960:21:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 9146,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "960:7:49",
                                                        "stateMutability": "nonpayable",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "id": 9147,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "960:9:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                        "typeString": "address[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9150,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "999:8:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9152,
                                                "src": "983:24:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9149,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "983:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "959:49:49"
                                    },
                                    "src": "926:83:49"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9158,
                                    "name": "SetLpFeeRate",
                                    "nameLocation": "1020:12:49",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9157,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9154,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "1049:10:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9158,
                                                "src": "1033:26:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9153,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1033:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9156,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newLpFeeRatePerSecond",
                                                "nameLocation": "1068:21:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9158,
                                                "src": "1061:28:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9155,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1061:6:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1032:58:49"
                                    },
                                    "src": "1014:77:49"
                                },
                                {
                                    "functionSelector": "b9a3c84c",
                                    "id": 9163,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "finder",
                                    "nameLocation": "1106:6:49",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9159,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1112:2:49"
                                    },
                                    "returnParameters": {
                                        "id": 9162,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9161,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9163,
                                                "src": "1138:7:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9160,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1138:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1137:9:49"
                                    },
                                    "scope": 9210,
                                    "src": "1097:50:49",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "canonicalName": "BridgeAdminInterface.DepositUtilityContracts",
                                    "id": 9168,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 9165,
                                            "mutability": "mutable",
                                            "name": "depositContract",
                                            "nameLocation": "1202:15:49",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9168,
                                            "src": "1194:23:49",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 9164,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1194:7:49",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 9167,
                                            "mutability": "mutable",
                                            "name": "messengerContract",
                                            "nameLocation": "1294:17:49",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9168,
                                            "src": "1286:25:49",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 9166,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1286:7:49",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "DepositUtilityContracts",
                                    "nameLocation": "1160:23:49",
                                    "nodeType": "StructDefinition",
                                    "scope": 9210,
                                    "src": "1153:249:49",
                                    "visibility": "public"
                                },
                                {
                                    "functionSelector": "7eb4fa73",
                                    "id": 9176,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "depositContracts",
                                    "nameLocation": "1417:16:49",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9171,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9170,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9176,
                                                "src": "1434:7:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9169,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1434:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1433:9:49"
                                    },
                                    "returnParameters": {
                                        "id": 9175,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9174,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9176,
                                                "src": "1466:30:49",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_memory_ptr",
                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts"
                                                },
                                                "typeName": {
                                                    "id": 9173,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 9172,
                                                        "name": "DepositUtilityContracts",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 9168,
                                                        "src": "1466:23:49"
                                                    },
                                                    "referencedDeclaration": 9168,
                                                    "src": "1466:23:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositUtilityContracts_$9168_storage_ptr",
                                                        "typeString": "struct BridgeAdminInterface.DepositUtilityContracts"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1465:32:49"
                                    },
                                    "scope": 9210,
                                    "src": "1408:90:49",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "canonicalName": "BridgeAdminInterface.L1TokenRelationships",
                                    "id": 9183,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 9180,
                                            "mutability": "mutable",
                                            "name": "l2Tokens",
                                            "nameLocation": "1570:8:49",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9183,
                                            "src": "1542:36:49",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                                "typeString": "mapping(uint256 => address)"
                                            },
                                            "typeName": {
                                                "id": 9179,
                                                "keyType": {
                                                    "id": 9177,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1550:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Mapping",
                                                "src": "1542:27:49",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                                    "typeString": "mapping(uint256 => address)"
                                                },
                                                "valueType": {
                                                    "id": 9178,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1561:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 9182,
                                            "mutability": "mutable",
                                            "name": "bridgePool",
                                            "nameLocation": "1631:10:49",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 9183,
                                            "src": "1623:18:49",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 9181,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1623:7:49",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "L1TokenRelationships",
                                    "nameLocation": "1511:20:49",
                                    "nodeType": "StructDefinition",
                                    "scope": 9210,
                                    "src": "1504:144:49",
                                    "visibility": "public"
                                },
                                {
                                    "functionSelector": "bf06c19a",
                                    "id": 9194,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "whitelistedTokens",
                                    "nameLocation": "1663:17:49",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9188,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9185,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9194,
                                                "src": "1681:7:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9184,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1681:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9187,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9194,
                                                "src": "1690:7:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9186,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1690:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1680:18:49"
                                    },
                                    "returnParameters": {
                                        "id": 9193,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9190,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "1730:7:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9194,
                                                "src": "1722:15:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9189,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1722:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9192,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "1747:10:49",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9194,
                                                "src": "1739:18:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9191,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1739:7:49",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1721:37:49"
                                    },
                                    "scope": 9210,
                                    "src": "1654:105:49",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "173684c5",
                                    "id": 9199,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "optimisticOracleLiveness",
                                    "nameLocation": "1774:24:49",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9195,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1798:2:49"
                                    },
                                    "returnParameters": {
                                        "id": 9198,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9197,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9199,
                                                "src": "1824:6:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 9196,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1824:6:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1823:8:49"
                                    },
                                    "scope": 9210,
                                    "src": "1765:67:49",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "c73a32c3",
                                    "id": 9204,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposerBondPct",
                                    "nameLocation": "1847:15:49",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9200,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1862:2:49"
                                    },
                                    "returnParameters": {
                                        "id": 9203,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9202,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9204,
                                                "src": "1888:6:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9201,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1888:6:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1887:8:49"
                                    },
                                    "scope": 9210,
                                    "src": "1838:58:49",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "7998a1c4",
                                    "id": 9209,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "identifier",
                                    "nameLocation": "1911:10:49",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9205,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1921:2:49"
                                    },
                                    "returnParameters": {
                                        "id": 9208,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9207,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9209,
                                                "src": "1947:7:49",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 9206,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1947:7:49",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1946:9:49"
                                    },
                                    "scope": 9210,
                                    "src": "1902:54:49",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9211,
                            "src": "153:1805:49",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1917:49"
                },
                "id": 49
            },
            "contracts/insured-bridge/interfaces/BridgePoolInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/interfaces/BridgePoolInterface.sol",
                    "exportedSymbols": {
                        "BridgePoolInterface": [
                            9235
                        ],
                        "IERC20": [
                            1406
                        ]
                    },
                    "id": 9236,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9212,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:50"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 9213,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9236,
                            "sourceUnit": 1407,
                            "src": "67:56:50",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "BridgePoolInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 9235,
                            "linearizedBaseContracts": [
                                9235
                            ],
                            "name": "BridgePoolInterface",
                            "nameLocation": "135:19:50",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "c01e1bd6",
                                    "id": 9219,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "l1Token",
                                    "nameLocation": "170:7:50",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9214,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "177:2:50"
                                    },
                                    "returnParameters": {
                                        "id": 9218,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9217,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9219,
                                                "src": "203:6:50",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 9216,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 9215,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "203:6:50"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "203:6:50",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "202:8:50"
                                    },
                                    "scope": 9235,
                                    "src": "161:50:50",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "8f283970",
                                    "id": 9224,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "changeAdmin",
                                    "nameLocation": "226:11:50",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9222,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9221,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "246:8:50",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9224,
                                                "src": "238:16:50",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9220,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "238:7:50",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "237:18:50"
                                    },
                                    "returnParameters": {
                                        "id": 9223,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "264:0:50"
                                    },
                                    "scope": 9235,
                                    "src": "217:48:50",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "27f224ca",
                                    "id": 9229,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setLpFeeRatePerSecond",
                                    "nameLocation": "280:21:50",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9227,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9226,
                                                "mutability": "mutable",
                                                "name": "_newLpFeeRatePerSecond",
                                                "nameLocation": "309:22:50",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9229,
                                                "src": "302:29:50",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9225,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "302:6:50",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "301:31:50"
                                    },
                                    "returnParameters": {
                                        "id": 9228,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "341:0:50"
                                    },
                                    "scope": 9235,
                                    "src": "271:71:50",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "08ed5b14",
                                    "id": 9234,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setRelaysEnabled",
                                    "nameLocation": "357:16:50",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9232,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9231,
                                                "mutability": "mutable",
                                                "name": "_relaysEnabled",
                                                "nameLocation": "379:14:50",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9234,
                                                "src": "374:19:50",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 9230,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "374:4:50",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "373:21:50"
                                    },
                                    "returnParameters": {
                                        "id": 9233,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "403:0:50"
                                    },
                                    "scope": 9235,
                                    "src": "348:56:50",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9236,
                            "src": "125:281:50",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:365:50"
                },
                "id": 50
            },
            "contracts/insured-bridge/interfaces/MessengerInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/interfaces/MessengerInterface.sol",
                    "exportedSymbols": {
                        "MessengerInterface": [
                            9256
                        ]
                    },
                    "id": 9257,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9237,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:51"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "MessengerInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 9238,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:146:51",
                                "text": " @notice Sends cross chain messages to contracts on a specific L2 network. The `relayMessage` implementation will\n differ for each L2."
                            },
                            "fullyImplemented": false,
                            "id": 9256,
                            "linearizedBaseContracts": [
                                9256
                            ],
                            "name": "MessengerInterface",
                            "nameLocation": "224:18:51",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "9e353c70",
                                    "id": 9255,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "relayMessage",
                                    "nameLocation": "258:12:51",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9253,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9240,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "288:6:51",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9255,
                                                "src": "280:14:51",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9239,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "280:7:51",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9242,
                                                "mutability": "mutable",
                                                "name": "userToRefund",
                                                "nameLocation": "312:12:51",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9255,
                                                "src": "304:20:51",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9241,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "304:7:51",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9244,
                                                "mutability": "mutable",
                                                "name": "l1CallValue",
                                                "nameLocation": "342:11:51",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9255,
                                                "src": "334:19:51",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9243,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "334:7:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9246,
                                                "mutability": "mutable",
                                                "name": "gasLimit",
                                                "nameLocation": "371:8:51",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9255,
                                                "src": "363:16:51",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9245,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "363:7:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9248,
                                                "mutability": "mutable",
                                                "name": "gasPrice",
                                                "nameLocation": "397:8:51",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9255,
                                                "src": "389:16:51",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9247,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "389:7:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9250,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "423:17:51",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9255,
                                                "src": "415:25:51",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9249,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "415:7:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9252,
                                                "mutability": "mutable",
                                                "name": "message",
                                                "nameLocation": "463:7:51",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9255,
                                                "src": "450:20:51",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 9251,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "450:5:51",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "270:206:51"
                                    },
                                    "returnParameters": {
                                        "id": 9254,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "493:0:51"
                                    },
                                    "scope": 9256,
                                    "src": "249:245:51",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9257,
                            "src": "214:282:51",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:455:51"
                },
                "id": 51
            },
            "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol",
                    "exportedSymbols": {
                        "Address": [
                            1951
                        ],
                        "BridgeDepositBox": [
                            8633
                        ],
                        "CrossDomainEnabled": [
                            172
                        ],
                        "ICrossDomainMessenger": [
                            211
                        ],
                        "IERC20": [
                            1406
                        ],
                        "IL2ERC20Bridge": [
                            93
                        ],
                        "Lib_PredeployAddresses": [
                            251
                        ],
                        "Lockable": [
                            5437
                        ],
                        "OVM_BridgeDepositBox": [
                            9464
                        ],
                        "SafeERC20": [
                            1655
                        ],
                        "Testable": [
                            5597
                        ],
                        "Timer": [
                            5632
                        ],
                        "TokenLike": [
                            8240
                        ],
                        "WETH9Like": [
                            8249
                        ]
                    },
                    "id": 9465,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9258,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:52"
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/BridgeDepositBox.sol",
                            "file": "../BridgeDepositBox.sol",
                            "id": 9259,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9465,
                            "sourceUnit": 8634,
                            "src": "67:33:52",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol",
                            "file": "@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol",
                            "id": 9260,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9465,
                            "sourceUnit": 173,
                            "src": "101:73:52",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol",
                            "file": "@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol",
                            "id": 9261,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9465,
                            "sourceUnit": 252,
                            "src": "175:80:52",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol",
                            "file": "@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol",
                            "id": 9262,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9465,
                            "sourceUnit": 94,
                            "src": "256:65:52",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 9264,
                                        "name": "BridgeDepositBox",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 8633,
                                        "src": "473:16:52"
                                    },
                                    "id": 9265,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "473:16:52"
                                },
                                {
                                    "baseName": {
                                        "id": 9266,
                                        "name": "CrossDomainEnabled",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 172,
                                        "src": "491:18:52"
                                    },
                                    "id": 9267,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "491:18:52"
                                }
                            ],
                            "canonicalName": "OVM_BridgeDepositBox",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 9263,
                                "nodeType": "StructuredDocumentation",
                                "src": "323:115:52",
                                "text": " @notice OVM specific bridge deposit box.\n @dev Uses OVM cross-domain-enabled logic for access control."
                            },
                            "fullyImplemented": true,
                            "id": 9464,
                            "linearizedBaseContracts": [
                                9464,
                                172,
                                8633,
                                5437,
                                5597
                            ],
                            "name": "OVM_BridgeDepositBox",
                            "nameLocation": "449:20:52",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "5285e058",
                                    "id": 9269,
                                    "mutability": "mutable",
                                    "name": "crossDomainAdmin",
                                    "nameLocation": "616:16:52",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9464,
                                    "src": "601:31:52",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9268,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "601:7:52",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9273,
                                    "name": "SetXDomainAdmin",
                                    "nameLocation": "645:15:52",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9272,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9271,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "677:8:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9273,
                                                "src": "661:24:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9270,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "661:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "660:26:52"
                                    },
                                    "src": "639:48:52"
                                },
                                {
                                    "body": {
                                        "id": 9301,
                                        "nodeType": "Block",
                                        "src": "1634:56:52",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9298,
                                                            "name": "_crossDomainAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9276,
                                                            "src": "1665:17:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9297,
                                                        "name": "_setCrossDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9463,
                                                        "src": "1644:20:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 9299,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1644:39:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9300,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1644:39:52"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9274,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "693:602:52",
                                        "text": " @notice Construct the Optimism Bridge Deposit Box\n @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\n @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\n @param _chainId L2 Chain identifier this deposit box is deployed on.\n @param _l1Weth Address of Weth on L1. Used to inform if the deposit should wrap ETH to WETH, if deposit is ETH.\n @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production."
                                    },
                                    "id": 9302,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "expression": {
                                                        "id": 9287,
                                                        "name": "Lib_PredeployAddresses",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 251,
                                                        "src": "1499:22:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_Lib_PredeployAddresses_$251_$",
                                                            "typeString": "type(library Lib_PredeployAddresses)"
                                                        }
                                                    },
                                                    "id": 9288,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "L2_CROSS_DOMAIN_MESSENGER",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 232,
                                                    "src": "1499:48:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9289,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 9286,
                                                "name": "CrossDomainEnabled",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 172,
                                                "src": "1480:18:52"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1480:68:52"
                                        },
                                        {
                                            "arguments": [
                                                {
                                                    "id": 9291,
                                                    "name": "_minimumBridgingDelay",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9278,
                                                    "src": "1574:21:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                {
                                                    "id": 9292,
                                                    "name": "_chainId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9280,
                                                    "src": "1597:8:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "id": 9293,
                                                    "name": "_l1Weth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9282,
                                                    "src": "1607:7:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                {
                                                    "id": 9294,
                                                    "name": "timerAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9284,
                                                    "src": "1616:12:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9295,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 9290,
                                                "name": "BridgeDepositBox",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 8633,
                                                "src": "1557:16:52"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1557:72:52"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9285,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9276,
                                                "mutability": "mutable",
                                                "name": "_crossDomainAdmin",
                                                "nameLocation": "1329:17:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9302,
                                                "src": "1321:25:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9275,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1321:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9278,
                                                "mutability": "mutable",
                                                "name": "_minimumBridgingDelay",
                                                "nameLocation": "1363:21:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9302,
                                                "src": "1356:28:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9277,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1356:6:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9280,
                                                "mutability": "mutable",
                                                "name": "_chainId",
                                                "nameLocation": "1402:8:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9302,
                                                "src": "1394:16:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9279,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1394:7:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9282,
                                                "mutability": "mutable",
                                                "name": "_l1Weth",
                                                "nameLocation": "1428:7:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9302,
                                                "src": "1420:15:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9281,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1420:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9284,
                                                "mutability": "mutable",
                                                "name": "timerAddress",
                                                "nameLocation": "1453:12:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9302,
                                                "src": "1445:20:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9283,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1445:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1311:160:52"
                                    },
                                    "returnParameters": {
                                        "id": 9296,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1634:0:52"
                                    },
                                    "scope": 9464,
                                    "src": "1300:390:52",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9315,
                                        "nodeType": "Block",
                                        "src": "2388:58:52",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9312,
                                                            "name": "newCrossDomainAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9305,
                                                            "src": "2419:19:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9311,
                                                        "name": "_setCrossDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9463,
                                                        "src": "2398:20:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 9313,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2398:41:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9314,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2398:41:52"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9303,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1830:443:52",
                                        "text": " @notice Changes the L1 contract that can trigger admin functions on this L2 deposit deposit box.\n @dev This should be set to the address of the L1 contract that ultimately relays a cross-domain message, which\n is expected to be the Optimism_Messenger.\n @dev Only callable by the existing admin via the Optimism cross domain messenger.\n @param newCrossDomainAdmin address of the new L1 admin contract."
                                    },
                                    "functionSelector": "de7eba78",
                                    "id": 9316,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 9308,
                                                    "name": "crossDomainAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9269,
                                                    "src": "2370:16:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9309,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9307,
                                                "name": "onlyFromCrossDomainAccount",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 140,
                                                "src": "2343:26:52"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2343:44:52"
                                        }
                                    ],
                                    "name": "setCrossDomainAdmin",
                                    "nameLocation": "2287:19:52",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9306,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9305,
                                                "mutability": "mutable",
                                                "name": "newCrossDomainAdmin",
                                                "nameLocation": "2315:19:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9316,
                                                "src": "2307:27:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9304,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2307:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2306:29:52"
                                    },
                                    "returnParameters": {
                                        "id": 9310,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2388:0:52"
                                    },
                                    "scope": 9464,
                                    "src": "2278:168:52",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9329,
                                        "nodeType": "Block",
                                        "src": "2865:66:52",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9326,
                                                            "name": "newMinimumBridgingDelay",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9319,
                                                            "src": "2900:23:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 9325,
                                                        "name": "_setMinimumBridgingDelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8389,
                                                        "src": "2875:24:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 9327,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2875:49:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9328,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2875:49:52"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9317,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2452:271:52",
                                        "text": " @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\n @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\n @param newMinimumBridgingDelay the new minimum delay."
                                    },
                                    "functionSelector": "2ec35b31",
                                    "id": 9330,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 9322,
                                                    "name": "crossDomainAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9269,
                                                    "src": "2843:16:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9323,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9321,
                                                "name": "onlyFromCrossDomainAccount",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 140,
                                                "src": "2816:26:52"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2816:44:52"
                                        }
                                    ],
                                    "name": "setMinimumBridgingDelay",
                                    "nameLocation": "2737:23:52",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9320,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9319,
                                                "mutability": "mutable",
                                                "name": "newMinimumBridgingDelay",
                                                "nameLocation": "2768:23:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9330,
                                                "src": "2761:30:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9318,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2761:6:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2760:32:52"
                                    },
                                    "returnParameters": {
                                        "id": 9324,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2865:0:52"
                                    },
                                    "scope": 9464,
                                    "src": "2728:203:52",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9349,
                                        "nodeType": "Block",
                                        "src": "3612:64:52",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9344,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9333,
                                                            "src": "3638:7:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9345,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9335,
                                                            "src": "3647:7:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9346,
                                                            "name": "l1BridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9337,
                                                            "src": "3656:12:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9343,
                                                        "name": "_whitelistToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8426,
                                                        "src": "3622:15:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address,address)"
                                                        }
                                                    },
                                                    "id": 9347,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3622:47:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9348,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3622:47:52"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9331,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2937:508:52",
                                        "text": " @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\n @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\n @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\n @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\n @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token."
                                    },
                                    "functionSelector": "4dedca28",
                                    "id": 9350,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 9340,
                                                    "name": "crossDomainAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9269,
                                                    "src": "3594:16:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9341,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9339,
                                                "name": "onlyFromCrossDomainAccount",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 140,
                                                "src": "3567:26:52"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3567:44:52"
                                        }
                                    ],
                                    "name": "whitelistToken",
                                    "nameLocation": "3459:14:52",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9338,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9333,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "3491:7:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9350,
                                                "src": "3483:15:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9332,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3483:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9335,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "3516:7:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9350,
                                                "src": "3508:15:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9334,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3508:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9337,
                                                "mutability": "mutable",
                                                "name": "l1BridgePool",
                                                "nameLocation": "3541:12:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9350,
                                                "src": "3533:20:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9336,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3533:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3473:86:52"
                                    },
                                    "returnParameters": {
                                        "id": 9342,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3612:0:52"
                                    },
                                    "scope": 9464,
                                    "src": "3450:226:52",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9366,
                                        "nodeType": "Block",
                                        "src": "4179:61:52",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9362,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9353,
                                                            "src": "4208:7:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9363,
                                                            "name": "depositsEnabled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9355,
                                                            "src": "4217:15:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "id": 9361,
                                                        "name": "_setEnableDeposits",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8447,
                                                        "src": "4189:18:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
                                                            "typeString": "function (address,bool)"
                                                        }
                                                    },
                                                    "id": 9364,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4189:44:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9365,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4189:44:52"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9351,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3682:354:52",
                                        "text": " @notice L1 owner can enable/disable deposits for a whitelisted token.\n @dev Only callable by the existing crossDomainAdmin via the optimism cross domain messenger.\n @param l2Token address of L2 token to enable/disable deposits for.\n @param depositsEnabled bool to set if the deposit box should accept/reject deposits."
                                    },
                                    "functionSelector": "563c7f60",
                                    "id": 9367,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 9358,
                                                    "name": "crossDomainAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9269,
                                                    "src": "4157:16:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9359,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9357,
                                                "name": "onlyFromCrossDomainAccount",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 140,
                                                "src": "4130:26:52"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "4130:44:52"
                                        }
                                    ],
                                    "name": "setEnableDeposits",
                                    "nameLocation": "4050:17:52",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9356,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9353,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "4076:7:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9367,
                                                "src": "4068:15:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9352,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4068:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9355,
                                                "mutability": "mutable",
                                                "name": "depositsEnabled",
                                                "nameLocation": "4090:15:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9367,
                                                "src": "4085:20:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 9354,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4085:4:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4067:39:52"
                                    },
                                    "returnParameters": {
                                        "id": 9360,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4179:0:52"
                                    },
                                    "scope": 9464,
                                    "src": "4041:199:52",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        8454
                                    ],
                                    "body": {
                                        "id": 9438,
                                        "nodeType": "Block",
                                        "src": "5025:982:52",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    9379
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 9379,
                                                        "mutability": "mutable",
                                                        "name": "bridgeDepositBoxBalance",
                                                        "nameLocation": "5043:23:52",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9438,
                                                        "src": "5035:31:52",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 9378,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5035:7:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 9389,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 9386,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -28,
                                                                    "src": "5106:4:52",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_OVM_BridgeDepositBox_$9464",
                                                                        "typeString": "contract OVM_BridgeDepositBox"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_OVM_BridgeDepositBox_$9464",
                                                                        "typeString": "contract OVM_BridgeDepositBox"
                                                                    }
                                                                ],
                                                                "id": 9385,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "5098:7:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 9384,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "5098:7:52",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 9387,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5098:13:52",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 9381,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9370,
                                                                    "src": "5079:7:52",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 9380,
                                                                "name": "TokenLike",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8240,
                                                                "src": "5069:9:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_TokenLike_$8240_$",
                                                                    "typeString": "type(contract TokenLike)"
                                                                }
                                                            },
                                                            "id": 9382,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5069:18:52",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TokenLike_$8240",
                                                                "typeString": "contract TokenLike"
                                                            }
                                                        },
                                                        "id": 9383,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "balanceOf",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8239,
                                                        "src": "5069:28:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address) external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 9388,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5069:43:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5035:77:52"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 9393,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 9391,
                                                                "name": "bridgeDepositBoxBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9379,
                                                                "src": "5130:23:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 9392,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "5156:1:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "5130:27:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "63616e277420627269646765207a65726f20746f6b656e73",
                                                            "id": 9394,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5159:26:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71",
                                                                "typeString": "literal_string \"can't bridge zero tokens\""
                                                            },
                                                            "value": "can't bridge zero tokens"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71",
                                                                "typeString": "literal_string \"can't bridge zero tokens\""
                                                            }
                                                        ],
                                                        "id": 9390,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "5122:7:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 9395,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5122:64:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9396,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5122:64:52"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 9399,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9370,
                                                                    "src": "5214:7:52",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 9398,
                                                                "name": "canBridge",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8632,
                                                                "src": "5204:9:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 9400,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5204:18:52",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6e6f6e2d77686974656c697374656420746f6b656e206f72206c6173742062726964676520746f6f20726563656e74",
                                                            "id": 9401,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5224:49:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6",
                                                                "typeString": "literal_string \"non-whitelisted token or last bridge too recent\""
                                                            },
                                                            "value": "non-whitelisted token or last bridge too recent"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6",
                                                                "typeString": "literal_string \"non-whitelisted token or last bridge too recent\""
                                                            }
                                                        ],
                                                        "id": 9397,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "5196:7:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 9402,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5196:78:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9403,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5196:78:52"
                                            },
                                            {
                                                "expression": {
                                                    "id": 9413,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 9404,
                                                                "name": "whitelistedTokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8278,
                                                                "src": "5285:17:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                    "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                }
                                                            },
                                                            "id": 9406,
                                                            "indexExpression": {
                                                                "id": 9405,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9370,
                                                                "src": "5303:7:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "5285:26:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                            }
                                                        },
                                                        "id": 9407,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "lastBridgeTime",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8270,
                                                        "src": "5285:41:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 9410,
                                                                    "name": "getCurrentTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5596,
                                                                    "src": "5336:14:52",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 9411,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "5336:16:52",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 9409,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "5329:6:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint64_$",
                                                                "typeString": "type(uint64)"
                                                            },
                                                            "typeName": {
                                                                "id": 9408,
                                                                "name": "uint64",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "5329:6:52",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 9412,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5329:24:52",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "5285:68:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "id": 9414,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5285:68:52"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9420,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9370,
                                                            "src": "5446:7:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 9421,
                                                                    "name": "whitelistedTokens",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8278,
                                                                    "src": "5520:17:52",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                        "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                    }
                                                                },
                                                                "id": 9423,
                                                                "indexExpression": {
                                                                    "id": 9422,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9370,
                                                                    "src": "5538:7:52",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "5520:26:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                    "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                                }
                                                            },
                                                            "id": 9424,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "l1BridgePool",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8268,
                                                            "src": "5520:39:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9425,
                                                            "name": "bridgeDepositBoxBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9379,
                                                            "src": "5637:23:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9426,
                                                            "name": "l1Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9372,
                                                            "src": "5738:5:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "",
                                                            "id": 9427,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5840:2:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            },
                                                            "value": ""
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 9416,
                                                                        "name": "Lib_PredeployAddresses",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 251,
                                                                        "src": "5379:22:52",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_Lib_PredeployAddresses_$251_$",
                                                                            "typeString": "type(library Lib_PredeployAddresses)"
                                                                        }
                                                                    },
                                                                    "id": 9417,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "L2_STANDARD_BRIDGE",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 241,
                                                                    "src": "5379:41:52",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 9415,
                                                                "name": "IL2ERC20Bridge",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 93,
                                                                "src": "5364:14:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IL2ERC20Bridge_$93_$",
                                                                    "typeString": "type(contract IL2ERC20Bridge)"
                                                                }
                                                            },
                                                            "id": 9418,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5364:57:52",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IL2ERC20Bridge_$93",
                                                                "typeString": "contract IL2ERC20Bridge"
                                                            }
                                                        },
                                                        "id": 9419,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "withdrawTo",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 76,
                                                        "src": "5364:68:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,address,uint256,uint32,bytes memory) external"
                                                        }
                                                    },
                                                    "id": 9428,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5364:554:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9429,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5364:554:52"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 9431,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9370,
                                                            "src": "5948:7:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9432,
                                                            "name": "bridgeDepositBoxBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9379,
                                                            "src": "5957:23:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9433,
                                                            "name": "l1Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9372,
                                                            "src": "5982:5:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 9434,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "5989:3:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 9435,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "5989:10:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9430,
                                                        "name": "TokensBridged",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8332,
                                                        "src": "5934:13:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                                                            "typeString": "function (address,uint256,uint256,address)"
                                                        }
                                                    },
                                                    "id": 9436,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5934:66:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9437,
                                                "nodeType": "EmitStatement",
                                                "src": "5929:71:52"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9368,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4380:548:52",
                                        "text": " @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\n      token bridge, to the L1 Withdraw box.\n @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\n      on L1 as the finalization of a L2->L1 tx is quite expensive.\n @param l2Token L2 token to relay over the canonical bridge.\n @param l1Gas Unused by optimism, but included for potential forward compatibility considerations."
                                    },
                                    "functionSelector": "9bfd2cdc",
                                    "id": 9439,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 9376,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9375,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "5010:12:52"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "5010:14:52"
                                        }
                                    ],
                                    "name": "bridgeTokens",
                                    "nameLocation": "4942:12:52",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 9374,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "5001:8:52"
                                    },
                                    "parameters": {
                                        "id": 9373,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9370,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "4963:7:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9439,
                                                "src": "4955:15:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9369,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4955:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9372,
                                                "mutability": "mutable",
                                                "name": "l1Gas",
                                                "nameLocation": "4979:5:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9439,
                                                "src": "4972:12:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 9371,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4972:6:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4954:31:52"
                                    },
                                    "returnParameters": {
                                        "id": 9377,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5025:0:52"
                                    },
                                    "scope": 9464,
                                    "src": "4933:1074:52",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9462,
                                        "nodeType": "Block",
                                        "src": "6215:184:52",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 9450,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 9445,
                                                                "name": "newCrossDomainAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9441,
                                                                "src": "6233:19:52",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 9448,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "6264:1:52",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 9447,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "6256:7:52",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 9446,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "6256:7:52",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 9449,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "6256:10:52",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "6233:33:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4261642062726964676520726f757465722061646472657373",
                                                            "id": 9451,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6268:27:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc",
                                                                "typeString": "literal_string \"Bad bridge router address\""
                                                            },
                                                            "value": "Bad bridge router address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc",
                                                                "typeString": "literal_string \"Bad bridge router address\""
                                                            }
                                                        ],
                                                        "id": 9444,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6225:7:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 9452,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6225:71:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9453,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6225:71:52"
                                            },
                                            {
                                                "expression": {
                                                    "id": 9456,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 9454,
                                                        "name": "crossDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9269,
                                                        "src": "6306:16:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 9455,
                                                        "name": "newCrossDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9441,
                                                        "src": "6325:19:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "6306:38:52",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 9457,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6306:38:52"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 9459,
                                                            "name": "crossDomainAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9269,
                                                            "src": "6375:16:52",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9458,
                                                        "name": "SetXDomainAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9273,
                                                        "src": "6359:15:52",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 9460,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6359:33:52",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9461,
                                                "nodeType": "EmitStatement",
                                                "src": "6354:38:52"
                                            }
                                        ]
                                    },
                                    "id": 9463,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setCrossDomainAdmin",
                                    "nameLocation": "6156:20:52",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9442,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9441,
                                                "mutability": "mutable",
                                                "name": "newCrossDomainAdmin",
                                                "nameLocation": "6185:19:52",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9463,
                                                "src": "6177:27:52",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9440,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6177:7:52",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6176:29:52"
                                    },
                                    "returnParameters": {
                                        "id": 9443,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "6215:0:52"
                                    },
                                    "scope": 9464,
                                    "src": "6147:252:52",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 9465,
                            "src": "440:5961:52",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:6360:52"
                },
                "id": 52
            },
            "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol",
                    "exportedSymbols": {
                        "Address": [
                            1951
                        ],
                        "BridgeDepositBox": [
                            8633
                        ],
                        "CrossDomainEnabled": [
                            172
                        ],
                        "ICrossDomainMessenger": [
                            211
                        ],
                        "IERC20": [
                            1406
                        ],
                        "IL2ERC20Bridge": [
                            93
                        ],
                        "Lib_PredeployAddresses": [
                            251
                        ],
                        "Lockable": [
                            5437
                        ],
                        "OVM_BridgeDepositBox": [
                            9464
                        ],
                        "OVM_OETH_BridgeDepositBox": [
                            9616
                        ],
                        "SafeERC20": [
                            1655
                        ],
                        "Testable": [
                            5597
                        ],
                        "Timer": [
                            5632
                        ],
                        "TokenLike": [
                            8240
                        ],
                        "WETH9Like": [
                            8249
                        ]
                    },
                    "id": 9617,
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9466,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "0:23:53"
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol",
                            "file": "./OVM_BridgeDepositBox.sol",
                            "id": 9467,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9617,
                            "sourceUnit": 9465,
                            "src": "25:36:53",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 9469,
                                        "name": "OVM_BridgeDepositBox",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 9464,
                                        "src": "346:20:53"
                                    },
                                    "id": 9470,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "346:20:53"
                                }
                            ],
                            "canonicalName": "OVM_OETH_BridgeDepositBox",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 9468,
                                "nodeType": "StructuredDocumentation",
                                "src": "63:243:53",
                                "text": " @title OVM_OETH_BridgeDepositBox\n @dev Modified version of OVM_BridgeDepositBox that supports Optimism ETH being sent over the canonical bridge as ETH.\n This is re-wrapped to WETH on L2. All other functionality remains the same."
                            },
                            "fullyImplemented": true,
                            "id": 9616,
                            "linearizedBaseContracts": [
                                9616,
                                9464,
                                172,
                                8633,
                                5437,
                                5597
                            ],
                            "name": "OVM_OETH_BridgeDepositBox",
                            "nameLocation": "317:25:53",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "e3229211",
                                    "id": 9472,
                                    "mutability": "mutable",
                                    "name": "l2Eth",
                                    "nameLocation": "707:5:53",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9616,
                                    "src": "692:20:53",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9471,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "692:7:53",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "5facafbd",
                                    "id": 9474,
                                    "mutability": "mutable",
                                    "name": "l1EthWrapper",
                                    "nameLocation": "915:12:53",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9616,
                                    "src": "900:27:53",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9473,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "900:7:53",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9507,
                                        "nodeType": "Block",
                                        "src": "2283:69:53",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 9501,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 9499,
                                                        "name": "l2Eth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9472,
                                                        "src": "2293:5:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 9500,
                                                        "name": "_l2Eth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9485,
                                                        "src": "2301:6:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "2293:14:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 9502,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2293:14:53"
                                            },
                                            {
                                                "expression": {
                                                    "id": 9505,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 9503,
                                                        "name": "l1EthWrapper",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9474,
                                                        "src": "2317:12:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 9504,
                                                        "name": "_l1EthWrapper",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9487,
                                                        "src": "2332:13:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "2317:28:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 9506,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2317:28:53"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9475,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "934:1021:53",
                                        "text": " @notice Construct the Optimism Bridge Deposit Box\n @param _crossDomainAdmin Address of the L1 contract that can call admin functions on this contract from L1.\n @param _minimumBridgingDelay Minimum second that must elapse between L2->L1 token transfer to prevent dos.\n @param _chainId L2 Chain identifier this deposit box is deployed on.\n @param _l1Weth Address of Weth on L1. Used to inform if a bridging action should wrap ETH to WETH, if the desired\n      asset-to-bridge is for a whitelisted token mapped to this L1 Weth token.\n @param _l2Eth Address of ETH on L2. If someone wants to bridge L2 Weth from this contract to L1, then L2 ETH\n     should be sent over the Optimism bridge.\n @param _l1EthWrapper Address of custom ETH wrapper on L1. Any ETH sent to this contract will be wrapped to WETH\n     and sent to the WETH Bridge Pool.\n @param timerAddress Timer used to synchronize contract time in testing. Set to 0x000... in production."
                                    },
                                    "id": 9508,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 9492,
                                                    "name": "_crossDomainAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9477,
                                                    "src": "2208:17:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                {
                                                    "id": 9493,
                                                    "name": "_minimumBridgingDelay",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9479,
                                                    "src": "2227:21:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                {
                                                    "id": 9494,
                                                    "name": "_chainId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9481,
                                                    "src": "2250:8:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "id": 9495,
                                                    "name": "_l1Weth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9483,
                                                    "src": "2260:7:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                {
                                                    "id": 9496,
                                                    "name": "timerAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9489,
                                                    "src": "2269:12:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9497,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 9491,
                                                "name": "OVM_BridgeDepositBox",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 9464,
                                                "src": "2187:20:53"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2187:95:53"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9490,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9477,
                                                "mutability": "mutable",
                                                "name": "_crossDomainAdmin",
                                                "nameLocation": "1989:17:53",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9508,
                                                "src": "1981:25:53",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9476,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1981:7:53",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9479,
                                                "mutability": "mutable",
                                                "name": "_minimumBridgingDelay",
                                                "nameLocation": "2023:21:53",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9508,
                                                "src": "2016:28:53",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9478,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2016:6:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9481,
                                                "mutability": "mutable",
                                                "name": "_chainId",
                                                "nameLocation": "2062:8:53",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9508,
                                                "src": "2054:16:53",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9480,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2054:7:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9483,
                                                "mutability": "mutable",
                                                "name": "_l1Weth",
                                                "nameLocation": "2088:7:53",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9508,
                                                "src": "2080:15:53",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9482,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2080:7:53",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9485,
                                                "mutability": "mutable",
                                                "name": "_l2Eth",
                                                "nameLocation": "2113:6:53",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9508,
                                                "src": "2105:14:53",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9484,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2105:7:53",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9487,
                                                "mutability": "mutable",
                                                "name": "_l1EthWrapper",
                                                "nameLocation": "2137:13:53",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9508,
                                                "src": "2129:21:53",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9486,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2129:7:53",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9489,
                                                "mutability": "mutable",
                                                "name": "timerAddress",
                                                "nameLocation": "2168:12:53",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9508,
                                                "src": "2160:20:53",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9488,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2160:7:53",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1971:215:53"
                                    },
                                    "returnParameters": {
                                        "id": 9498,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2283:0:53"
                                    },
                                    "scope": 9616,
                                    "src": "1960:392:53",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        9439
                                    ],
                                    "body": {
                                        "id": 9606,
                                        "nodeType": "Block",
                                        "src": "3302:1540:53",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    9520
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 9520,
                                                        "mutability": "mutable",
                                                        "name": "bridgeDepositBoxBalance",
                                                        "nameLocation": "3320:23:53",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9606,
                                                        "src": "3312:31:53",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 9519,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3312:7:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 9530,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 9527,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -28,
                                                                    "src": "3383:4:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_OVM_OETH_BridgeDepositBox_$9616",
                                                                        "typeString": "contract OVM_OETH_BridgeDepositBox"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_OVM_OETH_BridgeDepositBox_$9616",
                                                                        "typeString": "contract OVM_OETH_BridgeDepositBox"
                                                                    }
                                                                ],
                                                                "id": 9526,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3375:7:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 9525,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3375:7:53",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 9528,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3375:13:53",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 9522,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9511,
                                                                    "src": "3356:7:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 9521,
                                                                "name": "TokenLike",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8240,
                                                                "src": "3346:9:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_TokenLike_$8240_$",
                                                                    "typeString": "type(contract TokenLike)"
                                                                }
                                                            },
                                                            "id": 9523,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3346:18:53",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TokenLike_$8240",
                                                                "typeString": "contract TokenLike"
                                                            }
                                                        },
                                                        "id": 9524,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "balanceOf",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8239,
                                                        "src": "3346:28:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address) external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 9529,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3346:43:53",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3312:77:53"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 9534,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 9532,
                                                                "name": "bridgeDepositBoxBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9520,
                                                                "src": "3407:23:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 9533,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "3433:1:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "3407:27:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "63616e277420627269646765207a65726f20746f6b656e73",
                                                            "id": 9535,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3436:26:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71",
                                                                "typeString": "literal_string \"can't bridge zero tokens\""
                                                            },
                                                            "value": "can't bridge zero tokens"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71",
                                                                "typeString": "literal_string \"can't bridge zero tokens\""
                                                            }
                                                        ],
                                                        "id": 9531,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3399:7:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 9536,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3399:64:53",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9537,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3399:64:53"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 9540,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9511,
                                                                    "src": "3491:7:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 9539,
                                                                "name": "canBridge",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8632,
                                                                "src": "3481:9:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 9541,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3481:18:53",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6e6f6e2d77686974656c697374656420746f6b656e206f72206c6173742062726964676520746f6f20726563656e74",
                                                            "id": 9542,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3501:49:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6",
                                                                "typeString": "literal_string \"non-whitelisted token or last bridge too recent\""
                                                            },
                                                            "value": "non-whitelisted token or last bridge too recent"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6",
                                                                "typeString": "literal_string \"non-whitelisted token or last bridge too recent\""
                                                            }
                                                        ],
                                                        "id": 9538,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3473:7:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 9543,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3473:78:53",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9544,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3473:78:53"
                                            },
                                            {
                                                "expression": {
                                                    "id": 9554,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 9545,
                                                                "name": "whitelistedTokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8278,
                                                                "src": "3562:17:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                    "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                }
                                                            },
                                                            "id": 9547,
                                                            "indexExpression": {
                                                                "id": 9546,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9511,
                                                                "src": "3580:7:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "3562:26:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                            }
                                                        },
                                                        "id": 9548,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "lastBridgeTime",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8270,
                                                        "src": "3562:41:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 9551,
                                                                    "name": "getCurrentTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5596,
                                                                    "src": "3613:14:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 9552,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3613:16:53",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 9550,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "3606:6:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint64_$",
                                                                "typeString": "type(uint64)"
                                                            },
                                                            "typeName": {
                                                                "id": 9549,
                                                                "name": "uint64",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "3606:6:53",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 9553,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "3606:24:53",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "3562:68:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "id": 9555,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3562:68:53"
                                            },
                                            {
                                                "assignments": [
                                                    9557
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 9557,
                                                        "mutability": "mutable",
                                                        "name": "bridgePool",
                                                        "nameLocation": "3649:10:53",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 9606,
                                                        "src": "3641:18:53",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 9556,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3641:7:53",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 9562,
                                                "initialValue": {
                                                    "expression": {
                                                        "baseExpression": {
                                                            "id": 9558,
                                                            "name": "whitelistedTokens",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 8278,
                                                            "src": "3662:17:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                            }
                                                        },
                                                        "id": 9560,
                                                        "indexExpression": {
                                                            "id": 9559,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9511,
                                                            "src": "3680:7:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "3662:26:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                            "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                        }
                                                    },
                                                    "id": 9561,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "l1BridgePool",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 8268,
                                                    "src": "3662:39:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3641:60:53"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 9568,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 9563,
                                                                "name": "whitelistedTokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8278,
                                                                "src": "4028:17:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                    "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                }
                                                            },
                                                            "id": 9565,
                                                            "indexExpression": {
                                                                "id": 9564,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9511,
                                                                "src": "4046:7:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "4028:26:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                            }
                                                        },
                                                        "id": 9566,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "l1Token",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8266,
                                                        "src": "4028:34:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "id": 9567,
                                                        "name": "l1Weth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8262,
                                                        "src": "4066:6:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "4028:44:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 9585,
                                                "nodeType": "IfStatement",
                                                "src": "4024:195:53",
                                                "trueBody": {
                                                    "id": 9584,
                                                    "nodeType": "Block",
                                                    "src": "4074:145:53",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 9573,
                                                                        "name": "bridgeDepositBoxBalance",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 9520,
                                                                        "src": "4116:23:53",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 9570,
                                                                                "name": "l2Token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 9511,
                                                                                "src": "4098:7:53",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 9569,
                                                                            "name": "WETH9Like",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 8249,
                                                                            "src": "4088:9:53",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_WETH9Like_$8249_$",
                                                                                "typeString": "type(contract WETH9Like)"
                                                                            }
                                                                        },
                                                                        "id": 9571,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "4088:18:53",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_WETH9Like_$8249",
                                                                            "typeString": "contract WETH9Like"
                                                                        }
                                                                    },
                                                                    "id": 9572,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "withdraw",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 8248,
                                                                    "src": "4088:27:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                                                        "typeString": "function (uint256) external"
                                                                    }
                                                                },
                                                                "id": 9574,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4088:52:53",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 9575,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4088:52:53"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 9578,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 9576,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9511,
                                                                    "src": "4154:7:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 9577,
                                                                    "name": "l2Eth",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9472,
                                                                    "src": "4164:5:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "4154:15:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "id": 9579,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4154:15:53"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 9582,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 9580,
                                                                    "name": "bridgePool",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9557,
                                                                    "src": "4183:10:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 9581,
                                                                    "name": "l1EthWrapper",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9474,
                                                                    "src": "4196:12:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "4183:25:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "id": 9583,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4183:25:53"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9591,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9511,
                                                            "src": "4310:7:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9592,
                                                            "name": "bridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9557,
                                                            "src": "4384:10:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9593,
                                                            "name": "bridgeDepositBoxBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9520,
                                                            "src": "4472:23:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9594,
                                                            "name": "l1Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9513,
                                                            "src": "4573:5:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "",
                                                            "id": 9595,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4675:2:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            },
                                                            "value": ""
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 9587,
                                                                        "name": "Lib_PredeployAddresses",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 251,
                                                                        "src": "4243:22:53",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_Lib_PredeployAddresses_$251_$",
                                                                            "typeString": "type(library Lib_PredeployAddresses)"
                                                                        }
                                                                    },
                                                                    "id": 9588,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "L2_STANDARD_BRIDGE",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 241,
                                                                    "src": "4243:41:53",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 9586,
                                                                "name": "IL2ERC20Bridge",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 93,
                                                                "src": "4228:14:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IL2ERC20Bridge_$93_$",
                                                                    "typeString": "type(contract IL2ERC20Bridge)"
                                                                }
                                                            },
                                                            "id": 9589,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4228:57:53",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IL2ERC20Bridge_$93",
                                                                "typeString": "contract IL2ERC20Bridge"
                                                            }
                                                        },
                                                        "id": 9590,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "withdrawTo",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 76,
                                                        "src": "4228:68:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,address,uint256,uint32,bytes memory) external"
                                                        }
                                                    },
                                                    "id": 9596,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4228:525:53",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9597,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4228:525:53"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 9599,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9511,
                                                            "src": "4783:7:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9600,
                                                            "name": "bridgeDepositBoxBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9520,
                                                            "src": "4792:23:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 9601,
                                                            "name": "l1Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9513,
                                                            "src": "4817:5:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 9602,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "4824:3:53",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 9603,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "4824:10:53",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9598,
                                                        "name": "TokensBridged",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8332,
                                                        "src": "4769:13:53",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                                                            "typeString": "function (address,uint256,uint256,address)"
                                                        }
                                                    },
                                                    "id": 9604,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4769:66:53",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9605,
                                                "nodeType": "EmitStatement",
                                                "src": "4764:71:53"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9509,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2358:855:53",
                                        "text": " @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\n     token bridge, to the L1 Withdraw box. Implementation is exactly the same as the standard OVM_BridgeDepositBox\n except constructed to work with Optimism ETH by first unwrapping WETH then bridging OETH. The target on L1 is\n not the bridgePool but to the l1EthWrapper that takes any ETH sent to it, wraps it and sends to the BridgePool.\n @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\n      on L1 as the finalization of a L2->L1 tx is quite expensive.\n @param l2Token L2 token to relay over the canonical bridge.\n @param l1Gas Unused by optimism, but included for potential forward compatibility considerations."
                                    },
                                    "functionSelector": "9bfd2cdc",
                                    "id": 9607,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 9517,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9516,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "3287:12:53"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3287:14:53"
                                        }
                                    ],
                                    "name": "bridgeTokens",
                                    "nameLocation": "3227:12:53",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 9515,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3278:8:53"
                                    },
                                    "parameters": {
                                        "id": 9514,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9511,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "3248:7:53",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9607,
                                                "src": "3240:15:53",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9510,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3240:7:53",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9513,
                                                "mutability": "mutable",
                                                "name": "l1Gas",
                                                "nameLocation": "3264:5:53",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9607,
                                                "src": "3257:12:53",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 9512,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3257:6:53",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3239:31:53"
                                    },
                                    "returnParameters": {
                                        "id": 9518,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3302:0:53"
                                    },
                                    "scope": 9616,
                                    "src": "3218:1624:53",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9610,
                                        "nodeType": "Block",
                                        "src": "5106:2:53",
                                        "statements": []
                                    },
                                    "id": 9611,
                                    "implemented": true,
                                    "kind": "receive",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9608,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5086:2:53"
                                    },
                                    "returnParameters": {
                                        "id": 9609,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5106:0:53"
                                    },
                                    "scope": 9616,
                                    "src": "5079:29:53",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 9614,
                                        "nodeType": "Block",
                                        "src": "5142:2:53",
                                        "statements": []
                                    },
                                    "id": 9615,
                                    "implemented": true,
                                    "kind": "fallback",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9612,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5122:2:53"
                                    },
                                    "returnParameters": {
                                        "id": 9613,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5142:0:53"
                                    },
                                    "scope": 9616,
                                    "src": "5114:30:53",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9617,
                            "src": "308:4838:53",
                            "usedErrors": []
                        }
                    ],
                    "src": "0:5147:53"
                },
                "id": 53
            },
            "contracts/insured-bridge/ovm/Optimism_Messenger.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/ovm/Optimism_Messenger.sol",
                    "exportedSymbols": {
                        "Context": [
                            1974
                        ],
                        "CrossDomainEnabled": [
                            172
                        ],
                        "ICrossDomainMessenger": [
                            211
                        ],
                        "MessengerInterface": [
                            9256
                        ],
                        "Optimism_Messenger": [
                            9669
                        ],
                        "Ownable": [
                            729
                        ]
                    },
                    "id": 9670,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9618,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:54"
                        },
                        {
                            "absolutePath": "@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol",
                            "file": "@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol",
                            "id": 9619,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9670,
                            "sourceUnit": 173,
                            "src": "67:73:54",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/interfaces/MessengerInterface.sol",
                            "file": "../interfaces/MessengerInterface.sol",
                            "id": 9620,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9670,
                            "sourceUnit": 9257,
                            "src": "141:46:54",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                            "file": "@openzeppelin/contracts/access/Ownable.sol",
                            "id": 9621,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9670,
                            "sourceUnit": 730,
                            "src": "188:52:54",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 9623,
                                        "name": "Ownable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 729,
                                        "src": "554:7:54"
                                    },
                                    "id": 9624,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "554:7:54"
                                },
                                {
                                    "baseName": {
                                        "id": 9625,
                                        "name": "CrossDomainEnabled",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 172,
                                        "src": "563:18:54"
                                    },
                                    "id": 9626,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "563:18:54"
                                },
                                {
                                    "baseName": {
                                        "id": 9627,
                                        "name": "MessengerInterface",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 9256,
                                        "src": "583:18:54"
                                    },
                                    "id": 9628,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "583:18:54"
                                }
                            ],
                            "canonicalName": "Optimism_Messenger",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 9622,
                                "nodeType": "StructuredDocumentation",
                                "src": "242:280:54",
                                "text": " @notice Sends cross chain messages Optimism L2 network.\n @dev This contract's owner should be set to the BridgeAdmin deployed on the same L1 network so that only the\n BridgeAdmin can call cross-chain administrative functions on the L2 DepositBox via this messenger."
                            },
                            "fullyImplemented": true,
                            "id": 9669,
                            "linearizedBaseContracts": [
                                9669,
                                9256,
                                172,
                                729,
                                1974
                            ],
                            "name": "Optimism_Messenger",
                            "nameLocation": "532:18:54",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 9636,
                                        "nodeType": "Block",
                                        "src": "693:2:54",
                                        "statements": []
                                    },
                                    "id": 9637,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 9633,
                                                    "name": "_crossDomainMessenger",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9630,
                                                    "src": "670:21:54",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9634,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 9632,
                                                "name": "CrossDomainEnabled",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 172,
                                                "src": "651:18:54"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "651:41:54"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9631,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9630,
                                                "mutability": "mutable",
                                                "name": "_crossDomainMessenger",
                                                "nameLocation": "628:21:54",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9637,
                                                "src": "620:29:54",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9629,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "620:7:54",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "619:31:54"
                                    },
                                    "returnParameters": {
                                        "id": 9635,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "693:0:54"
                                    },
                                    "scope": 9669,
                                    "src": "608:87:54",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        9255
                                    ],
                                    "body": {
                                        "id": 9667,
                                        "nodeType": "Block",
                                        "src": "1236:74:54",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9659,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9640,
                                                            "src": "1269:6:54",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 9662,
                                                                    "name": "gasLimit",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9646,
                                                                    "src": "1284:8:54",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 9661,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "1277:6:54",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint32_$",
                                                                    "typeString": "type(uint32)"
                                                                },
                                                                "typeName": {
                                                                    "id": 9660,
                                                                    "name": "uint32",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1277:6:54",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 9663,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1277:16:54",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 9664,
                                                            "name": "message",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9652,
                                                            "src": "1295:7:54",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 9658,
                                                        "name": "sendCrossDomainMessage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 171,
                                                        "src": "1246:22:54",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,uint32,bytes memory)"
                                                        }
                                                    },
                                                    "id": 9665,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1246:57:54",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9666,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1246:57:54"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9638,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "701:318:54",
                                        "text": " @notice Sends a message to an account on L2.\n @param target The intended recipient on L2.\n @param gasLimit The gasLimit for the receipt of the message on L2.\n @param message The data to send to the target (usually calldata to a function with\n  `onlyFromCrossDomainAccount()`)"
                                    },
                                    "functionSelector": "9e353c70",
                                    "id": 9668,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 9656,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9655,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "1226:9:54"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1226:9:54"
                                        }
                                    ],
                                    "name": "relayMessage",
                                    "nameLocation": "1033:12:54",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 9654,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "1217:8:54"
                                    },
                                    "parameters": {
                                        "id": 9653,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9640,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "1063:6:54",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9668,
                                                "src": "1055:14:54",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9639,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1055:7:54",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9642,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9668,
                                                "src": "1079:7:54",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9641,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1079:7:54",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9644,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9668,
                                                "src": "1096:7:54",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9643,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1096:7:54",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9646,
                                                "mutability": "mutable",
                                                "name": "gasLimit",
                                                "nameLocation": "1121:8:54",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9668,
                                                "src": "1113:16:54",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9645,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1113:7:54",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9648,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9668,
                                                "src": "1139:7:54",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9647,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1139:7:54",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9650,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9668,
                                                "src": "1156:7:54",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9649,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1156:7:54",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9652,
                                                "mutability": "mutable",
                                                "name": "message",
                                                "nameLocation": "1186:7:54",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9668,
                                                "src": "1173:20:54",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 9651,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1173:5:54",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1045:154:54"
                                    },
                                    "returnParameters": {
                                        "id": 9657,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1236:0:54"
                                    },
                                    "scope": 9669,
                                    "src": "1024:286:54",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9670,
                            "src": "523:789:54",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1271:54"
                },
                "id": 54
            },
            "contracts/insured-bridge/ovm/Optimism_Wrapper.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/ovm/Optimism_Wrapper.sol",
                    "exportedSymbols": {
                        "Context": [
                            1974
                        ],
                        "Optimism_Wrapper": [
                            9778
                        ],
                        "Ownable": [
                            729
                        ],
                        "WETH9Like": [
                            9691
                        ]
                    },
                    "id": 9779,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9671,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:55"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                            "file": "@openzeppelin/contracts/access/Ownable.sol",
                            "id": 9672,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9779,
                            "sourceUnit": 730,
                            "src": "67:52:55",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "WETH9Like",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 9673,
                                "nodeType": "StructuredDocumentation",
                                "src": "121:235:55",
                                "text": " @title Optimism Eth Wrapper\n @dev Any ETH sent to this contract is wrapped into WETH and sent to the set bridge pool. This enables ETH to be sent\n over the canonical Optimism bridge, which does not support WETH bridging."
                            },
                            "fullyImplemented": false,
                            "id": 9691,
                            "linearizedBaseContracts": [
                                9691
                            ],
                            "name": "WETH9Like",
                            "nameLocation": "367:9:55",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "d0e30db0",
                                    "id": 9676,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "deposit",
                                    "nameLocation": "392:7:55",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9674,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "399:2:55"
                                    },
                                    "returnParameters": {
                                        "id": 9675,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "418:0:55"
                                    },
                                    "scope": 9691,
                                    "src": "383:36:55",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "a9059cbb",
                                    "id": 9683,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "transfer",
                                    "nameLocation": "434:8:55",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9681,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9678,
                                                "mutability": "mutable",
                                                "name": "guy",
                                                "nameLocation": "451:3:55",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9683,
                                                "src": "443:11:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9677,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "443:7:55",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9680,
                                                "mutability": "mutable",
                                                "name": "wad",
                                                "nameLocation": "464:3:55",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9683,
                                                "src": "456:11:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9679,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "456:7:55",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "442:26:55"
                                    },
                                    "returnParameters": {
                                        "id": 9682,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "477:0:55"
                                    },
                                    "scope": 9691,
                                    "src": "425:53:55",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "70a08231",
                                    "id": 9690,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "balanceOf",
                                    "nameLocation": "493:9:55",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9686,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9685,
                                                "mutability": "mutable",
                                                "name": "guy",
                                                "nameLocation": "511:3:55",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9690,
                                                "src": "503:11:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9684,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "503:7:55",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "502:13:55"
                                    },
                                    "returnParameters": {
                                        "id": 9689,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9688,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9690,
                                                "src": "539:7:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9687,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "539:7:55",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "538:9:55"
                                    },
                                    "scope": 9691,
                                    "src": "484:64:55",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9779,
                            "src": "357:193:55",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 9692,
                                        "name": "Ownable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 729,
                                        "src": "581:7:55"
                                    },
                                    "id": 9693,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "581:7:55"
                                }
                            ],
                            "canonicalName": "Optimism_Wrapper",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 9778,
                            "linearizedBaseContracts": [
                                9778,
                                729,
                                1974
                            ],
                            "name": "Optimism_Wrapper",
                            "nameLocation": "561:16:55",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "3fc8cef3",
                                    "id": 9696,
                                    "mutability": "mutable",
                                    "name": "weth",
                                    "nameLocation": "612:4:55",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9778,
                                    "src": "595:21:55",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                        "typeString": "contract WETH9Like"
                                    },
                                    "typeName": {
                                        "id": 9695,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 9694,
                                            "name": "WETH9Like",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 9691,
                                            "src": "595:9:55"
                                        },
                                        "referencedDeclaration": 9691,
                                        "src": "595:9:55",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                            "typeString": "contract WETH9Like"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "5e46bea5",
                                    "id": 9698,
                                    "mutability": "mutable",
                                    "name": "bridgePool",
                                    "nameLocation": "637:10:55",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9778,
                                    "src": "622:25:55",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9697,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "622:7:55",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9702,
                                    "name": "ChangedBridgePool",
                                    "nameLocation": "660:17:55",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9701,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9700,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "694:10:55",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9702,
                                                "src": "678:26:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9699,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "678:7:55",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "677:28:55"
                                    },
                                    "src": "654:52:55"
                                },
                                {
                                    "body": {
                                        "id": 9723,
                                        "nodeType": "Block",
                                        "src": "1050:107:55",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 9713,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 9711,
                                                        "name": "weth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9696,
                                                        "src": "1060:4:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                                            "typeString": "contract WETH9Like"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 9712,
                                                        "name": "_weth",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9706,
                                                        "src": "1067:5:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                                            "typeString": "contract WETH9Like"
                                                        }
                                                    },
                                                    "src": "1060:12:55",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                                        "typeString": "contract WETH9Like"
                                                    }
                                                },
                                                "id": 9714,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1060:12:55"
                                            },
                                            {
                                                "expression": {
                                                    "id": 9717,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 9715,
                                                        "name": "bridgePool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9698,
                                                        "src": "1082:10:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 9716,
                                                        "name": "_bridgePool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9708,
                                                        "src": "1095:11:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "1082:24:55",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 9718,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1082:24:55"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 9720,
                                                            "name": "bridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9698,
                                                            "src": "1139:10:55",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9719,
                                                        "name": "ChangedBridgePool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9702,
                                                        "src": "1121:17:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 9721,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1121:29:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9722,
                                                "nodeType": "EmitStatement",
                                                "src": "1116:34:55"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9703,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "712:283:55",
                                        "text": " @notice Construct Optimism Wrapper contract.\n @param _weth l1WethContract address. Normally deployed at 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.\n @param _bridgePool address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract."
                                    },
                                    "id": 9724,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9709,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9706,
                                                "mutability": "mutable",
                                                "name": "_weth",
                                                "nameLocation": "1022:5:55",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9724,
                                                "src": "1012:15:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                                    "typeString": "contract WETH9Like"
                                                },
                                                "typeName": {
                                                    "id": 9705,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 9704,
                                                        "name": "WETH9Like",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 9691,
                                                        "src": "1012:9:55"
                                                    },
                                                    "referencedDeclaration": 9691,
                                                    "src": "1012:9:55",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                                        "typeString": "contract WETH9Like"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9708,
                                                "mutability": "mutable",
                                                "name": "_bridgePool",
                                                "nameLocation": "1037:11:55",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9724,
                                                "src": "1029:19:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9707,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1029:7:55",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1011:38:55"
                                    },
                                    "returnParameters": {
                                        "id": 9710,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1050:0:55"
                                    },
                                    "scope": 9778,
                                    "src": "1000:157:55",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9740,
                                        "nodeType": "Block",
                                        "src": "1463:87:55",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 9734,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 9732,
                                                        "name": "bridgePool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9698,
                                                        "src": "1473:10:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 9733,
                                                        "name": "newBridgePool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9727,
                                                        "src": "1486:13:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "1473:26:55",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 9735,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1473:26:55"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 9737,
                                                            "name": "bridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9698,
                                                            "src": "1532:10:55",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9736,
                                                        "name": "ChangedBridgePool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9702,
                                                        "src": "1514:17:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 9738,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1514:29:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9739,
                                                "nodeType": "EmitStatement",
                                                "src": "1509:34:55"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9725,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1163:229:55",
                                        "text": " @notice Called by owner of the wrapper to change the destination of the wrapped ETH (bridgePool).\n @param newBridgePool address of the bridge pool to send Wrapped ETH to when ETH is sent to this contract."
                                    },
                                    "functionSelector": "2ad44071",
                                    "id": 9741,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 9730,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9729,
                                                "name": "onlyOwner",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 678,
                                                "src": "1453:9:55"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1453:9:55"
                                        }
                                    ],
                                    "name": "changeBridgePool",
                                    "nameLocation": "1406:16:55",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9728,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9727,
                                                "mutability": "mutable",
                                                "name": "newBridgePool",
                                                "nameLocation": "1431:13:55",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9741,
                                                "src": "1423:21:55",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9726,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1423:7:55",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1422:23:55"
                                    },
                                    "returnParameters": {
                                        "id": 9731,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1463:0:55"
                                    },
                                    "scope": 9778,
                                    "src": "1397:153:55",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9769,
                                        "nodeType": "Block",
                                        "src": "1904:129:55",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "id": 9745,
                                                                "name": "weth",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9696,
                                                                "src": "1914:4:55",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                                                    "typeString": "contract WETH9Like"
                                                                }
                                                            },
                                                            "id": 9747,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "deposit",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 9676,
                                                            "src": "1914:12:55",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                                                "typeString": "function () payable external"
                                                            }
                                                        },
                                                        "id": 9753,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "names": [
                                                            "value"
                                                        ],
                                                        "nodeType": "FunctionCallOptions",
                                                        "options": [
                                                            {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 9750,
                                                                            "name": "this",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -28,
                                                                            "src": "1943:4:55",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_Optimism_Wrapper_$9778",
                                                                                "typeString": "contract Optimism_Wrapper"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_Optimism_Wrapper_$9778",
                                                                                "typeString": "contract Optimism_Wrapper"
                                                                            }
                                                                        ],
                                                                        "id": 9749,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "1935:7:55",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 9748,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "1935:7:55",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 9751,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "1935:13:55",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "id": 9752,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "balance",
                                                                "nodeType": "MemberAccess",
                                                                "src": "1935:21:55",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "src": "1914:44:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                                            "typeString": "function () payable external"
                                                        }
                                                    },
                                                    "id": 9754,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1914:46:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9755,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1914:46:55"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9759,
                                                            "name": "bridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9698,
                                                            "src": "1984:10:55",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 9764,
                                                                            "name": "this",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -28,
                                                                            "src": "2019:4:55",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_Optimism_Wrapper_$9778",
                                                                                "typeString": "contract Optimism_Wrapper"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_Optimism_Wrapper_$9778",
                                                                                "typeString": "contract Optimism_Wrapper"
                                                                            }
                                                                        ],
                                                                        "id": 9763,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "2011:7:55",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 9762,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "2011:7:55",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 9765,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2011:13:55",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 9760,
                                                                    "name": "weth",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9696,
                                                                    "src": "1996:4:55",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                                                        "typeString": "contract WETH9Like"
                                                                    }
                                                                },
                                                                "id": 9761,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "balanceOf",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 9690,
                                                                "src": "1996:14:55",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                    "typeString": "function (address) view external returns (uint256)"
                                                                }
                                                            },
                                                            "id": 9766,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1996:29:55",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 9756,
                                                            "name": "weth",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9696,
                                                            "src": "1970:4:55",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_WETH9Like_$9691",
                                                                "typeString": "contract WETH9Like"
                                                            }
                                                        },
                                                        "id": 9758,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "transfer",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 9683,
                                                        "src": "1970:13:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,uint256) external"
                                                        }
                                                    },
                                                    "id": 9767,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1970:56:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9768,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1970:56:55"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9742,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1556:301:55",
                                        "text": " @notice Publicly callable function that takes all ETH in this contract, wraps it to WETH and sends it to the\n bridge pool contract. Function is called by fallback functions to automatically wrap ETH to WETH and send at the\n conclusion of a canonical ETH bridging action."
                                    },
                                    "functionSelector": "c915f0ea",
                                    "id": 9770,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "wrapAndTransfer",
                                    "nameLocation": "1871:15:55",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9743,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1886:2:55"
                                    },
                                    "returnParameters": {
                                        "id": 9744,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1904:0:55"
                                    },
                                    "scope": 9778,
                                    "src": "1862:171:55",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9776,
                                        "nodeType": "Block",
                                        "src": "2178:34:55",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 9773,
                                                        "name": "wrapAndTransfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9770,
                                                        "src": "2188:15:55",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 9774,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2188:17:55",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9775,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2188:17:55"
                                            }
                                        ]
                                    },
                                    "id": 9777,
                                    "implemented": true,
                                    "kind": "fallback",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9771,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2158:2:55"
                                    },
                                    "returnParameters": {
                                        "id": 9772,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2178:0:55"
                                    },
                                    "scope": 9778,
                                    "src": "2150:62:55",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9779,
                            "src": "552:1662:55",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:2173:55"
                },
                "id": 55
            },
            "contracts/insured-bridge/test/Arbitrum_InboxMock.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/test/Arbitrum_InboxMock.sol",
                    "exportedSymbols": {
                        "Arbitrum_BridgeMock": [
                            9830
                        ],
                        "Arbitrum_CrossDomainEnabled": [
                            3335
                        ],
                        "Arbitrum_InboxMock": [
                            9869
                        ],
                        "Arbitrum_OutboxMock": [
                            9794
                        ],
                        "Arbitrum_ParentMessenger": [
                            3003
                        ],
                        "Context": [
                            1974
                        ],
                        "IBridge": [
                            3198
                        ],
                        "Lockable": [
                            2650
                        ],
                        "Ownable": [
                            729
                        ],
                        "ParentMessengerBase": [
                            3167
                        ],
                        "ParentMessengerConsumerInterface": [
                            3177
                        ],
                        "ParentMessengerInterface": [
                            3190
                        ],
                        "iArbitrum_Inbox": [
                            3225
                        ],
                        "iArbitrum_Outbox": [
                            3233
                        ]
                    },
                    "id": 9870,
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9780,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "0:23:56"
                        },
                        {
                            "absolutePath": "@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol",
                            "file": "@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol",
                            "id": 9781,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9870,
                            "sourceUnit": 3226,
                            "src": "24:73:56",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol",
                            "file": "@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol",
                            "id": 9782,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 9870,
                            "sourceUnit": 3004,
                            "src": "98:92:56",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Arbitrum_OutboxMock",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 9794,
                            "linearizedBaseContracts": [
                                9794
                            ],
                            "name": "Arbitrum_OutboxMock",
                            "nameLocation": "201:19:56",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 9792,
                                        "nodeType": "Block",
                                        "src": "283:92:56",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9789,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -28,
                                                            "src": "363:4:56",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_Arbitrum_OutboxMock_$9794",
                                                                "typeString": "contract Arbitrum_OutboxMock"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_Arbitrum_OutboxMock_$9794",
                                                                "typeString": "contract Arbitrum_OutboxMock"
                                                            }
                                                        ],
                                                        "id": 9788,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "355:7:56",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 9787,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "355:7:56",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 9790,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "355:13:56",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "functionReturnParameters": 9786,
                                                "id": 9791,
                                                "nodeType": "Return",
                                                "src": "348:20:56"
                                            }
                                        ]
                                    },
                                    "functionSelector": "80648b02",
                                    "id": 9793,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "l2ToL1Sender",
                                    "nameLocation": "236:12:56",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9783,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "248:2:56"
                                    },
                                    "returnParameters": {
                                        "id": 9786,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9785,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9793,
                                                "src": "274:7:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9784,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "274:7:56",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "273:9:56"
                                    },
                                    "scope": 9794,
                                    "src": "227:148:56",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9870,
                            "src": "192:185:56",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Arbitrum_BridgeMock",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 9830,
                            "linearizedBaseContracts": [
                                9830
                            ],
                            "name": "Arbitrum_BridgeMock",
                            "nameLocation": "388:19:56",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "ce11e6ab",
                                    "id": 9796,
                                    "mutability": "mutable",
                                    "name": "outbox",
                                    "nameLocation": "429:6:56",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 9830,
                                    "src": "414:21:56",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9795,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "414:7:56",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9805,
                                        "nodeType": "Block",
                                        "src": "487:33:56",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 9803,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 9801,
                                                        "name": "outbox",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9796,
                                                        "src": "497:6:56",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 9802,
                                                        "name": "_outbox",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9798,
                                                        "src": "506:7:56",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "497:16:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 9804,
                                                "nodeType": "ExpressionStatement",
                                                "src": "497:16:56"
                                            }
                                        ]
                                    },
                                    "functionSelector": "ff204f3b",
                                    "id": 9806,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setOutbox",
                                    "nameLocation": "451:9:56",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9799,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9798,
                                                "mutability": "mutable",
                                                "name": "_outbox",
                                                "nameLocation": "469:7:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9806,
                                                "src": "461:15:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9797,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "461:7:56",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "460:17:56"
                                    },
                                    "returnParameters": {
                                        "id": 9800,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "487:0:56"
                                    },
                                    "scope": 9830,
                                    "src": "442:78:56",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 9813,
                                        "nodeType": "Block",
                                        "src": "582:30:56",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 9811,
                                                    "name": "outbox",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9796,
                                                    "src": "599:6:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "functionReturnParameters": 9810,
                                                "id": 9812,
                                                "nodeType": "Return",
                                                "src": "592:13:56"
                                            }
                                        ]
                                    },
                                    "functionSelector": "ab5d8943",
                                    "id": 9814,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "activeOutbox",
                                    "nameLocation": "535:12:56",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9807,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "547:2:56"
                                    },
                                    "returnParameters": {
                                        "id": 9810,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9809,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9814,
                                                "src": "573:7:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9808,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "573:7:56",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "572:9:56"
                                    },
                                    "scope": 9830,
                                    "src": "526:86:56",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 9828,
                                        "nodeType": "Block",
                                        "src": "929:98:56",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9825,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9818,
                                                            "src": "1015:4:56",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 9822,
                                                                    "name": "messengerToCall",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9816,
                                                                    "src": "964:15:56",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                ],
                                                                "id": 9821,
                                                                "name": "Arbitrum_ParentMessenger",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3003,
                                                                "src": "939:24:56",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_Arbitrum_ParentMessenger_$3003_$",
                                                                    "typeString": "type(contract Arbitrum_ParentMessenger)"
                                                                }
                                                            },
                                                            "id": 9823,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "939:41:56",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_Arbitrum_ParentMessenger_$3003",
                                                                "typeString": "contract Arbitrum_ParentMessenger"
                                                            }
                                                        },
                                                        "id": 9824,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "processMessageFromCrossChainChild",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2923,
                                                        "src": "939:75:56",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes memory) external"
                                                        }
                                                    },
                                                    "id": 9826,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "939:81:56",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9827,
                                                "nodeType": "ExpressionStatement",
                                                "src": "939:81:56"
                                            }
                                        ]
                                    },
                                    "functionSelector": "a3b24360",
                                    "id": 9829,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "processMessageFromCrossChainChild",
                                    "nameLocation": "834:33:56",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9819,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9816,
                                                "mutability": "mutable",
                                                "name": "messengerToCall",
                                                "nameLocation": "884:15:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9829,
                                                "src": "868:31:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                "typeName": {
                                                    "id": 9815,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "868:15:56",
                                                    "stateMutability": "payable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9818,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "914:4:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9829,
                                                "src": "901:17:56",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 9817,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "901:5:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "867:52:56"
                                    },
                                    "returnParameters": {
                                        "id": 9820,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "929:0:56"
                                    },
                                    "scope": 9830,
                                    "src": "825:202:56",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9870,
                            "src": "379:650:56",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 9831,
                                        "name": "iArbitrum_Inbox",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 3225,
                                        "src": "1062:15:56"
                                    },
                                    "id": 9832,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1062:15:56"
                                }
                            ],
                            "canonicalName": "Arbitrum_InboxMock",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 9869,
                            "linearizedBaseContracts": [
                                9869,
                                3225
                            ],
                            "name": "Arbitrum_InboxMock",
                            "nameLocation": "1040:18:56",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "baseFunctions": [
                                        3219
                                    ],
                                    "body": {
                                        "id": 9856,
                                        "nodeType": "Block",
                                        "src": "1596:25:56",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "hexValue": "30",
                                                    "id": 9854,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1613:1:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "functionReturnParameters": 9853,
                                                "id": 9855,
                                                "nodeType": "Return",
                                                "src": "1606:8:56"
                                            }
                                        ]
                                    },
                                    "functionSelector": "1b871c8d",
                                    "id": 9857,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "createRetryableTicketNoRefundAliasRewrite",
                                    "nameLocation": "1252:41:56",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 9850,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "1569:8:56"
                                    },
                                    "parameters": {
                                        "id": 9849,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9834,
                                                "mutability": "mutable",
                                                "name": "destAddr",
                                                "nameLocation": "1311:8:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9857,
                                                "src": "1303:16:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9833,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1303:7:56",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9836,
                                                "mutability": "mutable",
                                                "name": "l2CallValue",
                                                "nameLocation": "1337:11:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9857,
                                                "src": "1329:19:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9835,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1329:7:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9838,
                                                "mutability": "mutable",
                                                "name": "maxSubmissionCost",
                                                "nameLocation": "1366:17:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9857,
                                                "src": "1358:25:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9837,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1358:7:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9840,
                                                "mutability": "mutable",
                                                "name": "excessFeeRefundAddress",
                                                "nameLocation": "1401:22:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9857,
                                                "src": "1393:30:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9839,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1393:7:56",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9842,
                                                "mutability": "mutable",
                                                "name": "callValueRefundAddress",
                                                "nameLocation": "1441:22:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9857,
                                                "src": "1433:30:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9841,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1433:7:56",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9844,
                                                "mutability": "mutable",
                                                "name": "maxGas",
                                                "nameLocation": "1481:6:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9857,
                                                "src": "1473:14:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9843,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1473:7:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9846,
                                                "mutability": "mutable",
                                                "name": "gasPriceBid",
                                                "nameLocation": "1505:11:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9857,
                                                "src": "1497:19:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9845,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1497:7:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9848,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "1541:4:56",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9857,
                                                "src": "1526:19:56",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 9847,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1526:5:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1293:258:56"
                                    },
                                    "returnParameters": {
                                        "id": 9853,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9852,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9857,
                                                "src": "1587:7:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 9851,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1587:7:56",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1586:9:56"
                                    },
                                    "scope": 9869,
                                    "src": "1243:378:56",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "baseFunctions": [
                                        3224
                                    ],
                                    "body": {
                                        "id": 9867,
                                        "nodeType": "Block",
                                        "src": "1677:92:56",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9864,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -28,
                                                            "src": "1757:4:56",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_Arbitrum_InboxMock_$9869",
                                                                "typeString": "contract Arbitrum_InboxMock"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_Arbitrum_InboxMock_$9869",
                                                                "typeString": "contract Arbitrum_InboxMock"
                                                            }
                                                        ],
                                                        "id": 9863,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "1749:7:56",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 9862,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1749:7:56",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 9865,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1749:13:56",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "functionReturnParameters": 9861,
                                                "id": 9866,
                                                "nodeType": "Return",
                                                "src": "1742:20:56"
                                            }
                                        ]
                                    },
                                    "functionSelector": "e78cea92",
                                    "id": 9868,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "bridge",
                                    "nameLocation": "1636:6:56",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9858,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1642:2:56"
                                    },
                                    "returnParameters": {
                                        "id": 9861,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9860,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9868,
                                                "src": "1668:7:56",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9859,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1668:7:56",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1667:9:56"
                                    },
                                    "scope": 9869,
                                    "src": "1627:142:56",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 9870,
                            "src": "1031:740:56",
                            "usedErrors": []
                        }
                    ],
                    "src": "0:1772:56"
                },
                "id": 56
            },
            "contracts/insured-bridge/test/BridgeDepositBoxMock.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/test/BridgeDepositBoxMock.sol",
                    "exportedSymbols": {
                        "Address": [
                            1951
                        ],
                        "BridgeDepositBox": [
                            8633
                        ],
                        "BridgeDepositBoxMock": [
                            10073
                        ],
                        "IERC20": [
                            1406
                        ],
                        "Lockable": [
                            5437
                        ],
                        "SafeERC20": [
                            1655
                        ],
                        "Testable": [
                            5597
                        ],
                        "Timer": [
                            5632
                        ],
                        "TokenLike": [
                            8240
                        ],
                        "WETH9Like": [
                            8249
                        ]
                    },
                    "id": 10074,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 9871,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:57"
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/BridgeDepositBox.sol",
                            "file": "../BridgeDepositBox.sol",
                            "id": 9872,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 10074,
                            "sourceUnit": 8634,
                            "src": "67:33:57",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 9873,
                                        "name": "BridgeDepositBox",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 8633,
                                        "src": "135:16:57"
                                    },
                                    "id": 9874,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "135:16:57"
                                }
                            ],
                            "canonicalName": "BridgeDepositBoxMock",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 10073,
                            "linearizedBaseContracts": [
                                10073,
                                8633,
                                5437,
                                5597
                            ],
                            "name": "BridgeDepositBoxMock",
                            "nameLocation": "111:20:57",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "id": 9878,
                                    "libraryName": {
                                        "id": 9875,
                                        "name": "SafeERC20",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1655,
                                        "src": "164:9:57"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "158:27:57",
                                    "typeName": {
                                        "id": 9877,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 9876,
                                            "name": "IERC20",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 1406,
                                            "src": "178:6:57"
                                        },
                                        "referencedDeclaration": 1406,
                                        "src": "178:6:57",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$1406",
                                            "typeString": "contract IERC20"
                                        }
                                    }
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "a6af2dfe",
                                    "id": 9880,
                                    "mutability": "mutable",
                                    "name": "bridgeAdmin",
                                    "nameLocation": "291:11:57",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10073,
                                    "src": "276:26:57",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 9879,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "276:7:57",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "id": 9884,
                                    "name": "SetBridgeAdmin",
                                    "nameLocation": "315:14:57",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 9883,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9882,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newBridgeAdmin",
                                                "nameLocation": "338:14:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9884,
                                                "src": "330:22:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9881,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "330:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "329:24:57"
                                    },
                                    "src": "309:45:57"
                                },
                                {
                                    "body": {
                                        "id": 9895,
                                        "nodeType": "Block",
                                        "src": "387:82:57",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 9890,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 9887,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "405:3:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 9888,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "405:10:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "id": 9889,
                                                                "name": "bridgeAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9880,
                                                                "src": "419:11:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "405:25:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4e6f74206272696467652061646d696e",
                                                            "id": 9891,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "432:18:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_82c5f7a57aac208f3a4b4ad4bbe53e5acd7ca3f72815d14132e2ac103f35b32e",
                                                                "typeString": "literal_string \"Not bridge admin\""
                                                            },
                                                            "value": "Not bridge admin"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_82c5f7a57aac208f3a4b4ad4bbe53e5acd7ca3f72815d14132e2ac103f35b32e",
                                                                "typeString": "literal_string \"Not bridge admin\""
                                                            }
                                                        ],
                                                        "id": 9886,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "397:7:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 9892,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "397:54:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9893,
                                                "nodeType": "ExpressionStatement",
                                                "src": "397:54:57"
                                            },
                                            {
                                                "id": 9894,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "461:1:57"
                                            }
                                        ]
                                    },
                                    "id": 9896,
                                    "name": "onlyBridgeAdmin",
                                    "nameLocation": "369:15:57",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 9885,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "384:2:57"
                                    },
                                    "src": "360:109:57",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 9918,
                                        "nodeType": "Block",
                                        "src": "821:46:57",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9915,
                                                            "name": "_bridgeAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9899,
                                                            "src": "847:12:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9914,
                                                        "name": "_setBridgeAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10072,
                                                        "src": "831:15:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 9916,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "831:29:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9917,
                                                "nodeType": "ExpressionStatement",
                                                "src": "831:29:57"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9897,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "475:132:57",
                                        "text": " @notice Ownable bridge deposit box. Used for testing environments that don't have specific l1/l2 messaging logic."
                                    },
                                    "id": 9919,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 9908,
                                                    "name": "_minimumBridgingDelay",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9901,
                                                    "src": "771:21:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                {
                                                    "hexValue": "3130",
                                                    "id": 9909,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "794:2:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_10_by_1",
                                                        "typeString": "int_const 10"
                                                    },
                                                    "value": "10"
                                                },
                                                {
                                                    "id": 9910,
                                                    "name": "_l1Weth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9903,
                                                    "src": "798:7:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                {
                                                    "id": 9911,
                                                    "name": "timerAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 9905,
                                                    "src": "807:12:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 9912,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 9907,
                                                "name": "BridgeDepositBox",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 8633,
                                                "src": "754:16:57"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "754:66:57"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9906,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9899,
                                                "mutability": "mutable",
                                                "name": "_bridgeAdmin",
                                                "nameLocation": "642:12:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9919,
                                                "src": "634:20:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9898,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "634:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9901,
                                                "mutability": "mutable",
                                                "name": "_minimumBridgingDelay",
                                                "nameLocation": "671:21:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9919,
                                                "src": "664:28:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9900,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "664:6:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9903,
                                                "mutability": "mutable",
                                                "name": "_l1Weth",
                                                "nameLocation": "710:7:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9919,
                                                "src": "702:15:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9902,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "702:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9905,
                                                "mutability": "mutable",
                                                "name": "timerAddress",
                                                "nameLocation": "735:12:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9919,
                                                "src": "727:20:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9904,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "727:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "624:129:57"
                                    },
                                    "returnParameters": {
                                        "id": 9913,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "821:0:57"
                                    },
                                    "scope": 10073,
                                    "src": "613:254:57",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9931,
                                        "nodeType": "Block",
                                        "src": "1348:46:57",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9928,
                                                            "name": "_bridgeAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9922,
                                                            "src": "1374:12:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9927,
                                                        "name": "_setBridgeAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10072,
                                                        "src": "1358:15:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 9929,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1358:29:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9930,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1358:29:57"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9920,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1007:260:57",
                                        "text": " @notice Changes the L1 administrator associated with this L2 deposit deposit box.\n @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\n @param _bridgeAdmin address of the new L1 admin contract."
                                    },
                                    "functionSelector": "de7eba78",
                                    "id": 9932,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 9925,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9924,
                                                "name": "onlyBridgeAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 9896,
                                                "src": "1330:15:57"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1330:17:57"
                                        }
                                    ],
                                    "name": "setCrossDomainAdmin",
                                    "nameLocation": "1281:19:57",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9923,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9922,
                                                "mutability": "mutable",
                                                "name": "_bridgeAdmin",
                                                "nameLocation": "1309:12:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9932,
                                                "src": "1301:20:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9921,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1301:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1300:22:57"
                                    },
                                    "returnParameters": {
                                        "id": 9926,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1348:0:57"
                                    },
                                    "scope": 10073,
                                    "src": "1272:122:57",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9944,
                                        "nodeType": "Block",
                                        "src": "1757:64:57",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9941,
                                                            "name": "_minimumBridgingDelay",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9935,
                                                            "src": "1792:21:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 9940,
                                                        "name": "_setMinimumBridgingDelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8389,
                                                        "src": "1767:24:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 9942,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1767:47:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9943,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1767:47:57"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9933,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1400:264:57",
                                        "text": " @notice Changes the minimum time in seconds that must elapse between withdraws from L2->L1.\n @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\n @param _minimumBridgingDelay the new minimum delay."
                                    },
                                    "functionSelector": "2ec35b31",
                                    "id": 9945,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 9938,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9937,
                                                "name": "onlyBridgeAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 9896,
                                                "src": "1739:15:57"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1739:17:57"
                                        }
                                    ],
                                    "name": "setMinimumBridgingDelay",
                                    "nameLocation": "1678:23:57",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9936,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9935,
                                                "mutability": "mutable",
                                                "name": "_minimumBridgingDelay",
                                                "nameLocation": "1709:21:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9945,
                                                "src": "1702:28:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 9934,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1702:6:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1701:30:57"
                                    },
                                    "returnParameters": {
                                        "id": 9939,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1757:0:57"
                                    },
                                    "scope": 10073,
                                    "src": "1669:152:57",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9963,
                                        "nodeType": "Block",
                                        "src": "2470:64:57",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9958,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9948,
                                                            "src": "2496:7:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9959,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9950,
                                                            "src": "2505:7:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9960,
                                                            "name": "l1BridgePool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9952,
                                                            "src": "2514:12:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 9957,
                                                        "name": "_whitelistToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8426,
                                                        "src": "2480:15:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address,address)"
                                                        }
                                                    },
                                                    "id": 9961,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2480:47:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9962,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2480:47:57"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9946,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1827:503:57",
                                        "text": " @notice Enables L1 owner to whitelist a L1 Token <-> L2 Token pair for bridging.\n @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\n @param l1Token Address of the canonical L1 token. This is the token users will receive on Ethereum.\n @param l2Token Address of the L2 token representation. This is the token users would deposit on optimism.\n @param l1BridgePool Address of the L1 withdrawal pool linked to this L2+L1 token."
                                    },
                                    "functionSelector": "4dedca28",
                                    "id": 9964,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 9955,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9954,
                                                "name": "onlyBridgeAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 9896,
                                                "src": "2452:15:57"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2452:17:57"
                                        }
                                    ],
                                    "name": "whitelistToken",
                                    "nameLocation": "2344:14:57",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9953,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9948,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "2376:7:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9964,
                                                "src": "2368:15:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9947,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2368:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9950,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "2401:7:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9964,
                                                "src": "2393:15:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9949,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2393:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9952,
                                                "mutability": "mutable",
                                                "name": "l1BridgePool",
                                                "nameLocation": "2426:12:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9964,
                                                "src": "2418:20:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9951,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2418:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2358:86:57"
                                    },
                                    "returnParameters": {
                                        "id": 9956,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2470:0:57"
                                    },
                                    "scope": 10073,
                                    "src": "2335:199:57",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 9979,
                                        "nodeType": "Block",
                                        "src": "2989:63:57",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 9975,
                                                            "name": "_l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9967,
                                                            "src": "3018:8:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 9976,
                                                            "name": "_depositsEnabled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9969,
                                                            "src": "3028:16:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "id": 9974,
                                                        "name": "_setEnableDeposits",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8447,
                                                        "src": "2999:18:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bool_$returns$__$",
                                                            "typeString": "function (address,bool)"
                                                        }
                                                    },
                                                    "id": 9977,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2999:46:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 9978,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2999:46:57"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9965,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2540:351:57",
                                        "text": " @notice L1 owner can enable/disable deposits for a whitelisted token.\n @dev Only callable by the existing bridgeAdmin via the optimism cross domain messenger.\n @param _l2Token address of L2 token to enable/disable deposits for.\n @param _depositsEnabled bool to set if the deposit box should accept/reject deposits."
                                    },
                                    "functionSelector": "563c7f60",
                                    "id": 9980,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 9972,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9971,
                                                "name": "onlyBridgeAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 9896,
                                                "src": "2971:15:57"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "2971:17:57"
                                        }
                                    ],
                                    "name": "setEnableDeposits",
                                    "nameLocation": "2905:17:57",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 9970,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9967,
                                                "mutability": "mutable",
                                                "name": "_l2Token",
                                                "nameLocation": "2931:8:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9980,
                                                "src": "2923:16:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9966,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2923:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9969,
                                                "mutability": "mutable",
                                                "name": "_depositsEnabled",
                                                "nameLocation": "2946:16:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 9980,
                                                "src": "2941:21:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 9968,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2941:4:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2922:41:57"
                                    },
                                    "returnParameters": {
                                        "id": 9973,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2989:0:57"
                                    },
                                    "scope": 10073,
                                    "src": "2896:156:57",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        8454
                                    ],
                                    "body": {
                                        "id": 10047,
                                        "nodeType": "Block",
                                        "src": "3829:610:57",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    9992
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 9992,
                                                        "mutability": "mutable",
                                                        "name": "bridgeDepositBoxBalance",
                                                        "nameLocation": "3847:23:57",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 10047,
                                                        "src": "3839:31:57",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 9991,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3839:7:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 10002,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 9999,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -28,
                                                                    "src": "3910:4:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_BridgeDepositBoxMock_$10073",
                                                                        "typeString": "contract BridgeDepositBoxMock"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_BridgeDepositBoxMock_$10073",
                                                                        "typeString": "contract BridgeDepositBoxMock"
                                                                    }
                                                                ],
                                                                "id": 9998,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3902:7:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 9997,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3902:7:57",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 10000,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3902:13:57",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 9994,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9983,
                                                                    "src": "3883:7:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 9993,
                                                                "name": "TokenLike",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8240,
                                                                "src": "3873:9:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_TokenLike_$8240_$",
                                                                    "typeString": "type(contract TokenLike)"
                                                                }
                                                            },
                                                            "id": 9995,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3873:18:57",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_TokenLike_$8240",
                                                                "typeString": "contract TokenLike"
                                                            }
                                                        },
                                                        "id": 9996,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "balanceOf",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8239,
                                                        "src": "3873:28:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (address) external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 10001,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3873:43:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3839:77:57"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 10006,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 10004,
                                                                "name": "bridgeDepositBoxBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9992,
                                                                "src": "3934:23:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 10005,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "3960:1:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "3934:27:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "63616e277420627269646765207a65726f20746f6b656e73",
                                                            "id": 10007,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3963:26:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71",
                                                                "typeString": "literal_string \"can't bridge zero tokens\""
                                                            },
                                                            "value": "can't bridge zero tokens"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_49494c77f2cf7248a708cb484132e4ea7d22c6919ca96141eade46352519bd71",
                                                                "typeString": "literal_string \"can't bridge zero tokens\""
                                                            }
                                                        ],
                                                        "id": 10003,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "3926:7:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 10008,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3926:64:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 10009,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3926:64:57"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 10012,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9983,
                                                                    "src": "4018:7:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 10011,
                                                                "name": "canBridge",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8632,
                                                                "src": "4008:9:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 10013,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4008:18:57",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "6e6f6e2d77686974656c697374656420746f6b656e206f72206c6173742062726964676520746f6f20726563656e74",
                                                            "id": 10014,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4028:49:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6",
                                                                "typeString": "literal_string \"non-whitelisted token or last bridge too recent\""
                                                            },
                                                            "value": "non-whitelisted token or last bridge too recent"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_80cdfe4eefaa92c6a60df4a6851fe31bfc085e453c7b80c4d40183c52a2094a6",
                                                                "typeString": "literal_string \"non-whitelisted token or last bridge too recent\""
                                                            }
                                                        ],
                                                        "id": 10010,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4000:7:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 10015,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4000:78:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 10016,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4000:78:57"
                                            },
                                            {
                                                "expression": {
                                                    "id": 10026,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "id": 10017,
                                                                "name": "whitelistedTokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 8278,
                                                                "src": "4089:17:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                    "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                }
                                                            },
                                                            "id": 10019,
                                                            "indexExpression": {
                                                                "id": 10018,
                                                                "name": "l2Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 9983,
                                                                "src": "4107:7:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "4089:26:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                            }
                                                        },
                                                        "id": 10020,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "lastBridgeTime",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 8270,
                                                        "src": "4089:41:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 10023,
                                                                    "name": "getCurrentTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5596,
                                                                    "src": "4140:14:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 10024,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4140:16:57",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 10022,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "4133:6:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint64_$",
                                                                "typeString": "type(uint64)"
                                                            },
                                                            "typeName": {
                                                                "id": 10021,
                                                                "name": "uint64",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "4133:6:57",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 10025,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4133:24:57",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "4089:68:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "id": 10027,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4089:68:57"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "id": 10032,
                                                                    "name": "whitelistedTokens",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 8278,
                                                                    "src": "4285:17:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_L2TokenRelationships_$8273_storage_$",
                                                                        "typeString": "mapping(address => struct BridgeDepositBox.L2TokenRelationships storage ref)"
                                                                    }
                                                                },
                                                                "id": 10034,
                                                                "indexExpression": {
                                                                    "id": 10033,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9983,
                                                                    "src": "4303:7:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "4285:26:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_L2TokenRelationships_$8273_storage",
                                                                    "typeString": "struct BridgeDepositBox.L2TokenRelationships storage ref"
                                                                }
                                                            },
                                                            "id": 10035,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "l1BridgePool",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 8268,
                                                            "src": "4285:39:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 10036,
                                                            "name": "bridgeDepositBoxBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9992,
                                                            "src": "4326:23:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 10029,
                                                                    "name": "l2Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 9983,
                                                                    "src": "4263:7:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 10028,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1406,
                                                                "src": "4256:6:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$1406_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 10030,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4256:15:57",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 10031,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "safeTransfer",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1462,
                                                        "src": "4256:28:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1406_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1406_$",
                                                            "typeString": "function (contract IERC20,address,uint256)"
                                                        }
                                                    },
                                                    "id": 10037,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4256:94:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 10038,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4256:94:57"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 10040,
                                                            "name": "l2Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9983,
                                                            "src": "4380:7:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 10041,
                                                            "name": "bridgeDepositBoxBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9992,
                                                            "src": "4389:23:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 10042,
                                                            "name": "l1Gas",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9985,
                                                            "src": "4414:5:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 10043,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "4421:3:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 10044,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "4421:10:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 10039,
                                                        "name": "TokensBridged",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 8332,
                                                        "src": "4366:13:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                                                            "typeString": "function (address,uint256,uint256,address)"
                                                        }
                                                    },
                                                    "id": 10045,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4366:66:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 10046,
                                                "nodeType": "EmitStatement",
                                                "src": "4361:71:57"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 9981,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3192:548:57",
                                        "text": " @notice Called by relayer (or any other EOA) to move a batch of funds from the deposit box, through the canonical\n      token bridge, to the L1 Withdraw box.\n @dev The frequency that this function can be called is rate limited by the `minimumBridgingDelay` to prevent spam\n      on L1 as the finalization of a L2->L1 tx is quite expensive.\n @param l2Token L2 token to relay over the canonical bridge.\n @param l1Gas Unused by optimism, but included for potential forward compatibility considerations."
                                    },
                                    "functionSelector": "9bfd2cdc",
                                    "id": 10048,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 9989,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 9988,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5403,
                                                "src": "3814:12:57"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "3814:14:57"
                                        }
                                    ],
                                    "name": "bridgeTokens",
                                    "nameLocation": "3754:12:57",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 9987,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3805:8:57"
                                    },
                                    "parameters": {
                                        "id": 9986,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 9983,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "3775:7:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10048,
                                                "src": "3767:15:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 9982,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3767:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 9985,
                                                "mutability": "mutable",
                                                "name": "l1Gas",
                                                "nameLocation": "3791:5:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10048,
                                                "src": "3784:12:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 9984,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3784:6:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3766:31:57"
                                    },
                                    "returnParameters": {
                                        "id": 9990,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3829:0:57"
                                    },
                                    "scope": 10073,
                                    "src": "3745:694:57",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 10071,
                                        "nodeType": "Block",
                                        "src": "4637:163:57",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 10059,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 10054,
                                                                "name": "_l1BridgeAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 10050,
                                                                "src": "4655:14:57",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 10057,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "4681:1:57",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 10056,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "4673:7:57",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 10055,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4673:7:57",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 10058,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4673:10:57",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "4655:28:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4261642062726964676520726f757465722061646472657373",
                                                            "id": 10060,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4685:27:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc",
                                                                "typeString": "literal_string \"Bad bridge router address\""
                                                            },
                                                            "value": "Bad bridge router address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_df5bbc1d960fd7e53326e17c6e98cbd79cc513eeafbe33285cf26a0ed8694cbc",
                                                                "typeString": "literal_string \"Bad bridge router address\""
                                                            }
                                                        ],
                                                        "id": 10053,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4647:7:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 10061,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4647:66:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 10062,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4647:66:57"
                                            },
                                            {
                                                "expression": {
                                                    "id": 10065,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 10063,
                                                        "name": "bridgeAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9880,
                                                        "src": "4723:11:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 10064,
                                                        "name": "_l1BridgeAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10050,
                                                        "src": "4737:14:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "4723:28:57",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 10066,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4723:28:57"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 10068,
                                                            "name": "bridgeAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 9880,
                                                            "src": "4781:11:57",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 10067,
                                                        "name": "SetBridgeAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9884,
                                                        "src": "4766:14:57",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 10069,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4766:27:57",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 10070,
                                                "nodeType": "EmitStatement",
                                                "src": "4761:32:57"
                                            }
                                        ]
                                    },
                                    "id": 10072,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_setBridgeAdmin",
                                    "nameLocation": "4588:15:57",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10051,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10050,
                                                "mutability": "mutable",
                                                "name": "_l1BridgeAdmin",
                                                "nameLocation": "4612:14:57",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10072,
                                                "src": "4604:22:57",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10049,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4604:7:57",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4603:24:57"
                                    },
                                    "returnParameters": {
                                        "id": 10052,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4637:0:57"
                                    },
                                    "scope": 10073,
                                    "src": "4579:221:57",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 10074,
                            "src": "102:4700:57",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:4761:57"
                },
                "id": 57
            },
            "contracts/insured-bridge/test/MessengerMock.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/test/MessengerMock.sol",
                    "exportedSymbols": {
                        "MessengerInterface": [
                            9256
                        ],
                        "MessengerMock": [
                            10117
                        ]
                    },
                    "id": 10118,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 10075,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:58"
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/interfaces/MessengerInterface.sol",
                            "file": "../interfaces/MessengerInterface.sol",
                            "id": 10076,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 10118,
                            "sourceUnit": 9257,
                            "src": "67:46:58",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 10078,
                                        "name": "MessengerInterface",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 9256,
                                        "src": "283:18:58"
                                    },
                                    "id": 10079,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "283:18:58"
                                }
                            ],
                            "canonicalName": "MessengerMock",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 10077,
                                "nodeType": "StructuredDocumentation",
                                "src": "115:141:58",
                                "text": " @notice Implements the `relayMessage` trivially so that we can test whether the BridgeAdmin correctly calls into this\n contract."
                            },
                            "fullyImplemented": true,
                            "id": 10117,
                            "linearizedBaseContracts": [
                                10117,
                                9256
                            ],
                            "name": "MessengerMock",
                            "nameLocation": "266:13:58",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "anonymous": false,
                                    "id": 10089,
                                    "name": "RelayedMessage",
                                    "nameLocation": "314:14:58",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 10088,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10081,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "345:6:58",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10089,
                                                "src": "329:22:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10080,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "329:7:58",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10083,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "gasLimit",
                                                "nameLocation": "361:8:58",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10089,
                                                "src": "353:16:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10082,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "353:7:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10085,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "gasPrice",
                                                "nameLocation": "379:8:58",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10089,
                                                "src": "371:16:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10084,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "371:7:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10087,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "message",
                                                "nameLocation": "395:7:58",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10089,
                                                "src": "389:13:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10086,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "389:5:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "328:75:58"
                                    },
                                    "src": "308:96:58"
                                },
                                {
                                    "baseFunctions": [
                                        9255
                                    ],
                                    "body": {
                                        "id": 10115,
                                        "nodeType": "Block",
                                        "src": "1001:73:58",
                                        "statements": [
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 10109,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 10092,
                                                            "src": "1031:6:58",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 10110,
                                                            "name": "gasLimit",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 10098,
                                                            "src": "1039:8:58",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 10111,
                                                            "name": "gasPrice",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 10100,
                                                            "src": "1049:8:58",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 10112,
                                                            "name": "message",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 10104,
                                                            "src": "1059:7:58",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 10108,
                                                        "name": "RelayedMessage",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 10089,
                                                        "src": "1016:14:58",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (address,uint256,uint256,bytes memory)"
                                                        }
                                                    },
                                                    "id": 10113,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1016:51:58",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 10114,
                                                "nodeType": "EmitStatement",
                                                "src": "1011:56:58"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 10090,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "410:375:58",
                                        "text": " @notice Sends a message to an account on L2.\n @param target The intended recipient on L2.\n @param gasLimit The gasLimit for the receipt of the message on L2.\n @param gasPrice Gas price bid for L2 transaction.\n @param message The data to send to the target (usually calldata to a function with\n  `onlyFromCrossDomainAccount()`)"
                                    },
                                    "functionSelector": "9e353c70",
                                    "id": 10116,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "relayMessage",
                                    "nameLocation": "799:12:58",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 10106,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "992:8:58"
                                    },
                                    "parameters": {
                                        "id": 10105,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10092,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "829:6:58",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10116,
                                                "src": "821:14:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10091,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "821:7:58",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10094,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10116,
                                                "src": "845:7:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10093,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "845:7:58",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10096,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10116,
                                                "src": "862:7:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10095,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "862:7:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10098,
                                                "mutability": "mutable",
                                                "name": "gasLimit",
                                                "nameLocation": "887:8:58",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10116,
                                                "src": "879:16:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10097,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "879:7:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10100,
                                                "mutability": "mutable",
                                                "name": "gasPrice",
                                                "nameLocation": "913:8:58",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10116,
                                                "src": "905:16:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10099,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "905:7:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10102,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10116,
                                                "src": "931:7:58",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10101,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "931:7:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10104,
                                                "mutability": "mutable",
                                                "name": "message",
                                                "nameLocation": "961:7:58",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10116,
                                                "src": "948:20:58",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10103,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "948:5:58",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "811:163:58"
                                    },
                                    "returnParameters": {
                                        "id": 10107,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1001:0:58"
                                    },
                                    "scope": 10117,
                                    "src": "790:284:58",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 10118,
                            "src": "257:819:58",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1035:58"
                },
                "id": 58
            },
            "contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol",
                    "exportedSymbols": {
                        "ICrossDomainMessenger": [
                            211
                        ],
                        "OVM_L1CrossDomainMessengerMock": [
                            10146
                        ]
                    },
                    "id": 10147,
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 10119,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "0:23:59"
                        },
                        {
                            "absolutePath": "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol",
                            "file": "@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol",
                            "id": 10120,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 10147,
                            "sourceUnit": 212,
                            "src": "24:76:59",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 10121,
                                        "name": "ICrossDomainMessenger",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 211,
                                        "src": "145:21:59"
                                    },
                                    "id": 10122,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "145:21:59"
                                }
                            ],
                            "canonicalName": "OVM_L1CrossDomainMessengerMock",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 10146,
                            "linearizedBaseContracts": [
                                10146,
                                211
                            ],
                            "name": "OVM_L1CrossDomainMessengerMock",
                            "nameLocation": "111:30:59",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "baseFunctions": [
                                        200
                                    ],
                                    "body": {
                                        "id": 10133,
                                        "nodeType": "Block",
                                        "src": "246:88:59",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 10130,
                                                            "name": "this",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -28,
                                                            "src": "322:4:59",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_OVM_L1CrossDomainMessengerMock_$10146",
                                                                "typeString": "contract OVM_L1CrossDomainMessengerMock"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_OVM_L1CrossDomainMessengerMock_$10146",
                                                                "typeString": "contract OVM_L1CrossDomainMessengerMock"
                                                            }
                                                        ],
                                                        "id": 10129,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "314:7:59",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 10128,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "314:7:59",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 10131,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "314:13:59",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "functionReturnParameters": 10127,
                                                "id": 10132,
                                                "nodeType": "Return",
                                                "src": "307:20:59"
                                            }
                                        ]
                                    },
                                    "functionSelector": "6e296e45",
                                    "id": 10134,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "xDomainMessageSender",
                                    "nameLocation": "182:20:59",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 10124,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "219:8:59"
                                    },
                                    "parameters": {
                                        "id": 10123,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "202:2:59"
                                    },
                                    "returnParameters": {
                                        "id": 10127,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10126,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10134,
                                                "src": "237:7:59",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10125,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "237:7:59",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "236:9:59"
                                    },
                                    "scope": 10146,
                                    "src": "173:161:59",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "baseFunctions": [
                                        210
                                    ],
                                    "body": {
                                        "id": 10144,
                                        "nodeType": "Block",
                                        "src": "469:2:59",
                                        "statements": []
                                    },
                                    "functionSelector": "3dbb202b",
                                    "id": 10145,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendMessage",
                                    "nameLocation": "349:11:59",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 10142,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "460:8:59"
                                    },
                                    "parameters": {
                                        "id": 10141,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10136,
                                                "mutability": "mutable",
                                                "name": "_target",
                                                "nameLocation": "378:7:59",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10145,
                                                "src": "370:15:59",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10135,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "370:7:59",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10138,
                                                "mutability": "mutable",
                                                "name": "_message",
                                                "nameLocation": "410:8:59",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10145,
                                                "src": "395:23:59",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10137,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "395:5:59",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10140,
                                                "mutability": "mutable",
                                                "name": "_gasLimit",
                                                "nameLocation": "435:9:59",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10145,
                                                "src": "428:16:59",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10139,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "428:6:59",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "360:90:59"
                                    },
                                    "returnParameters": {
                                        "id": 10143,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "469:0:59"
                                    },
                                    "scope": 10146,
                                    "src": "340:131:59",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 10147,
                            "src": "102:390:59",
                            "usedErrors": []
                        }
                    ],
                    "src": "0:493:59"
                },
                "id": 59
            },
            "contracts/oracle/implementation/Constants.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/implementation/Constants.sol",
                    "exportedSymbols": {
                        "OptimisticOracleConstraints": [
                            10185
                        ],
                        "OracleInterfaces": [
                            10180
                        ]
                    },
                    "id": 10186,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 10148,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:60"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "OracleInterfaces",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 10149,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:102:60",
                                "text": " @title Stores common interface names used throughout the DVM by registration in the Finder."
                            },
                            "fullyImplemented": true,
                            "id": 10180,
                            "linearizedBaseContracts": [
                                10180
                            ],
                            "name": "OracleInterfaces",
                            "nameLocation": "178:16:60",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": true,
                                    "functionSelector": "f24a534e",
                                    "id": 10152,
                                    "mutability": "constant",
                                    "name": "Oracle",
                                    "nameLocation": "225:6:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "201:41:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10150,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "201:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "4f7261636c65",
                                        "id": 10151,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "234:8:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_1a4461ab9f0dcef4a35a8660e8bbb361ae4c140fabb5b8c363bd6282ded34a90",
                                            "typeString": "literal_string \"Oracle\""
                                        },
                                        "value": "Oracle"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "4f4a180b",
                                    "id": 10155,
                                    "mutability": "constant",
                                    "name": "IdentifierWhitelist",
                                    "nameLocation": "272:19:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "248:67:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10153,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "248:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "4964656e74696669657257686974656c697374",
                                        "id": 10154,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "294:21:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_00d9d04470dd3fd336d150abd987b1b33f1c6b92e935259bb901f4c9ca28ddf4",
                                            "typeString": "literal_string \"IdentifierWhitelist\""
                                        },
                                        "value": "IdentifierWhitelist"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "42e90c33",
                                    "id": 10158,
                                    "mutability": "constant",
                                    "name": "Store",
                                    "nameLocation": "345:5:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "321:39:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10156,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "321:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "53746f7265",
                                        "id": 10157,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "353:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_f9742a6ab27efbeed38a3a36aac403fe0810a4cdb9e8328d15bdcd1c87e76672",
                                            "typeString": "literal_string \"Store\""
                                        },
                                        "value": "Store"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "2a71e5b3",
                                    "id": 10161,
                                    "mutability": "constant",
                                    "name": "FinancialContractsAdmin",
                                    "nameLocation": "390:23:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "366:75:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10159,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "366:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "46696e616e6369616c436f6e74726163747341646d696e",
                                        "id": 10160,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "416:25:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_bdecf6c7158bdf4679c9cd47427254674db861278f5aafe09a81927b0ddf85aa",
                                            "typeString": "literal_string \"FinancialContractsAdmin\""
                                        },
                                        "value": "FinancialContractsAdmin"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "7db9743b",
                                    "id": 10164,
                                    "mutability": "constant",
                                    "name": "Registry",
                                    "nameLocation": "471:8:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "447:45:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10162,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "447:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "5265676973747279",
                                        "id": 10163,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "482:10:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_8c53ae70b0aa86068023c633abcdda89c433a8a76949ea111f756c171fa23663",
                                            "typeString": "literal_string \"Registry\""
                                        },
                                        "value": "Registry"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "598dd097",
                                    "id": 10167,
                                    "mutability": "constant",
                                    "name": "CollateralWhitelist",
                                    "nameLocation": "522:19:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "498:67:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10165,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "498:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "436f6c6c61746572616c57686974656c697374",
                                        "id": 10166,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "544:21:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_e9a52feae6648b39bfdb0a8523b0b3da0307731129fd6f0d46a73b43c2989f8f",
                                            "typeString": "literal_string \"CollateralWhitelist\""
                                        },
                                        "value": "CollateralWhitelist"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "1a4dbd1c",
                                    "id": 10170,
                                    "mutability": "constant",
                                    "name": "OptimisticOracle",
                                    "nameLocation": "595:16:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "571:61:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10168,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "571:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "4f7074696d69737469634f7261636c65",
                                        "id": 10169,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "614:18:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_1b7f4a3af71357fd741bc7828f83ec6c49403c71c1a6875664530cb681f8b070",
                                            "typeString": "literal_string \"OptimisticOracle\""
                                        },
                                        "value": "OptimisticOracle"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "5fa2ef10",
                                    "id": 10173,
                                    "mutability": "constant",
                                    "name": "Bridge",
                                    "nameLocation": "662:6:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "638:41:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10171,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "638:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "427269646765",
                                        "id": 10172,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "671:8:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_7aa5ae620294318af92bf4e2b2a729646c932a80312a5fa630da993a2ef5cc10",
                                            "typeString": "literal_string \"Bridge\""
                                        },
                                        "value": "Bridge"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "079b6c63",
                                    "id": 10176,
                                    "mutability": "constant",
                                    "name": "GenericHandler",
                                    "nameLocation": "709:14:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "685:57:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10174,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "685:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "47656e6572696348616e646c6572",
                                        "id": 10175,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "726:16:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_0c852b6e1eb3d094b8b7ec20be5fb44aea5686ca74f54e2589153de1c87b6302",
                                            "typeString": "literal_string \"GenericHandler\""
                                        },
                                        "value": "GenericHandler"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "4596ac9b",
                                    "id": 10179,
                                    "mutability": "constant",
                                    "name": "SkinnyOptimisticOracle",
                                    "nameLocation": "772:22:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10180,
                                    "src": "748:73:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 10177,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "748:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "536b696e6e794f7074696d69737469634f7261636c65",
                                        "id": 10178,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "797:24:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_5783227a49dac1b3d7d5d8e80d9d37463f506ddc1045b867688aa7568f7d856b",
                                            "typeString": "literal_string \"SkinnyOptimisticOracle\""
                                        },
                                        "value": "SkinnyOptimisticOracle"
                                    },
                                    "visibility": "public"
                                }
                            ],
                            "scope": 10186,
                            "src": "170:654:60",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "OptimisticOracleConstraints",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 10181,
                                "nodeType": "StructuredDocumentation",
                                "src": "826:93:60",
                                "text": " @title Commonly re-used values for contracts associated with the OptimisticOracle."
                            },
                            "fullyImplemented": true,
                            "id": 10185,
                            "linearizedBaseContracts": [
                                10185
                            ],
                            "name": "OptimisticOracleConstraints",
                            "nameLocation": "928:27:60",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": true,
                                    "functionSelector": "c371dda7",
                                    "id": 10184,
                                    "mutability": "constant",
                                    "name": "ancillaryBytesLimit",
                                    "nameLocation": "1422:19:60",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10185,
                                    "src": "1398:50:60",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 10182,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1398:7:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "38313932",
                                        "id": 10183,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1444:4:60",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_8192_by_1",
                                            "typeString": "int_const 8192"
                                        },
                                        "value": "8192"
                                    },
                                    "visibility": "public"
                                }
                            ],
                            "scope": 10186,
                            "src": "920:531:60",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1410:60"
                },
                "id": 60
            },
            "contracts/oracle/interfaces/FinderInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/interfaces/FinderInterface.sol",
                    "exportedSymbols": {
                        "FinderInterface": [
                            10205
                        ]
                    },
                    "id": 10206,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 10187,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:61"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "FinderInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 10188,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:144:61",
                                "text": " @title Provides addresses of the live contracts implementing certain interfaces.\n @dev Examples are the Oracle or Store interfaces."
                            },
                            "fullyImplemented": false,
                            "id": 10205,
                            "linearizedBaseContracts": [
                                10205
                            ],
                            "name": "FinderInterface",
                            "nameLocation": "222:15:61",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 10189,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "244:300:61",
                                        "text": " @notice Updates the address of the contract that implements `interfaceName`.\n @param interfaceName bytes32 encoding of the interface name that is either changed or registered.\n @param implementationAddress address of the deployed contract that implements the interface."
                                    },
                                    "functionSelector": "31f9665e",
                                    "id": 10196,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "changeImplementationAddress",
                                    "nameLocation": "558:27:61",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10194,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10191,
                                                "mutability": "mutable",
                                                "name": "interfaceName",
                                                "nameLocation": "594:13:61",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10196,
                                                "src": "586:21:61",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10190,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "586:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10193,
                                                "mutability": "mutable",
                                                "name": "implementationAddress",
                                                "nameLocation": "617:21:61",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10196,
                                                "src": "609:29:61",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10192,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "609:7:61",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "585:54:61"
                                    },
                                    "returnParameters": {
                                        "id": 10195,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "648:0:61"
                                    },
                                    "scope": 10205,
                                    "src": "549:100:61",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10197,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "655:250:61",
                                        "text": " @notice Gets the address of the contract that implements the given `interfaceName`.\n @param interfaceName queried interface.\n @return implementationAddress address of the deployed contract that implements the interface."
                                    },
                                    "functionSelector": "aafd5e40",
                                    "id": 10204,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getImplementationAddress",
                                    "nameLocation": "919:24:61",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10200,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10199,
                                                "mutability": "mutable",
                                                "name": "interfaceName",
                                                "nameLocation": "952:13:61",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10204,
                                                "src": "944:21:61",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10198,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "944:7:61",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "943:23:61"
                                    },
                                    "returnParameters": {
                                        "id": 10203,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10202,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10204,
                                                "src": "990:7:61",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10201,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "990:7:61",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "989:9:61"
                                    },
                                    "scope": 10205,
                                    "src": "910:89:61",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 10206,
                            "src": "212:789:61",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:960:61"
                },
                "id": 61
            },
            "contracts/oracle/interfaces/IdentifierWhitelistInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/interfaces/IdentifierWhitelistInterface.sol",
                    "exportedSymbols": {
                        "IdentifierWhitelistInterface": [
                            10229
                        ]
                    },
                    "id": 10230,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 10207,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:62"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IdentifierWhitelistInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 10208,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:107:62",
                                "text": " @title Interface for whitelists of supported identifiers that the oracle can provide prices for."
                            },
                            "fullyImplemented": false,
                            "id": 10229,
                            "linearizedBaseContracts": [
                                10229
                            ],
                            "name": "IdentifierWhitelistInterface",
                            "nameLocation": "185:28:62",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 10209,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "220:242:62",
                                        "text": " @notice Adds the provided identifier as a supported identifier.\n @dev Price requests using this identifier will succeed after this call.\n @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD."
                                    },
                                    "functionSelector": "10a7e201",
                                    "id": 10214,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "addSupportedIdentifier",
                                    "nameLocation": "476:22:62",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10212,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10211,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "507:10:62",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10214,
                                                "src": "499:18:62",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10210,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "499:7:62",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "498:20:62"
                                    },
                                    "returnParameters": {
                                        "id": 10213,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "527:0:62"
                                    },
                                    "scope": 10229,
                                    "src": "467:61:62",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10215,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "534:239:62",
                                        "text": " @notice Removes the identifier from the whitelist.\n @dev Price requests using this identifier will no longer succeed after this call.\n @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD."
                                    },
                                    "functionSelector": "8e0d3ca7",
                                    "id": 10220,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "removeSupportedIdentifier",
                                    "nameLocation": "787:25:62",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10218,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10217,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "821:10:62",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10220,
                                                "src": "813:18:62",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10216,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "813:7:62",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "812:20:62"
                                    },
                                    "returnParameters": {
                                        "id": 10219,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "841:0:62"
                                    },
                                    "scope": 10229,
                                    "src": "778:64:62",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10221,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "848:218:62",
                                        "text": " @notice Checks whether an identifier is on the whitelist.\n @param identifier bytes32 encoding of the string identifier. Eg: BTC/USD.\n @return bool if the identifier is supported (or not)."
                                    },
                                    "functionSelector": "90978d1b",
                                    "id": 10228,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isIdentifierSupported",
                                    "nameLocation": "1080:21:62",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10224,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10223,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "1110:10:62",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10228,
                                                "src": "1102:18:62",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10222,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1102:7:62",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1101:20:62"
                                    },
                                    "returnParameters": {
                                        "id": 10227,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10226,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10228,
                                                "src": "1145:4:62",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 10225,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1145:4:62",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1144:6:62"
                                    },
                                    "scope": 10229,
                                    "src": "1071:80:62",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 10230,
                            "src": "175:978:62",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1112:62"
                },
                "id": 62
            },
            "contracts/oracle/interfaces/OptimisticOracleInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/interfaces/OptimisticOracleInterface.sol",
                    "exportedSymbols": {
                        "IERC20": [
                            1406
                        ],
                        "OptimisticOracleInterface": [
                            10467
                        ]
                    },
                    "id": 10468,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 10231,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:63"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 10232,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 10468,
                            "sourceUnit": 1407,
                            "src": "67:56:63",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "OptimisticOracleInterface",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 10233,
                                "nodeType": "StructuredDocumentation",
                                "src": "125:175:63",
                                "text": " @title Financial contract facing Oracle interface.\n @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface."
                            },
                            "fullyImplemented": false,
                            "id": 10467,
                            "linearizedBaseContracts": [
                                10467
                            ],
                            "name": "OptimisticOracleInterface",
                            "nameLocation": "319:25:63",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "canonicalName": "OptimisticOracleInterface.State",
                                    "id": 10241,
                                    "members": [
                                        {
                                            "id": 10234,
                                            "name": "Invalid",
                                            "nameLocation": "429:7:63",
                                            "nodeType": "EnumValue",
                                            "src": "429:7:63"
                                        },
                                        {
                                            "id": 10235,
                                            "name": "Requested",
                                            "nameLocation": "466:9:63",
                                            "nodeType": "EnumValue",
                                            "src": "466:9:63"
                                        },
                                        {
                                            "id": 10236,
                                            "name": "Proposed",
                                            "nameLocation": "523:8:63",
                                            "nodeType": "EnumValue",
                                            "src": "523:8:63"
                                        },
                                        {
                                            "id": 10237,
                                            "name": "Expired",
                                            "nameLocation": "587:7:63",
                                            "nodeType": "EnumValue",
                                            "src": "587:7:63"
                                        },
                                        {
                                            "id": 10238,
                                            "name": "Disputed",
                                            "nameLocation": "646:8:63",
                                            "nodeType": "EnumValue",
                                            "src": "646:8:63"
                                        },
                                        {
                                            "id": 10239,
                                            "name": "Resolved",
                                            "nameLocation": "708:8:63",
                                            "nodeType": "EnumValue",
                                            "src": "708:8:63"
                                        },
                                        {
                                            "id": 10240,
                                            "name": "Settled",
                                            "nameLocation": "766:7:63",
                                            "nodeType": "EnumValue",
                                            "src": "766:7:63"
                                        }
                                    ],
                                    "name": "State",
                                    "nameLocation": "413:5:63",
                                    "nodeType": "EnumDefinition",
                                    "src": "408:456:63"
                                },
                                {
                                    "canonicalName": "OptimisticOracleInterface.Request",
                                    "id": 10267,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 10243,
                                            "mutability": "mutable",
                                            "name": "proposer",
                                            "nameLocation": "947:8:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "939:16:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 10242,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "939:7:63",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10245,
                                            "mutability": "mutable",
                                            "name": "disputer",
                                            "nameLocation": "1001:8:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "993:16:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 10244,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "993:7:63",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10248,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "nameLocation": "1054:8:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1047:15:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 10247,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 10246,
                                                    "name": "IERC20",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 1406,
                                                    "src": "1047:6:63"
                                                },
                                                "referencedDeclaration": 1406,
                                                "src": "1047:6:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10250,
                                            "mutability": "mutable",
                                            "name": "settled",
                                            "nameLocation": "1122:7:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1117:12:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 10249,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1117:4:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10252,
                                            "mutability": "mutable",
                                            "name": "refundOnDispute",
                                            "nameLocation": "1179:15:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1174:20:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 10251,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1174:4:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10254,
                                            "mutability": "mutable",
                                            "name": "proposedPrice",
                                            "nameLocation": "1280:13:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1273:20:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 10253,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1273:6:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10256,
                                            "mutability": "mutable",
                                            "name": "resolvedPrice",
                                            "nameLocation": "1348:13:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1341:20:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 10255,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1341:6:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10258,
                                            "mutability": "mutable",
                                            "name": "expirationTime",
                                            "nameLocation": "1426:14:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1418:22:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10257,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1418:7:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10260,
                                            "mutability": "mutable",
                                            "name": "reward",
                                            "nameLocation": "1519:6:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1511:14:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10259,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1511:7:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10262,
                                            "mutability": "mutable",
                                            "name": "finalFee",
                                            "nameLocation": "1607:8:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1599:16:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10261,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1599:7:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10264,
                                            "mutability": "mutable",
                                            "name": "bond",
                                            "nameLocation": "1691:4:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1683:12:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10263,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1683:7:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10266,
                                            "mutability": "mutable",
                                            "name": "customLiveness",
                                            "nameLocation": "1786:14:63",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10267,
                                            "src": "1778:22:63",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10265,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1778:7:63",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "Request",
                                    "nameLocation": "921:7:63",
                                    "nodeType": "StructDefinition",
                                    "scope": 10467,
                                    "src": "914:940:63",
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "c371dda7",
                                    "id": 10270,
                                    "mutability": "constant",
                                    "name": "ancillaryBytesLimit",
                                    "nameLocation": "2189:19:63",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10467,
                                    "src": "2165:50:63",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 10268,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2165:7:63",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "38313932",
                                        "id": 10269,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2211:4:63",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_8192_by_1",
                                            "typeString": "int_const 8192"
                                        },
                                        "value": "8192"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 10271,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2222:854:63",
                                        "text": " @notice Requests a new price.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data representing additional args being passed with the price request.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n               which could make sense if the contract requests and proposes the value in the same call or\n               provides its own reward system.\n @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n This can be changed with a subsequent call to setBond()."
                                    },
                                    "functionSelector": "11df92f1",
                                    "id": 10287,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "requestPrice",
                                    "nameLocation": "3090:12:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10283,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10273,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "3120:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10287,
                                                "src": "3112:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10272,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3112:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10275,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "3148:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10287,
                                                "src": "3140:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10274,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3140:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10277,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "3180:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10287,
                                                "src": "3167:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10276,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3167:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10280,
                                                "mutability": "mutable",
                                                "name": "currency",
                                                "nameLocation": "3210:8:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10287,
                                                "src": "3203:15:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 10279,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10278,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "3203:6:63"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "3203:6:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10282,
                                                "mutability": "mutable",
                                                "name": "reward",
                                                "nameLocation": "3236:6:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10287,
                                                "src": "3228:14:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10281,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3228:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3102:146:63"
                                    },
                                    "returnParameters": {
                                        "id": 10286,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10285,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "3283:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10287,
                                                "src": "3275:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10284,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3275:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3274:19:63"
                                    },
                                    "scope": 10467,
                                    "src": "3081:213:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10288,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3300:516:63",
                                        "text": " @notice Set the proposal bond associated with a price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param bond custom bond amount to set.\n @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\n changed again with a subsequent call to setBond()."
                                    },
                                    "functionSelector": "ad5a755a",
                                    "id": 10301,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setBond",
                                    "nameLocation": "3830:7:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10297,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10290,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "3855:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10301,
                                                "src": "3847:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10289,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3847:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10292,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "3883:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10301,
                                                "src": "3875:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10291,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3875:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10294,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "3915:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10301,
                                                "src": "3902:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10293,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3902:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10296,
                                                "mutability": "mutable",
                                                "name": "bond",
                                                "nameLocation": "3946:4:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10301,
                                                "src": "3938:12:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10295,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3938:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3837:119:63"
                                    },
                                    "returnParameters": {
                                        "id": 10300,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10299,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "3991:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10301,
                                                "src": "3983:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10298,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3983:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3982:19:63"
                                    },
                                    "scope": 10467,
                                    "src": "3821:181:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10302,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4008:545:63",
                                        "text": " @notice Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller\n in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\n bond, so there is still profit to be made even if the reward is refunded.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested."
                                    },
                                    "functionSelector": "91f58dcb",
                                    "id": 10311,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setRefundOnDispute",
                                    "nameLocation": "4567:18:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10309,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10304,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "4603:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10311,
                                                "src": "4595:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10303,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4595:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10306,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "4631:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10311,
                                                "src": "4623:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10305,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4623:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10308,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "4663:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10311,
                                                "src": "4650:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10307,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4650:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4585:97:63"
                                    },
                                    "returnParameters": {
                                        "id": 10310,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4699:0:63"
                                    },
                                    "scope": 10467,
                                    "src": "4558:142:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10312,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4706:426:63",
                                        "text": " @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n being auto-resolved.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param customLiveness new custom liveness."
                                    },
                                    "functionSelector": "473c45fe",
                                    "id": 10323,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setCustomLiveness",
                                    "nameLocation": "5146:17:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10321,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10314,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "5181:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10323,
                                                "src": "5173:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10313,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5173:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10316,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "5209:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10323,
                                                "src": "5201:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10315,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5201:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10318,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "5241:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10323,
                                                "src": "5228:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10317,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5228:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10320,
                                                "mutability": "mutable",
                                                "name": "customLiveness",
                                                "nameLocation": "5272:14:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10323,
                                                "src": "5264:22:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10319,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5264:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5163:129:63"
                                    },
                                    "returnParameters": {
                                        "id": 10322,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5309:0:63"
                                    },
                                    "scope": 10467,
                                    "src": "5137:173:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10324,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5316:764:63",
                                        "text": " @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n from this proposal. However, any bonds are pulled from the caller.\n @param proposer address to set as the proposer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "7c82288f",
                                    "id": 10341,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposePriceFor",
                                    "nameLocation": "6094:15:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10337,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10326,
                                                "mutability": "mutable",
                                                "name": "proposer",
                                                "nameLocation": "6127:8:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10341,
                                                "src": "6119:16:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10325,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6119:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10328,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "6153:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10341,
                                                "src": "6145:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10327,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6145:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10330,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "6180:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10341,
                                                "src": "6172:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10329,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6172:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10332,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "6208:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10341,
                                                "src": "6200:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10331,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6200:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10334,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "6240:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10341,
                                                "src": "6227:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10333,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6227:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10336,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "6270:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10341,
                                                "src": "6263:20:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 10335,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6263:6:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6109:180:63"
                                    },
                                    "returnParameters": {
                                        "id": 10340,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10339,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "6322:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10341,
                                                "src": "6314:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10338,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6314:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6313:19:63"
                                    },
                                    "scope": 10467,
                                    "src": "6085:248:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 10342,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6339:586:63",
                                        "text": " @notice Proposes a price value for an existing price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "b8b4f908",
                                    "id": 10357,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposePrice",
                                    "nameLocation": "6939:12:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10353,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10344,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "6969:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10357,
                                                "src": "6961:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10343,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6961:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10346,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "6996:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10357,
                                                "src": "6988:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10345,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6988:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10348,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "7024:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10357,
                                                "src": "7016:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10347,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7016:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10350,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "7056:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10357,
                                                "src": "7043:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10349,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7043:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10352,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "7086:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10357,
                                                "src": "7079:20:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 10351,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7079:6:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6951:154:63"
                                    },
                                    "returnParameters": {
                                        "id": 10356,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10355,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "7140:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10357,
                                                "src": "7132:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10354,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7132:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7131:19:63"
                                    },
                                    "scope": 10467,
                                    "src": "6930:221:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10358,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7157:766:63",
                                        "text": " @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n @param disputer address to set as the disputer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was value (the proposal was incorrect)."
                                    },
                                    "functionSelector": "76c7823f",
                                    "id": 10373,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "disputePriceFor",
                                    "nameLocation": "7937:15:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10369,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10360,
                                                "mutability": "mutable",
                                                "name": "disputer",
                                                "nameLocation": "7970:8:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10373,
                                                "src": "7962:16:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10359,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7962:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10362,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "7996:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10373,
                                                "src": "7988:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10361,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7988:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10364,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "8023:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10373,
                                                "src": "8015:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10363,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8015:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10366,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "8051:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10373,
                                                "src": "8043:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10365,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8043:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10368,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "8083:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10373,
                                                "src": "8070:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10367,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8070:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7952:150:63"
                                    },
                                    "returnParameters": {
                                        "id": 10372,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10371,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "8135:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10373,
                                                "src": "8127:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10370,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8127:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8126:19:63"
                                    },
                                    "scope": 10467,
                                    "src": "7928:218:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 10374,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8152:587:63",
                                        "text": " @notice Disputes a price value for an existing price request with an active proposal.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was valid (the proposal was incorrect)."
                                    },
                                    "functionSelector": "fba7f1e3",
                                    "id": 10387,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "disputePrice",
                                    "nameLocation": "8753:12:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10383,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10376,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "8783:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10387,
                                                "src": "8775:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10375,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8775:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10378,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "8810:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10387,
                                                "src": "8802:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10377,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8802:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10380,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "8838:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10387,
                                                "src": "8830:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10379,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8830:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10382,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "8870:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10387,
                                                "src": "8857:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10381,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8857:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8765:124:63"
                                    },
                                    "returnParameters": {
                                        "id": 10386,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10385,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "8924:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10387,
                                                "src": "8916:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10384,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8916:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8915:19:63"
                                    },
                                    "scope": 10467,
                                    "src": "8744:191:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10388,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8941:515:63",
                                        "text": " @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\n or settleable. Note: this method is not view so that this call may actually settle the price request if it\n hasn't been settled.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return resolved price."
                                    },
                                    "functionSelector": "53b59239",
                                    "id": 10399,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "settleAndGetPrice",
                                    "nameLocation": "9470:17:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10395,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10390,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "9505:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10399,
                                                "src": "9497:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10389,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9497:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10392,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "9533:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10399,
                                                "src": "9525:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10391,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9525:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10394,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "9565:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10399,
                                                "src": "9552:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10393,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9552:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9487:97:63"
                                    },
                                    "returnParameters": {
                                        "id": 10398,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10397,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10399,
                                                "src": "9611:6:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 10396,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9611:6:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9610:8:63"
                                    },
                                    "scope": 10467,
                                    "src": "9461:158:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10400,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9625:565:63",
                                        "text": " @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n the returned bonds as well as additional rewards."
                                    },
                                    "functionSelector": "5e9a79a9",
                                    "id": 10413,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "settle",
                                    "nameLocation": "10204:6:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10409,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10402,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "10228:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10413,
                                                "src": "10220:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10401,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10220:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10404,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "10255:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10413,
                                                "src": "10247:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10403,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10247:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10406,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "10283:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10413,
                                                "src": "10275:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10405,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10275:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10408,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "10315:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10413,
                                                "src": "10302:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10407,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10302:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10210:124:63"
                                    },
                                    "returnParameters": {
                                        "id": 10412,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10411,
                                                "mutability": "mutable",
                                                "name": "payout",
                                                "nameLocation": "10369:6:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10413,
                                                "src": "10361:14:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10410,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10361:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10360:16:63"
                                    },
                                    "scope": 10467,
                                    "src": "10195:182:63",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10414,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10383:429:63",
                                        "text": " @notice Gets the current data structure containing all information about a price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return the Request data structure."
                                    },
                                    "functionSelector": "a9904f9b",
                                    "id": 10428,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getRequest",
                                    "nameLocation": "10826:10:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10423,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10416,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "10854:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10428,
                                                "src": "10846:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10415,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10846:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10418,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "10881:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10428,
                                                "src": "10873:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10417,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10873:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10420,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "10909:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10428,
                                                "src": "10901:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10419,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10901:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10422,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "10941:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10428,
                                                "src": "10928:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10421,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10928:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10836:124:63"
                                    },
                                    "returnParameters": {
                                        "id": 10427,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10426,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10428,
                                                "src": "10990:14:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$10267_memory_ptr",
                                                    "typeString": "struct OptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 10425,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10424,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10267,
                                                        "src": "10990:7:63"
                                                    },
                                                    "referencedDeclaration": 10267,
                                                    "src": "10990:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$10267_storage_ptr",
                                                        "typeString": "struct OptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10989:16:63"
                                    },
                                    "scope": 10467,
                                    "src": "10817:189:63",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 10429,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11012:379:63",
                                        "text": " @notice Returns the state of a price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return the State enum value."
                                    },
                                    "functionSelector": "ba4b930c",
                                    "id": 10443,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getState",
                                    "nameLocation": "11405:8:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10438,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10431,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "11431:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10443,
                                                "src": "11423:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10430,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11423:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10433,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "11458:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10443,
                                                "src": "11450:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10432,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11450:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10435,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "11486:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10443,
                                                "src": "11478:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10434,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11478:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10437,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "11518:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10443,
                                                "src": "11505:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10436,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11505:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11413:124:63"
                                    },
                                    "returnParameters": {
                                        "id": 10442,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10441,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10443,
                                                "src": "11567:5:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_State_$10241",
                                                    "typeString": "enum OptimisticOracleInterface.State"
                                                },
                                                "typeName": {
                                                    "id": 10440,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10439,
                                                        "name": "State",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10241,
                                                        "src": "11567:5:63"
                                                    },
                                                    "referencedDeclaration": 10241,
                                                    "src": "11567:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_State_$10241",
                                                        "typeString": "enum OptimisticOracleInterface.State"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11566:7:63"
                                    },
                                    "scope": 10467,
                                    "src": "11396:178:63",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 10444,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11580:471:63",
                                        "text": " @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return true if price has resolved or settled, false otherwise."
                                    },
                                    "functionSelector": "bc58ccaa",
                                    "id": 10457,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "hasPrice",
                                    "nameLocation": "12065:8:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10453,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10446,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "12091:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10457,
                                                "src": "12083:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10445,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12083:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10448,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "12118:10:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10457,
                                                "src": "12110:18:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10447,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12110:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10450,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "12146:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10457,
                                                "src": "12138:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10449,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12138:7:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10452,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "12178:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10457,
                                                "src": "12165:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10451,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12165:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12073:124:63"
                                    },
                                    "returnParameters": {
                                        "id": 10456,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10455,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10457,
                                                "src": "12227:4:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 10454,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12227:4:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12226:6:63"
                                    },
                                    "scope": 10467,
                                    "src": "12056:177:63",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "functionSelector": "af5d2f39",
                                    "id": 10466,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "stampAncillaryData",
                                    "nameLocation": "12248:18:63",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10462,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10459,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "12280:13:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10466,
                                                "src": "12267:26:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10458,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12267:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10461,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "12303:9:63",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10466,
                                                "src": "12295:17:63",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10460,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12295:7:63",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12266:47:63"
                                    },
                                    "returnParameters": {
                                        "id": 10465,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10464,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10466,
                                                "src": "12375:12:63",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10463,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12375:5:63",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12374:14:63"
                                    },
                                    "scope": 10467,
                                    "src": "12239:150:63",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 10468,
                            "src": "301:12090:63",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:12350:63"
                },
                "id": 63
            },
            "contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol",
                    "exportedSymbols": {
                        "IERC20": [
                            1406
                        ],
                        "OptimisticOracleInterface": [
                            10467
                        ],
                        "SkinnyOptimisticOracleInterface": [
                            10686
                        ]
                    },
                    "id": 10687,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 10469,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:64"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 10470,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 10687,
                            "sourceUnit": 1407,
                            "src": "67:56:64",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/oracle/interfaces/OptimisticOracleInterface.sol",
                            "file": "../interfaces/OptimisticOracleInterface.sol",
                            "id": 10471,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 10687,
                            "sourceUnit": 10468,
                            "src": "124:53:64",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "SkinnyOptimisticOracleInterface",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 10472,
                                "nodeType": "StructuredDocumentation",
                                "src": "179:1208:64",
                                "text": " @title Interface for the gas-cost-reduced version of the OptimisticOracle.\n @notice Differences from normal OptimisticOracle:\n - refundOnDispute: flag is removed, by default there are no refunds on disputes.\n - customizing request parameters: In the OptimisticOracle, parameters like `bond` and `customLiveness` can be reset\n   after a request is already made via `requestPrice`. In the SkinnyOptimisticOracle, these parameters can only be\n   set in `requestPrice`, which has an expanded input set.\n - settleAndGetPrice: Replaced by `settle`, which can only be called once per settleable request. The resolved price\n   can be fetched via the `Settle` event or the return value of `settle`.\n - general changes to interface: Functions that interact with existing requests all require the parameters of the\n   request to modify to be passed as input. These parameters must match with the existing request parameters or the\n   function will revert. This change reflects the internal refactor to store hashed request parameters instead of the\n   full request struct.\n @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface."
                            },
                            "fullyImplemented": false,
                            "id": 10686,
                            "linearizedBaseContracts": [
                                10686
                            ],
                            "name": "SkinnyOptimisticOracleInterface",
                            "nameLocation": "1406:31:64",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "canonicalName": "SkinnyOptimisticOracleInterface.Request",
                                    "id": 10496,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 10474,
                                            "mutability": "mutable",
                                            "name": "proposer",
                                            "nameLocation": "1639:8:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "1631:16:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 10473,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1631:7:64",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10476,
                                            "mutability": "mutable",
                                            "name": "disputer",
                                            "nameLocation": "1693:8:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "1685:16:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 10475,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1685:7:64",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10479,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "nameLocation": "1746:8:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "1739:15:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$1406",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 10478,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 10477,
                                                    "name": "IERC20",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 1406,
                                                    "src": "1739:6:64"
                                                },
                                                "referencedDeclaration": 1406,
                                                "src": "1739:6:64",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10481,
                                            "mutability": "mutable",
                                            "name": "settled",
                                            "nameLocation": "1814:7:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "1809:12:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 10480,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1809:4:64",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10483,
                                            "mutability": "mutable",
                                            "name": "proposedPrice",
                                            "nameLocation": "1873:13:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "1866:20:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 10482,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1866:6:64",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10485,
                                            "mutability": "mutable",
                                            "name": "resolvedPrice",
                                            "nameLocation": "1941:13:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "1934:20:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 10484,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1934:6:64",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10487,
                                            "mutability": "mutable",
                                            "name": "expirationTime",
                                            "nameLocation": "2019:14:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "2011:22:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10486,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2011:7:64",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10489,
                                            "mutability": "mutable",
                                            "name": "reward",
                                            "nameLocation": "2112:6:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "2104:14:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10488,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2104:7:64",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10491,
                                            "mutability": "mutable",
                                            "name": "finalFee",
                                            "nameLocation": "2200:8:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "2192:16:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10490,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2192:7:64",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10493,
                                            "mutability": "mutable",
                                            "name": "bond",
                                            "nameLocation": "2284:4:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "2276:12:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10492,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2276:7:64",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 10495,
                                            "mutability": "mutable",
                                            "name": "customLiveness",
                                            "nameLocation": "2379:14:64",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 10496,
                                            "src": "2371:22:64",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 10494,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2371:7:64",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "Request",
                                    "nameLocation": "1613:7:64",
                                    "nodeType": "StructDefinition",
                                    "scope": 10686,
                                    "src": "1606:841:64",
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "c371dda7",
                                    "id": 10499,
                                    "mutability": "constant",
                                    "name": "ancillaryBytesLimit",
                                    "nameLocation": "2782:19:64",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 10686,
                                    "src": "2758:50:64",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 10497,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2758:7:64",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "38313932",
                                        "id": 10498,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2804:4:64",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_8192_by_1",
                                            "typeString": "int_const 8192"
                                        },
                                        "value": "8192"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 10500,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2815:952:64",
                                        "text": " @notice Requests a new price.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data representing additional args being passed with the price request.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n               which could make sense if the contract requests and proposes the value in the same call or\n               provides its own reward system.\n @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\n @param customLiveness custom proposal liveness to set for request.\n @return totalBond default bond + final fee that the proposer and disputer will be required to pay."
                                    },
                                    "functionSelector": "d6228407",
                                    "id": 10520,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "requestPrice",
                                    "nameLocation": "3781:12:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10516,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10502,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "3811:10:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10520,
                                                "src": "3803:18:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10501,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3803:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10504,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "3838:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10520,
                                                "src": "3831:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10503,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3831:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10506,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "3870:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10520,
                                                "src": "3857:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10505,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3857:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10509,
                                                "mutability": "mutable",
                                                "name": "currency",
                                                "nameLocation": "3900:8:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10520,
                                                "src": "3893:15:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 10508,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10507,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "3893:6:64"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "3893:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10511,
                                                "mutability": "mutable",
                                                "name": "reward",
                                                "nameLocation": "3926:6:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10520,
                                                "src": "3918:14:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10510,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3918:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10513,
                                                "mutability": "mutable",
                                                "name": "bond",
                                                "nameLocation": "3950:4:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10520,
                                                "src": "3942:12:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10512,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3942:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10515,
                                                "mutability": "mutable",
                                                "name": "customLiveness",
                                                "nameLocation": "3972:14:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10520,
                                                "src": "3964:22:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10514,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3964:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3793:199:64"
                                    },
                                    "returnParameters": {
                                        "id": 10519,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10518,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "4027:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10520,
                                                "src": "4019:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10517,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4019:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4018:19:64"
                                    },
                                    "scope": 10686,
                                    "src": "3772:266:64",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10521,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4044:898:64",
                                        "text": " @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n from this proposal. However, any bonds are pulled from the caller.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n propose a price for.\n @param proposer address to set as the proposer.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "b1a166b2",
                                    "id": 10541,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposePriceFor",
                                    "nameLocation": "4956:15:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10537,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10523,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "4989:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10541,
                                                "src": "4981:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10522,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4981:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10525,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "5016:10:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10541,
                                                "src": "5008:18:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10524,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5008:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10527,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "5043:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10541,
                                                "src": "5036:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10526,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5036:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10529,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "5075:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10541,
                                                "src": "5062:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10528,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5062:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10532,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "5113:7:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10541,
                                                "src": "5098:22:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$10496_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 10531,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10530,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10496,
                                                        "src": "5098:7:64"
                                                    },
                                                    "referencedDeclaration": 10496,
                                                    "src": "5098:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$10496_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10534,
                                                "mutability": "mutable",
                                                "name": "proposer",
                                                "nameLocation": "5138:8:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10541,
                                                "src": "5130:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10533,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5130:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10536,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "5163:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10541,
                                                "src": "5156:20:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 10535,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5156:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4971:211:64"
                                    },
                                    "returnParameters": {
                                        "id": 10540,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10539,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "5215:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10541,
                                                "src": "5207:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10538,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5207:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5206:19:64"
                                    },
                                    "scope": 10686,
                                    "src": "4947:279:64",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 10542,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5232:717:64",
                                        "text": " @notice Proposes a price value where caller is the proposer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n propose a price for.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "93c44ef7",
                                    "id": 10560,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposePrice",
                                    "nameLocation": "5963:12:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10556,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10544,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "5993:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10560,
                                                "src": "5985:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10543,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5985:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10546,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "6020:10:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10560,
                                                "src": "6012:18:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10545,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6012:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10548,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "6047:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10560,
                                                "src": "6040:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10547,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6040:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10550,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "6079:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10560,
                                                "src": "6066:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10549,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6066:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10553,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "6117:7:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10560,
                                                "src": "6102:22:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$10496_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 10552,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10551,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10496,
                                                        "src": "6102:7:64"
                                                    },
                                                    "referencedDeclaration": 10496,
                                                    "src": "6102:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$10496_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10555,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "6141:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10560,
                                                "src": "6134:20:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 10554,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6134:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5975:185:64"
                                    },
                                    "returnParameters": {
                                        "id": 10559,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10558,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "6195:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10560,
                                                "src": "6187:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10557,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6187:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6186:19:64"
                                    },
                                    "scope": 10686,
                                    "src": "5954:252:64",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10561,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6212:1498:64",
                                        "text": " @notice Combines logic of requestPrice and proposePrice while taking advantage of gas savings from not having to\n overwrite Request params that a normal requestPrice() => proposePrice() flow would entail. Note: The proposer\n will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\n @dev The caller is the requester, but the proposer can be customized.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n               which could make sense if the contract requests and proposes the value in the same call or\n               provides its own reward system.\n @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\n @param customLiveness custom proposal liveness to set for request.\n @param proposer address to set as the proposer.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "af355d1e",
                                    "id": 10585,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "requestAndProposePriceFor",
                                    "nameLocation": "7724:25:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10581,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10563,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "7767:10:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "7759:18:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10562,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7759:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10565,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "7794:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "7787:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10564,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7787:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10567,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "7826:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "7813:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10566,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7813:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10570,
                                                "mutability": "mutable",
                                                "name": "currency",
                                                "nameLocation": "7856:8:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "7849:15:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$1406",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 10569,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10568,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1406,
                                                        "src": "7849:6:64"
                                                    },
                                                    "referencedDeclaration": 1406,
                                                    "src": "7849:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$1406",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10572,
                                                "mutability": "mutable",
                                                "name": "reward",
                                                "nameLocation": "7882:6:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "7874:14:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10571,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7874:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10574,
                                                "mutability": "mutable",
                                                "name": "bond",
                                                "nameLocation": "7906:4:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "7898:12:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10573,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7898:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10576,
                                                "mutability": "mutable",
                                                "name": "customLiveness",
                                                "nameLocation": "7928:14:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "7920:22:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10575,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7920:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10578,
                                                "mutability": "mutable",
                                                "name": "proposer",
                                                "nameLocation": "7960:8:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "7952:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10577,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7952:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10580,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "7985:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "7978:20:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 10579,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7978:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7749:255:64"
                                    },
                                    "returnParameters": {
                                        "id": 10584,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10583,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "8039:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10585,
                                                "src": "8031:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10582,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8031:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8030:19:64"
                                    },
                                    "scope": 10686,
                                    "src": "7715:335:64",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10586,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8056:888:64",
                                        "text": " @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n dispute.\n @param disputer address to set as the disputer.\n @param requester sender of the initial price request.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was valid (the proposal was incorrect)."
                                    },
                                    "functionSelector": "9ce320c8",
                                    "id": 10604,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "disputePriceFor",
                                    "nameLocation": "8958:15:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10600,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10588,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "8991:10:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10604,
                                                "src": "8983:18:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10587,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8983:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10590,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "9018:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10604,
                                                "src": "9011:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10589,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9011:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10592,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "9050:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10604,
                                                "src": "9037:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10591,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9037:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10595,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "9088:7:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10604,
                                                "src": "9073:22:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$10496_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 10594,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10593,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10496,
                                                        "src": "9073:7:64"
                                                    },
                                                    "referencedDeclaration": 10496,
                                                    "src": "9073:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$10496_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10597,
                                                "mutability": "mutable",
                                                "name": "disputer",
                                                "nameLocation": "9113:8:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10604,
                                                "src": "9105:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10596,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9105:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10599,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "9139:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10604,
                                                "src": "9131:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10598,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9131:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8973:181:64"
                                    },
                                    "returnParameters": {
                                        "id": 10603,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10602,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "9187:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10604,
                                                "src": "9179:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10601,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9179:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9178:19:64"
                                    },
                                    "scope": 10686,
                                    "src": "8949:249:64",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 10605,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9204:708:64",
                                        "text": " @notice Disputes a price request with an active proposal where caller is the disputer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n dispute.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was valid (the proposal was incorrect)."
                                    },
                                    "functionSelector": "3a31577e",
                                    "id": 10621,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "disputePrice",
                                    "nameLocation": "9926:12:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10617,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10607,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "9956:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10621,
                                                "src": "9948:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10606,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9948:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10609,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "9983:10:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10621,
                                                "src": "9975:18:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10608,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9975:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10611,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "10010:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10621,
                                                "src": "10003:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10610,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10003:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10613,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "10042:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10621,
                                                "src": "10029:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10612,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10029:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10616,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "10080:7:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10621,
                                                "src": "10065:22:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$10496_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 10615,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10614,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10496,
                                                        "src": "10065:7:64"
                                                    },
                                                    "referencedDeclaration": 10496,
                                                    "src": "10065:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$10496_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9938:155:64"
                                    },
                                    "returnParameters": {
                                        "id": 10620,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10619,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "10128:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10621,
                                                "src": "10120:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10618,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10120:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10119:19:64"
                                    },
                                    "scope": 10686,
                                    "src": "9917:222:64",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10622,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10145:754:64",
                                        "text": " @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n settle.\n @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n the returned bonds as well as additional rewards.\n @return resolvedPrice the price that the request settled to."
                                    },
                                    "functionSelector": "b730539f",
                                    "id": 10640,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "settle",
                                    "nameLocation": "10913:6:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10634,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10624,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "10937:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10640,
                                                "src": "10929:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10623,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10929:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10626,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "10964:10:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10640,
                                                "src": "10956:18:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10625,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10956:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10628,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "10991:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10640,
                                                "src": "10984:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10627,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10984:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10630,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "11023:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10640,
                                                "src": "11010:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10629,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11010:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10633,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "11061:7:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10640,
                                                "src": "11046:22:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$10496_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 10632,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10631,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10496,
                                                        "src": "11046:7:64"
                                                    },
                                                    "referencedDeclaration": 10496,
                                                    "src": "11046:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$10496_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10919:155:64"
                                    },
                                    "returnParameters": {
                                        "id": 10639,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10636,
                                                "mutability": "mutable",
                                                "name": "payout",
                                                "nameLocation": "11109:6:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10640,
                                                "src": "11101:14:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10635,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11101:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10638,
                                                "mutability": "mutable",
                                                "name": "resolvedPrice",
                                                "nameLocation": "11124:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10640,
                                                "src": "11117:20:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 10637,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11117:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11100:38:64"
                                    },
                                    "scope": 10686,
                                    "src": "10904:235:64",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10641,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11145:462:64",
                                        "text": " @notice Computes the current state of a price request. See the State enum for more details.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters.\n @return the State."
                                    },
                                    "functionSelector": "51205554",
                                    "id": 10658,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getState",
                                    "nameLocation": "11621:8:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10653,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10643,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "11647:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10658,
                                                "src": "11639:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10642,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11639:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10645,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "11674:10:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10658,
                                                "src": "11666:18:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10644,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11666:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10647,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "11701:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10658,
                                                "src": "11694:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10646,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11694:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10649,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "11733:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10658,
                                                "src": "11720:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10648,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11720:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10652,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "11771:7:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10658,
                                                "src": "11756:22:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$10496_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 10651,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10650,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10496,
                                                        "src": "11756:7:64"
                                                    },
                                                    "referencedDeclaration": 10496,
                                                    "src": "11756:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$10496_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11629:155:64"
                                    },
                                    "returnParameters": {
                                        "id": 10657,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10656,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10658,
                                                "src": "11811:31:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_State_$10241",
                                                    "typeString": "enum OptimisticOracleInterface.State"
                                                },
                                                "typeName": {
                                                    "id": 10655,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10654,
                                                        "name": "OptimisticOracleInterface.State",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10241,
                                                        "src": "11811:31:64"
                                                    },
                                                    "referencedDeclaration": 10241,
                                                    "src": "11811:31:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_State_$10241",
                                                        "typeString": "enum OptimisticOracleInterface.State"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11810:33:64"
                                    },
                                    "scope": 10686,
                                    "src": "11612:232:64",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10659,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11850:737:64",
                                        "text": " @notice Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters. The hash of these parameters must match with the request hash that is\n associated with the price request unique ID {requester, identifier, timestamp, ancillaryData}, or this method\n will revert.\n @return boolean indicating true if price exists and false if not."
                                    },
                                    "functionSelector": "a337e1ad",
                                    "id": 10675,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "hasPrice",
                                    "nameLocation": "12601:8:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10671,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10661,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "12627:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10675,
                                                "src": "12619:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10660,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12619:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10663,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "12654:10:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10675,
                                                "src": "12646:18:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 10662,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12646:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10665,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "12681:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10675,
                                                "src": "12674:16:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 10664,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12674:6:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10667,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "12713:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10675,
                                                "src": "12700:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10666,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12700:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10670,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "12751:7:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10675,
                                                "src": "12736:22:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$10496_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 10669,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10668,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 10496,
                                                        "src": "12736:7:64"
                                                    },
                                                    "referencedDeclaration": 10496,
                                                    "src": "12736:7:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$10496_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12609:155:64"
                                    },
                                    "returnParameters": {
                                        "id": 10674,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10673,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10675,
                                                "src": "12789:4:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 10672,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12789:4:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12788:6:64"
                                    },
                                    "scope": 10686,
                                    "src": "12592:203:64",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 10676,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "12801:305:64",
                                        "text": " @notice Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\n @param ancillaryData ancillary data of the price being requested.\n @param requester sender of the initial price request.\n @return the stamped ancillary bytes."
                                    },
                                    "functionSelector": "af5d2f39",
                                    "id": 10685,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "stampAncillaryData",
                                    "nameLocation": "13120:18:64",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10681,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10678,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "13152:13:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10685,
                                                "src": "13139:26:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10677,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13139:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10680,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "13175:9:64",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10685,
                                                "src": "13167:17:64",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10679,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13167:7:64",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13138:47:64"
                                    },
                                    "returnParameters": {
                                        "id": 10684,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10683,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10685,
                                                "src": "13247:12:64",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 10682,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13247:5:64",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13246:14:64"
                                    },
                                    "scope": 10686,
                                    "src": "13111:150:64",
                                    "stateMutability": "pure",
                                    "virtual": true,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 10687,
                            "src": "1388:11875:64",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:13222:64"
                },
                "id": 64
            },
            "contracts/oracle/interfaces/StoreInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/interfaces/StoreInterface.sol",
                    "exportedSymbols": {
                        "FixedPoint": [
                            5376
                        ],
                        "IERC20": [
                            1406
                        ],
                        "SafeMath": [
                            2525
                        ],
                        "SignedSafeMath": [
                            2589
                        ],
                        "StoreInterface": [
                            10731
                        ]
                    },
                    "id": 10732,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 10688,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:65"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 10689,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 10732,
                            "sourceUnit": 1407,
                            "src": "67:56:65",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/FixedPoint.sol",
                            "file": "../../common/implementation/FixedPoint.sol",
                            "id": 10690,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 10732,
                            "sourceUnit": 5377,
                            "src": "124:52:65",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "StoreInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 10691,
                                "nodeType": "StructuredDocumentation",
                                "src": "178:107:65",
                                "text": " @title Interface that allows financial contracts to pay oracle fees for their use of the system."
                            },
                            "fullyImplemented": false,
                            "id": 10731,
                            "linearizedBaseContracts": [
                                10731
                            ],
                            "name": "StoreInterface",
                            "nameLocation": "296:14:65",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 10692,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "317:130:65",
                                        "text": " @notice Pays Oracle fees in ETH to the store.\n @dev To be used by contracts whose margin currency is ETH."
                                    },
                                    "functionSelector": "cd3a9b24",
                                    "id": 10695,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "payOracleFees",
                                    "nameLocation": "461:13:65",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10693,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "474:2:65"
                                    },
                                    "returnParameters": {
                                        "id": 10694,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "493:0:65"
                                    },
                                    "scope": 10731,
                                    "src": "452:42:65",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10696,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "500:351:65",
                                        "text": " @notice Pays oracle fees in the margin currency, erc20Address, to the store.\n @dev To be used if the margin currency is an ERC20 token rather than ETH.\n @param erc20Address address of the ERC20 token used to pay the fee.\n @param amount number of tokens to transfer. An approval for at least this amount must exist."
                                    },
                                    "functionSelector": "8659d232",
                                    "id": 10704,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "payOracleFeesErc20",
                                    "nameLocation": "865:18:65",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10702,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10698,
                                                "mutability": "mutable",
                                                "name": "erc20Address",
                                                "nameLocation": "892:12:65",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10704,
                                                "src": "884:20:65",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10697,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "884:7:65",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10701,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "935:6:65",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10704,
                                                "src": "906:35:65",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_calldata_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 10700,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10699,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "906:19:65"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "906:19:65",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "883:59:65"
                                    },
                                    "returnParameters": {
                                        "id": 10703,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "951:0:65"
                                    },
                                    "scope": 10731,
                                    "src": "856:96:65",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10705,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "958:597:65",
                                        "text": " @notice Computes the regular oracle fees that a contract should pay for a period.\n @param startTime defines the beginning time from which the fee is paid.\n @param endTime end time until which the fee is paid.\n @param pfc \"profit from corruption\", or the maximum amount of margin currency that a\n token sponsor could extract from the contract through corrupting the price feed in their favor.\n @return regularFee amount owed for the duration from start to end time for the given pfc.\n @return latePenalty for paying the fee after the deadline."
                                    },
                                    "functionSelector": "74201feb",
                                    "id": 10721,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "computeRegularFee",
                                    "nameLocation": "1569:17:65",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10713,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10707,
                                                "mutability": "mutable",
                                                "name": "startTime",
                                                "nameLocation": "1604:9:65",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10721,
                                                "src": "1596:17:65",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10706,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1596:7:65",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10709,
                                                "mutability": "mutable",
                                                "name": "endTime",
                                                "nameLocation": "1631:7:65",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10721,
                                                "src": "1623:15:65",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 10708,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1623:7:65",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10712,
                                                "mutability": "mutable",
                                                "name": "pfc",
                                                "nameLocation": "1677:3:65",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10721,
                                                "src": "1648:32:65",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_calldata_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 10711,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10710,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "1648:19:65"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "1648:19:65",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1586:100:65"
                                    },
                                    "returnParameters": {
                                        "id": 10720,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10716,
                                                "mutability": "mutable",
                                                "name": "regularFee",
                                                "nameLocation": "1737:10:65",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10721,
                                                "src": "1710:37:65",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 10715,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10714,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "1710:19:65"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "1710:19:65",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 10719,
                                                "mutability": "mutable",
                                                "name": "latePenalty",
                                                "nameLocation": "1776:11:65",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10721,
                                                "src": "1749:38:65",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 10718,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10717,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "1749:19:65"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "1749:19:65",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1709:79:65"
                                    },
                                    "scope": 10731,
                                    "src": "1560:229:65",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 10722,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1795:191:65",
                                        "text": " @notice Computes the final oracle fees that a contract should pay at settlement.\n @param currency token used to pay the final fee.\n @return finalFee amount due."
                                    },
                                    "functionSelector": "5b97aadd",
                                    "id": 10730,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "computeFinalFee",
                                    "nameLocation": "2000:15:65",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 10725,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10724,
                                                "mutability": "mutable",
                                                "name": "currency",
                                                "nameLocation": "2024:8:65",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10730,
                                                "src": "2016:16:65",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 10723,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2016:7:65",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2015:18:65"
                                    },
                                    "returnParameters": {
                                        "id": 10729,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 10728,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 10730,
                                                "src": "2057:26:65",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$3762_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 10727,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 10726,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3762,
                                                        "src": "2057:19:65"
                                                    },
                                                    "referencedDeclaration": 3762,
                                                    "src": "2057:19:65",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$3762_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2056:28:65"
                                    },
                                    "scope": 10731,
                                    "src": "1991:94:65",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 10732,
                            "src": "286:1801:65",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:2046:65"
                },
                "id": 65
            }
        }
    }
}
